60 lines
2.3 KiB
Markdown
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`
|