ticket: remove legacy ticket schema fields

This commit is contained in:
Keisuke Hirata 2026-06-08 19:56:08 +09:00
parent 07f8b3cb8a
commit c24b101ad2
No known key found for this signature in database
3 changed files with 76 additions and 0 deletions

View File

@ -0,0 +1,69 @@
---
id: '20260608-103842-remove-legacy-ticket-schema-fields'
slug: 'remove-legacy-ticket-schema-fields'
title: 'Remove legacy Ticket schema fields and intake compatibility'
status: 'open'
kind: 'task'
priority: 'P1'
labels: ['ticket', 'schema', 'migration', 'cleanup']
workflow_state: 'planning'
created_at: '2026-06-08T10:38:42Z'
updated_at: '2026-06-08T10:38:42Z'
assignee: null
legacy_ticket: null
---
## 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 usually `null` and 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_ticket` from current Ticket frontmatter requirements.
- New Tickets should not write `legacy_ticket`.
- `ticket doctor` should not require `legacy_ticket`.
- `TicketCreate` / tool input should no longer expose `legacy_ticket` unless 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.
- Remove `needs_preflight` from current Ticket schema and tool/API output.
- New Tickets should not write it.
- Parser should not treat it as a current known field.
- `TicketShow` / `TicketList` should not show `needs_preflight` as current metadata.
- Any remaining historical mentions in `thread.md` stay audit history only.
- Remove `workflow_state: intake` compatibility.
- `TicketWorkflowState::parse` or equivalent parser should reject `intake`.
- Missing `workflow_state` compatibility should be reconsidered; if retained temporarily, it should default to `planning` only as a bounded migration fallback, not reintroduce `intake` vocabulary.
- Tests should cover that `intake` is invalid.
- Update tests, fixtures, prompts, docs, and Ticket examples that still include:
- `legacy_ticket` as required frontmatter;
- `needs_preflight` as a Ticket field;
- `workflow_state: intake` as accepted/current state.
- Update local Ticket records under `.yoi/tickets` so current `item.md` files pass the stricter schema.
- Keep historical `thread.md` text 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_ticket` stub.
- Rewriting all closed historical thread prose.
## Acceptance criteria
- New Ticket frontmatter omits `legacy_ticket` and `needs_preflight`.
- `ticket doctor` passes without requiring `legacy_ticket`.
- `TicketCreate`, `TicketShow`, and `TicketList` no longer expose `legacy_ticket` or `needs_preflight` as current fields.
- `workflow_state: intake` is rejected by parser/doctor/tests.
- Existing current Ticket records are migrated to the stricter schema.
- Tests covering legacy `needs_preflight` / `legacy_ticket` required frontmatter are removed or rewritten.
- Focused tests, `target/debug/yoi ticket doctor`, `cargo fmt --check`, and `git diff --check` pass.

View File

@ -0,0 +1,7 @@
<!-- event: create author: LocalTicketBackend at: 2026-06-08T10:38:42Z -->
## 作成
LocalTicketBackend によって作成されました。
---