4.2 KiB
4.2 KiB
| id | slug | title | status | kind | priority | labels | workflow_state | created_at | updated_at | assignee | legacy_ticket | queued_by | queued_at | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 20260608-103842-remove-legacy-ticket-schema-fields | remove-legacy-ticket-schema-fields | Remove legacy Ticket schema fields and intake compatibility | open | task | P1 |
|
inprogress | 2026-06-08T10:38:42Z | 2026-06-08T12:45:30Z | null | null | workspace-panel | 2026-06-08T11:21:33Z |
Background
The local Ticket records have been migrated away from legacy workflow_state: intake and legacy preflight vocabulary. Current open Tickets use explicit workflow_state: planning, and open Ticket item.md records no longer rely on needs_preflight.
Two legacy frontmatter fields/compatibility paths remain in the code/schema:
legacy_ticket: currently a required frontmatter field, but it has no behavioral effect beyond being parsed, stored, and displayed. It is usuallynulland does not validate or resolve any reference.needs_preflight: legacy compatibility metadata from the removed preflight concept. It should no longer be authored or exposed as current Ticket state.
The parser also still accepts workflow_state: intake as a compatibility alias for planning. After local migration, this compatibility should be removed rather than preserved as a permanent runtime surface.
Goal
Remove obsolete Ticket schema compatibility: delete legacy_ticket and needs_preflight from the current Ticket schema/tool/API, and reject workflow_state: intake instead of normalizing it to planning.
Requirements
- Remove
legacy_ticketfrom current Ticket frontmatter requirements.- New Tickets should not write
legacy_ticket. ticket doctorshould not requirelegacy_ticket.TicketCreate/ tool input should no longer exposelegacy_ticketunless a deliberate migration-only path is kept separately.TicketShow/ list output should not expose it as a current field.- Existing local records should be migrated to remove the field before or as part of this change.
- New Tickets should not write
- Remove
needs_preflightfrom current Ticket schema and tool/API output.- New Tickets should not write it.
- Parser should not treat it as a current known field.
TicketShow/TicketListshould not showneeds_preflightas current metadata.- Any remaining historical mentions in
thread.mdstay audit history only.
- Remove
workflow_state: intakecompatibility.TicketWorkflowState::parseor equivalent parser should rejectintake.- Missing
workflow_statecompatibility should be reconsidered; if retained temporarily, it should default toplanningonly as a bounded migration fallback, not reintroduceintakevocabulary. - Tests should cover that
intakeis invalid.
- Update tests, fixtures, prompts, docs, and Ticket examples that still include:
legacy_ticketas required frontmatter;needs_preflightas a Ticket field;workflow_state: intakeas accepted/current state.
- Update local Ticket records under
.yoi/ticketsso currentitem.mdfiles pass the stricter schema. - Keep historical
thread.mdtext intact unless a test fixture requires explicit migration; old thread mentions are audit history, not schema input.
Non-goals
- Adding typed Ticket relation metadata; that is covered by
typed-ticket-relation-metadata. - Reintroducing a generic external issue link field. If needed later, it should be designed as a typed relation/external reference feature, not as the current inert
legacy_ticketstub. - Rewriting all closed historical thread prose.
Acceptance criteria
- New Ticket frontmatter omits
legacy_ticketandneeds_preflight. ticket doctorpasses without requiringlegacy_ticket.TicketCreate,TicketShow, andTicketListno longer exposelegacy_ticketorneeds_preflightas current fields.workflow_state: intakeis rejected by parser/doctor/tests.- Existing current Ticket records are migrated to the stricter schema.
- Tests covering legacy
needs_preflight/legacy_ticketrequired frontmatter are removed or rewritten. - Focused tests,
target/debug/yoi ticket doctor,cargo fmt --check, andgit diff --checkpass.