ticket: close base32 id migration

This commit is contained in:
Keisuke Hirata 2026-06-09 22:26:03 +09:00
parent 5f6c695b80
commit 63524215f0
No known key found for this signature in database
3 changed files with 78 additions and 2 deletions

View File

@ -1,8 +1,8 @@
---
title: 'Ticket と Objective の ID を base32 timestamp 形式に統一する'
state: 'inprogress'
state: 'closed'
created_at: '2026-06-09T07:30:47Z'
updated_at: '2026-06-09T13:24:34Z'
updated_at: '2026-06-09T13:25:54Z'
assignee: null
queued_by: 'workspace-panel'
queued_at: '2026-06-09T10:31:17Z'

View File

@ -0,0 +1,30 @@
Merged and closed.
Implementation:
- Added shared `crates/project-record` helper for canonical project record IDs.
- Ticket and Objective creation now use the same fixed-width base32 Unix epoch millisecond ID allocator.
- IDs use alphabet `0123456789ABCDEFGHJKMNPQRSTVWXYZ` and width 13.
- Collision handling retries by `+1ms` path probe, bounded at 1000 attempts, with no suffix/counter/random tail.
- `created_at` / `updated_at` remain human-readable frontmatter fields; collision-adjusted ID timestamp is not silently written as `created_at`.
- Migrated current repository records: 173 Ticket directories and 1 Objective directory.
- Updated relation artifacts, orchestration-plan artifacts, Objective linked Tickets, docs/examples/tests, package metadata, and Nix cargo hash.
- Added audit mapping artifact at `.yoi/tickets/00001KTNMN02R/artifacts/id-migration-map.txt`.
Commits:
- `4203988 feat: unify project record ids`
- merge: `5f6c695 merge: unify project record ids`
Review:
- Reviewer approved with no request-change findings.
- Residual note: `id-migration-map.txt` intentionally retains old ID strings as audit evidence. It is under artifacts and does not affect schema/list/doctor behavior.
Post-merge validation:
- `cargo test -q -p project-record`
- `cargo test -q -p ticket`
- `cargo test -q -p yoi objective_cli`
- `cargo fmt --check`
- `git diff --check`
- `cargo run -q -p yoi -- ticket doctor`
- `cargo run -q -p yoi -- objective doctor`
- `cargo check --workspace`
- `nix build .#yoi --no-link`

View File

@ -229,3 +229,49 @@ Validation run by reviewer and passed:
Result: approve, merge-ready. Residual risk: migration map intentionally retains old ID strings for audit; not a blocker.
---
<!-- event: state_changed author: hare at: 2026-06-09T13:25:54Z from: inprogress to: closed reason: closed field: state -->
## State changed
Ticket を closed にしました。
---
<!-- event: close author: hare at: 2026-06-09T13:25:54Z status: closed -->
## 完了
Merged and closed.
Implementation:
- Added shared `crates/project-record` helper for canonical project record IDs.
- Ticket and Objective creation now use the same fixed-width base32 Unix epoch millisecond ID allocator.
- IDs use alphabet `0123456789ABCDEFGHJKMNPQRSTVWXYZ` and width 13.
- Collision handling retries by `+1ms` path probe, bounded at 1000 attempts, with no suffix/counter/random tail.
- `created_at` / `updated_at` remain human-readable frontmatter fields; collision-adjusted ID timestamp is not silently written as `created_at`.
- Migrated current repository records: 173 Ticket directories and 1 Objective directory.
- Updated relation artifacts, orchestration-plan artifacts, Objective linked Tickets, docs/examples/tests, package metadata, and Nix cargo hash.
- Added audit mapping artifact at `.yoi/tickets/00001KTNMN02R/artifacts/id-migration-map.txt`.
Commits:
- `4203988 feat: unify project record ids`
- merge: `5f6c695 merge: unify project record ids`
Review:
- Reviewer approved with no request-change findings.
- Residual note: `id-migration-map.txt` intentionally retains old ID strings as audit evidence. It is under artifacts and does not affect schema/list/doctor behavior.
Post-merge validation:
- `cargo test -q -p project-record`
- `cargo test -q -p ticket`
- `cargo test -q -p yoi objective_cli`
- `cargo fmt --check`
- `git diff --check`
- `cargo run -q -p yoi -- ticket doctor`
- `cargo run -q -p yoi -- objective doctor`
- `cargo check --workspace`
- `nix build .#yoi --no-link`
---