7.8 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.