3.2 KiB
3.2 KiB
| id | slug | title | status | kind | priority | labels | created_at | updated_at | assignee | legacy_ticket | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 20260605-203006-yoi-local-ticket-backend-migration | yoi-local-ticket-backend-migration | Yoi-local Ticket backend migration | closed | task | P1 |
|
2026-06-05T20:30:06Z | 2026-06-05T22:13:53Z | null | null |
Background
Ticket development is now user-facing through TUI role actions, typed Ticket tools, Ticket workflows, and the Rust ticket crate. The old tickets.sh CLI and top-level work-items/ storage are no longer the right long-term authority boundary.
The desired end state is:
yoibinary owns Ticket operations.- Ticket backend is configured as a built-in Yoi local backend.
- Ticket records live under
.yoi/tickets/. tickets.shis removed.work-items/is removed after migration.
This is an umbrella for the migration. Child tickets should land in order so the repository remains operable at each step.
Target model
# .yoi/ticket.config.toml
[backend]
provider = "builtin:yoi_local"
root = ".yoi/tickets"
Storage:
.yoi/tickets/{open,pending,closed}/<id>/
item.md
thread.md
artifacts/
resolution.md # closed Tickets only
User-facing operations:
yoi ticket create
yoi ticket list
yoi ticket show
yoi ticket comment
yoi ticket review
yoi ticket status
yoi ticket close
yoi ticket doctor
Child tickets
-
yoi-ticket-cli-parity- Add
yoi ticket ...CLI parity over the Rust Ticket backend. - Keep existing storage initially.
- Add
-
builtin-yoi-local-ticket-backend-config- Add
provider = "builtin:yoi_local"backend config and default root.yoi/tickets. - Preserve compatibility with existing storage during transition.
- Add
-
migrate-ticket-storage-to-yoi-tickets- Move existing records from
work-items/to.yoi/tickets/. - Update docs/workflows/tests/defaults.
- Move existing records from
-
remove-tickets-sh- Remove
tickets.shafteryoi ticket ...and.yoi/ticketsare authoritative.
- Remove
Requirements
- Do not leave two authoritative mutation paths.
- Do not shell out from product code to
tickets.sh. - Preserve existing Ticket history and artifacts.
- Preserve
git history + Ticket filesas the durable project record. - Keep child worktrees excluding
.yoi; orchestration state remains in the main workspace. - Keep
.yoi/tickets,.yoi/workflow, and.yoi/ticket.config.tomltracked project state. - Do not mix this migration with scheduler/lease/TUI dashboard work.
Acceptance criteria
- All child tickets are closed.
yoi ticket ...is the documented direct CLI path.- Ticket tools and TUI role actions use the configured built-in backend.
- Existing records are under
.yoi/tickets/. work-items/no longer exists as active storage.tickets.shno longer exists.- Repository validation uses
yoi ticket doctorinstead of./tickets.sh doctor. - Docs explain user-facing TUI/Ticket tool workflows first and local backend details only as implementation details.
Non-goals
- External tracker integration.
- GitHub/Linear/Jira/MCP backend support.
- Scheduler/lease/queue automation.
- Stateful workflow engine.
- Changing Ticket content semantics beyond storage/config migration.