yoi/.yoi/tickets/00001KTCQN35H/item.md

60 lines
2.3 KiB
Markdown

---
title: "Migrate Ticket storage to .yoi/tickets"
state: "closed"
created_at: "2026-06-05T20:30:06Z"
updated_at: "2026-06-05T21:51:58Z"
---
## Background
The active Ticket storage should move from top-level `work-items/` to `.yoi/tickets/` so Yoi project orchestration state lives under `.yoi/` with workflows and Ticket config.
This is a project-record migration. Preserve all existing Ticket ids, thread history, artifacts, and resolutions.
## Requirements
- Move active storage:
```text
work-items/open/ -> .yoi/tickets/open/
work-items/pending/ -> .yoi/tickets/pending/
work-items/closed/ -> .yoi/tickets/closed/
```
- Use `git mv` or equivalent tracked moves so history remains inspectable.
- Update code defaults/tests/docs/workflows to refer to `.yoi/tickets` as active storage.
- Update `.yoi/ticket.config.toml` examples/defaults to `root = ".yoi/tickets"`.
- Update worktree workflow guidance if necessary: child worktrees still exclude `.yoi`; Ticket mutation remains main-workspace/orchestrator authority.
- Ensure `.yoi/tickets` is tracked project state, not ignored generated memory.
- Adjust `.gitignore` if needed so `.yoi/tickets`, `.yoi/workflow`, `.yoi/knowledge`, and `.yoi/ticket.config.toml` can be tracked while generated `.yoi/memory` remains ignored.
- Do not rewrite historical thread/artifact body references unless they are current docs/config paths. Historical mentions of `work-items/` may remain as history.
## Non-goals
- Removing `tickets.sh`; handled later.
- Changing Ticket ids/slugs/status semantics.
- External tracker migration.
- Scheduler/lease/queue automation.
## Acceptance criteria
- All active Ticket records are under `.yoi/tickets/`.
- Top-level `work-items/` no longer exists as active storage.
- `yoi ticket list/show/doctor` works against `.yoi/tickets/`.
- Ticket tools and TUI role actions use `.yoi/tickets/` through configured backend root.
- Documentation no longer tells users to use `work-items/` as active storage.
- `git status` shows intentional tracked moves, not delete/recreate loss of records.
- Validation passes:
- `yoi ticket doctor`
- transitional `./tickets.sh doctor` only if still present and intentionally updated;
- `cargo check --workspace --all-targets`;
- `cargo fmt --check`;
- `git diff --check`.
## Dependency
Prefer after:
- `yoi-ticket-cli-parity`
- `builtin-yoi-local-ticket-backend-config`