ticket: use base32 project record ids
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
---
|
||||
title: "Yoi-local Ticket backend migration"
|
||||
state: "closed"
|
||||
created_at: "2026-06-05T20:30:06Z"
|
||||
updated_at: "2026-06-05T22:13:53Z"
|
||||
---
|
||||
|
||||
## 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:
|
||||
|
||||
- `yoi` binary owns Ticket operations.
|
||||
- Ticket backend is configured as a built-in Yoi local backend.
|
||||
- Ticket records live under `.yoi/tickets/`.
|
||||
- `tickets.sh` is 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
|
||||
|
||||
```toml
|
||||
# .yoi/ticket.config.toml
|
||||
|
||||
[backend]
|
||||
provider = "builtin:yoi_local"
|
||||
root = ".yoi/tickets"
|
||||
```
|
||||
|
||||
Storage:
|
||||
|
||||
```text
|
||||
.yoi/tickets/{open,pending,closed}/<id>/
|
||||
item.md
|
||||
thread.md
|
||||
artifacts/
|
||||
resolution.md # closed Tickets only
|
||||
```
|
||||
|
||||
User-facing operations:
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
1. `yoi-ticket-cli-parity`
|
||||
- Add `yoi ticket ...` CLI parity over the Rust Ticket backend.
|
||||
- Keep existing storage initially.
|
||||
|
||||
2. `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.
|
||||
|
||||
3. `migrate-ticket-storage-to-yoi-tickets`
|
||||
- Move existing records from `work-items/` to `.yoi/tickets/`.
|
||||
- Update docs/workflows/tests/defaults.
|
||||
|
||||
4. `remove-tickets-sh`
|
||||
- Remove `tickets.sh` after `yoi ticket ...` and `.yoi/tickets` are authoritative.
|
||||
|
||||
## 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 files` as 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.toml` tracked 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.sh` no longer exists.
|
||||
- Repository validation uses `yoi ticket doctor` instead 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.
|
||||
@@ -0,0 +1,32 @@
|
||||
Completed the Yoi-local Ticket backend migration.
|
||||
|
||||
Child tickets completed:
|
||||
- `yoi-ticket-cli-parity`: added top-level `yoi ticket` commands for create/list/show/comment/review/status/close/doctor against the Rust Ticket backend.
|
||||
- `builtin-yoi-local-ticket-backend-config`: introduced canonical backend provider config `provider = "builtin:yoi_local"`.
|
||||
- `migrate-ticket-storage-to-yoi-tickets`: moved active Ticket records from `work-items/` to `.yoi/tickets/` and made `.yoi/tickets` the default/configured root.
|
||||
- `remove-tickets-sh`: deleted the transitional `tickets.sh` mutation path and updated active docs/instructions/tests to use `yoi ticket ...`.
|
||||
|
||||
Final authority model:
|
||||
|
||||
```toml
|
||||
[backend]
|
||||
provider = "builtin:yoi_local"
|
||||
root = ".yoi/tickets"
|
||||
```
|
||||
|
||||
- `yoi` binary + `crates/ticket` backend own active Ticket operations.
|
||||
- Active storage is `.yoi/tickets/`.
|
||||
- Repository-root `work-items/` is no longer present and is not an active mutable backend.
|
||||
- `tickets.sh` is removed.
|
||||
- Historical records may still mention old paths/commands as history, but active instructions and validation use `yoi ticket ...`.
|
||||
|
||||
Final validation points across the sequence included:
|
||||
- `cargo test -p ticket`
|
||||
- `cargo test -p yoi ticket`
|
||||
- `cargo test -p pod ticket --lib`
|
||||
- `cargo check --workspace --all-targets`
|
||||
- `cargo fmt --check`
|
||||
- `cargo build -p yoi`
|
||||
- `target/debug/yoi ticket doctor`
|
||||
- `nix build .#yoi --no-link`
|
||||
- absence checks for `tickets.sh` and repository-root `work-items/` after final cleanup.
|
||||
@@ -0,0 +1,94 @@
|
||||
<!-- event: create author: tickets.sh at: 2026-06-05T20:30:06Z -->
|
||||
|
||||
## Created
|
||||
|
||||
Created by tickets.sh create.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: hare at: 2026-06-05T20:32:09Z -->
|
||||
|
||||
## Decision
|
||||
|
||||
Decision: migrate Ticket authority to the `yoi` binary and Yoi's built-in local backend.
|
||||
|
||||
Target state:
|
||||
|
||||
- Direct CLI operations use `yoi ticket ...`.
|
||||
- Backend config uses `provider = "builtin:yoi_local"`.
|
||||
- Active Ticket storage lives under `.yoi/tickets/`.
|
||||
- `tickets.sh` is removed.
|
||||
- Top-level `work-items/` is removed as active storage.
|
||||
|
||||
Rationale:
|
||||
|
||||
- Normal users should use TUI role actions, Ticket tools, workflows, and `yoi ticket ...`, not a shell script.
|
||||
- Keeping `tickets.sh` as a live mutation path duplicates Ticket semantics and undermines the Rust backend as authority.
|
||||
- `.yoi/tickets/` aligns Ticket records with `.yoi/workflow` and `.yoi/ticket.config.toml` as tracked project orchestration state.
|
||||
- `work-items/` is legacy storage naming after the project concept was renamed to Ticket.
|
||||
|
||||
Migration should land in child tickets so the repository remains operable at each step.
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: plan author: hare at: 2026-06-05T20:32:09Z -->
|
||||
|
||||
## Plan
|
||||
|
||||
Plan:
|
||||
|
||||
1. `yoi-ticket-cli-parity`
|
||||
- Add `yoi ticket ...` operations over the Rust Ticket backend.
|
||||
|
||||
2. `builtin-yoi-local-ticket-backend-config`
|
||||
- Add canonical `provider = "builtin:yoi_local"` backend config and defaults.
|
||||
|
||||
3. `migrate-ticket-storage-to-yoi-tickets`
|
||||
- Move active Ticket records from `work-items/` to `.yoi/tickets/`.
|
||||
|
||||
4. `remove-tickets-sh`
|
||||
- Delete the shell compatibility CLI and update active docs/workflows/validation to `yoi ticket doctor`.
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: close author: hare at: 2026-06-05T22:13:53Z status: closed -->
|
||||
|
||||
## Closed
|
||||
|
||||
Completed the Yoi-local Ticket backend migration.
|
||||
|
||||
Child tickets completed:
|
||||
- `yoi-ticket-cli-parity`: added top-level `yoi ticket` commands for create/list/show/comment/review/status/close/doctor against the Rust Ticket backend.
|
||||
- `builtin-yoi-local-ticket-backend-config`: introduced canonical backend provider config `provider = "builtin:yoi_local"`.
|
||||
- `migrate-ticket-storage-to-yoi-tickets`: moved active Ticket records from `work-items/` to `.yoi/tickets/` and made `.yoi/tickets` the default/configured root.
|
||||
- `remove-tickets-sh`: deleted the transitional `tickets.sh` mutation path and updated active docs/instructions/tests to use `yoi ticket ...`.
|
||||
|
||||
Final authority model:
|
||||
|
||||
```toml
|
||||
[backend]
|
||||
provider = "builtin:yoi_local"
|
||||
root = ".yoi/tickets"
|
||||
```
|
||||
|
||||
- `yoi` binary + `crates/ticket` backend own active Ticket operations.
|
||||
- Active storage is `.yoi/tickets/`.
|
||||
- Repository-root `work-items/` is no longer present and is not an active mutable backend.
|
||||
- `tickets.sh` is removed.
|
||||
- Historical records may still mention old paths/commands as history, but active instructions and validation use `yoi ticket ...`.
|
||||
|
||||
Final validation points across the sequence included:
|
||||
- `cargo test -p ticket`
|
||||
- `cargo test -p yoi ticket`
|
||||
- `cargo test -p pod ticket --lib`
|
||||
- `cargo check --workspace --all-targets`
|
||||
- `cargo fmt --check`
|
||||
- `cargo build -p yoi`
|
||||
- `target/debug/yoi ticket doctor`
|
||||
- `nix build .#yoi --no-link`
|
||||
- absence checks for `tickets.sh` and repository-root `work-items/` after final cleanup.
|
||||
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user