16 KiB
作成
LocalTicketBackend によって作成されました。
Plan
Intake refinement
readiness は implementation_ready。既存 Ticket の目的・受け入れ条件・除外範囲は十分に具体的で、Orchestrator が実装 routing できる。
Binding decisions / invariants
legacy_ticketとneeds_preflightは current Ticket schema / tool input / tool output / CLI output / frontmatter writer / doctor requirements から削除する。通常の新規 Ticket 作成経路で再び出力してはいけない。workflow_state: intakeは互換 alias として残さず、parser / doctor / tests で invalid として扱う。workflow_state未指定時の bounded migration fallback を残す場合でも、intake語彙を復活させてはいけない。.yoi/tickets/**/item.mdの current frontmatter は stricter schema に合わせて移行する。thread.md/resolution.mdの過去本文に残る語は audit history として扱い、通常は書き換えない。legacy_ticketの代替として generic external issue link field を追加しない。関係メタデータは別 Tickettyped-ticket-relation-metadataの範囲とする。
Implementation latitude
- 実装者は parser / writer / metadata structs / tool schemas / panel view model / tests / prompts / docs のどこから整理するかを選んでよい。
- 移行専用の一時的な読み取り経路が必要な場合は、current API surface に露出しない bounded migration path に限定してよい。
- fixture や local Ticket record の更新方法は手動・補助スクリプトのどちらでもよいが、差分は schema 変更に必要な範囲へ限定する。
Escalation conditions
- 非 null の
legacy_ticket値を削除することで保持すべき current relation 情報が失われると判断した場合は、代替フィールドを silently 追加せず Orchestrator / human に戻す。 needs_preflightまたはworkflow_state: intakeをまだ実行時互換として保持すべき外部利用者が見つかった場合は、後方互換要件として戻す。- 変更が Ticket schema 以外の authority boundary / role workflow semantics に広がる場合は、別 Ticket 化または routing 判断を求める。
Validation focus
yoi ticket doctorが stricter schema の local records で通ること。TicketCreate/TicketShow/TicketList/ panel 表示にlegacy_ticketとneeds_preflightが current field として出ないこと。workflow_state: intakeを invalid とする focused test を追加または更新すること。- 既存指示どおり、実装完了時は focused tests、
cargo fmt --check、git diff --check、必要に応じてnix build .#yoiで確認すること。
Open questions: なし。
Risk flags: ticket-schema, migration, tool-api, panel-output, docs-prompts.
Intake summary
既存 Ticket を精査し、obsolete な legacy_ticket / needs_preflight と workflow_state: intake 互換の削除範囲を実装可能な契約として整理した。binding decisions は current schema/tool/API/panel/docs/prompts から legacy fields を削除し、intake alias を拒否すること。historical thread/resolution prose は audit history として通常は保持する。Open questions はなく、risk flags は ticket-schema / migration / tool-api / panel-output / docs-prompts。
State changed
Intake refinement が完了し、Orchestrator が routing できる状態になったため ready に変更する。
State changed
Ticket を workspace-panel が queued にしました。
State changed
Accepted queued implementation after reading the Ticket, intake refinement, current workspace state, and queued Ticket set. This Ticket is a lower-level Ticket schema/API cleanup and should land before implementing the queued orchestration plan tool to avoid overlapping Ticket backend/tool API churn.
Decision
Routing decision: implementation_ready
Reason:
- The Ticket has clear implementation-ready requirements from Intake: remove obsolete
legacy_ticketandneeds_preflightcurrent schema/API surfaces, rejectworkflow_state: intake, and migrate local Ticket records. - The change is broad but bounded to Ticket schema/tool/API/panel/docs/tests and local Ticket record migration.
- This should run before
ticket-orchestration-plan-tool, because the plan tool introduces a new durable Ticket-domain surface and should be implemented on top of the stricter current Ticket schema.
Evidence checked:
- Ticket body and thread, including Intake refinement and queued event.
- Open queued Ticket list:
remove-legacy-ticket-schema-fieldsandticket-orchestration-plan-toolare the current queued Tickets. - Main workspace dirty state was only Ticket-record updates/new Ticket records; those have been committed separately before implementation routing.
IntentPacket:
Intent:
- Remove obsolete Ticket schema compatibility and current API exposure for
legacy_ticket,needs_preflight, andworkflow_state: intake.
Binding decisions / invariants:
- New/current Ticket frontmatter must not write
legacy_ticketorneeds_preflight. TicketCreate,TicketShow,TicketList, panel/view-model output, and current tool/CLI surfaces must stop exposing those fields as current metadata.workflow_state: intakemust be rejected, not normalized toplanning.- Missing workflow_state may remain a bounded migration fallback to
planningif needed, but must not reintroduceintakevocabulary. - Existing local
.yoi/tickets/**/item.mdrecords must be migrated to the stricter schema; historicalthread.md/resolution.mdprose remains audit history unless a fixture requires explicit rewrite. - Do not introduce a replacement generic external issue field; typed relations are out of scope and belong to
typed-ticket-relation-metadata. - Do not change role workflow semantics or the planning/ready/queued/inprogress/done model beyond rejecting the legacy
intakealias.
Implementation latitude:
- Coder may choose whether migration is performed by a temporary script/manual rewrite, but the resulting diff should stay schema-focused.
- Coder may keep internal migration-only parsing helpers if strictly needed and not exposed as current API.
- Coder should update tests/fixtures/prompts/docs narrowly where they assert legacy fields or intake alias.
Escalate if:
- Any non-null
legacy_ticketvalue is found whose deletion would lose current relation information. - External/runtime compatibility requirements are found that still require
needs_preflightorworkflow_state: intakeacceptance. - The change requires adding typed relation metadata or broader Ticket identity redesign.
Validation:
- Focused Ticket schema/parser/writer/tool output tests.
- Focused yoi Ticket CLI/tool tests and panel/view-model tests if outputs change.
cargo fmt --check.git diff --check.cargo run -q -p yoi -- ticket doctorwith migrated local records.cargo check --workspaceand finalnix build .#yoibecause code/tool/schema/resources may change.
Implementation report
Implementation routing started.
Worktree/branch:
- Worktree:
.worktree/remove-legacy-ticket-schema-fields - Branch:
remove-legacy-ticket-schema-fields - Base/routing commit:
fdb9f50 ticket: route queued schema cleanup
Spawned sibling Coder Pod:
coder-remove-legacy-ticket-schema-fields- Scope: non-recursive read on parent workspace root plus recursive write limited to the child worktree.
The queued ticket-orchestration-plan-tool Ticket is intentionally left queued until this lower-level schema cleanup lands, to avoid overlapping Ticket backend/API and local Ticket-record migration surfaces.
Implementation report
Implementation blocked during required migration pre-check.
Coder found non-null legacy_ticket values before making code/docs/Ticket record edits. Per the routing packet, deletion of non-null legacy_ticket values must not happen silently because it may discard current relation/history information.
Summary:
- Worktree:
.worktree/remove-legacy-ticket-schema-fields - Branch:
remove-legacy-ticket-schema-fields - Code/docs/Ticket record changes: none
- Commit: none
- Validation: pre-check only
- Non-null occurrences: 32 total
- 30 closed historical Tickets with old legacy ids
- 2 open Tickets:
.yoi/tickets/open/20260608-092854-typed-ticket-relation-metadata/item.md:legacy_ticket: 20260608-010000-typed-ticket-relation-metadata.yoi/tickets/open/20260608-095529-ticket-orchestration-plan-tool/item.md:legacy_ticket: 20260608-020000-ticket-orchestration-plan-tool
Needed decision before implementation continues:
- Either authorize deleting these
legacy_ticketvalues as obsolete migration breadcrumbs, - or choose a preservation/migration policy, such as copying non-null values into bounded Ticket thread migration notes before removing the field,
- or defer this Ticket back to planning to design typed relation/external-reference handling separately.
No merge, close, or implementation edits have occurred.
Decision
Human decision received: delete legacy_ticket values even when non-null.
Policy for this Ticket:
- Treat existing non-null
legacy_ticketfrontmatter values as obsolete migration breadcrumbs rather than current relation authority. - Remove
legacy_ticketfrom all current local Ticketitem.mdfrontmatter, including closed historical Tickets and open Tickets. - Do not add a replacement generic external issue field in this Ticket.
- Continue to keep historical thread/resolution prose intact unless a test fixture requires a narrow update.
- The separate
typed-ticket-relation-metadataTicket remains the place to design durable typed relations if needed later.
This resolves the implementation block and authorizes Coder to continue the schema cleanup.
Implementation report
Implemented legacy Ticket schema field removal.
- Removed current schema/API exposure for
legacy_ticketandneeds_preflightfrom Ticket metadata, summaries, tool output, and create inputs. - Rejected
workflow_state: intakeinstead of treating it as a planning alias. - Migrated current local Ticket
item.mdfrontmatter to remove obsoletelegacy_ticket/needs_preflightentries, including non-null migration breadcrumbs. - Updated focused tests for create/list/show/tool output and panel metadata behavior.
Validation completed before this report:
cargo test -p ticket --libcargo test -p yoi ticket_clicargo test -p tui workspace_panelcargo fmt --checkgit diff --checkcargo run -q -p yoi -- ticket doctorcargo check --workspacenix build .#yoi
Implementation report
Coder implementation completed.
Commit:
934a4b58026784c64f50359c6be3681566c0dac1 ticket: remove legacy schema fields
Coder summary:
- Removed
legacy_ticketfrom current Ticket schema/metadata/summary/tool input-output/CLI show output. - Removed
needs_preflightfrom current schema/metadata/summary/panel/tool output. - Rejected
workflow_state: intakeinstead of treating it as a planning alias. - Migrated local
.yoi/tickets/**/item.mdfrontmatter to removelegacy_ticket, including non-null values as authorized. - Reported no remaining
legacy_ticket,needs_preflight, orworkflow_state: intakefrontmatter entries.
Coder validation reported all passed:
cargo test -p ticket --libcargo test -p yoi ticket_clicargo test -p tui workspace_panelcargo fmt --checkgit diff --checkcargo run -q -p yoi -- ticket doctorcargo check --workspacenix build .#yoi
Orchestrator quick checks:
- Worktree branch is clean at
934a4b5. - Grep over
.yoi/tickets/**/item.mdfound no frontmatter matches forlegacy_ticket,needs_preflight, orworkflow_state: intake; one remaining historical closed Ticket body example mentions an oldworkflow_state: intake | ready | ...state list, which should be reviewed as historical prose vs stale maintained example.
Review: approve
Review result: approve
Reviewed commit 934a4b58026784c64f50359c6be3681566c0dac1 in worktree .worktree/remove-legacy-ticket-schema-fields against the Ticket requirements.
Evidence:
crates/ticket/src/lib.rsno longer requires or modelslegacy_ticket/needs_preflightinNewTicket,TicketMeta, orTicketSummary;REQUIRED_FIELDSno longer includeslegacy_ticket;TicketWorkflowState::parse("intake")returnsNoneand frontmatter parsing reports it as invalid.crates/ticket/src/tool.rsTicketCreateParams, summary JSON, and show JSON no longer includelegacy_ticketorneeds_preflight; schema tests assert those names are absent fromTicketCreateschema and tool outputs.crates/yoi/src/ticket_cli.rscreate/list surfaces do not expose those fields, andshowfilters obsolete frontmatter keys from rendered raw frontmatter.crates/tui/src/workspace_panel.rspanel rows derive fromTicketSummarywithoutneeds_preflight; no current panel/schema code references the removed field.- Frontmatter scan over
.yoi/tickets/*/*/item.mdfound nolegacy_ticket,needs_preflight, orworkflow_state: intakein current frontmatter. Remaining broad text hits are Ticket body/thread/artifact historical or requirement prose, not current frontmatter/schema/API metadata. - Focused maintained docs/prompts/workflow search over
crates,resources,docs, and.yoi/workflowfound only negative tests/assertions for the retired names.
Validation run by reviewer:
cargo test -p ticket --libcargo test -p yoi ticket_clicargo test -p tui workspace_panelcargo run -q -p yoi -- ticket doctornix build .#yoi
All passed. No blocking findings.
State changed
Ticket closed; workflow_state を done に設定しました。
完了
Implemented and merged.
Summary:
- Removed
legacy_ticketfrom the current Ticket schema, metadata, summary, tool input/output, and CLI show/list/create surfaces. - Removed
needs_preflightfrom current schema/API/panel/tool output surfaces. - Removed legacy
workflow_state: intakecompatibility; parser/tests now rejectintakeinstead of normalizing it toplanning. - Migrated local
.yoi/tickets/**/item.mdfrontmatter to remove obsoletelegacy_ticketentries, including non-null values explicitly authorized as obsolete migration breadcrumbs. - Preserved historical thread/resolution prose as audit history where it is not current schema/API input.
Implementation:
- Coder commit:
934a4b5 ticket: remove legacy schema fields - Merge commit:
de8e973 merge: remove legacy ticket schema fields - Reviewer approved with no blocking findings.
Validation:
cargo fmt --checkgit diff --checkcargo run -q -p yoi -- ticket doctorcargo check --workspacenix build .#yoi