feat: generate repository rename adoption plans
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Build and Publish Multi-Context Image / build-and-push (push) Successful in 25s

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a049a4-ee9f-78e1-9d66-2cb0f9bea3e3
This commit is contained in:
tegwick 2026-08-29 13:08:02 +02:00
parent bdf3a1fdf8
commit ef0b6df3b8
7 changed files with 1294 additions and 5 deletions

View file

@ -400,7 +400,7 @@ dashboard retains the pre-existing `/docs/intakes` broken-link warning.
```task
id: STATE-WP-0085-T06
status: todo
status: done
priority: high
state_hub_task_id: "154bdbb3-d3bf-5bac-85d7-eecd88545841"
```
@ -441,6 +441,37 @@ Acceptance:
- template snapshot tests cover repositories with active work, archived
workplans, missing local paths, private forge visibility, and old aliases.
Result (2026-08-29): added `statehub repo rename generate-workplan <old>
<new>` with a pure deterministic renderer over the registered repository,
captured rename preflight, indexed workplans, and visible repository metadata.
Prefix discovery uses the repository's declared convention when present and
otherwise requires one unambiguous prefix across active and archived workplan
records; it never derives a prefix from the proposed slug. Number allocation
includes archived records, so the fixed flex-auth snapshot selects
`FLEX-WP-0019` while retaining `FLEX-WP-` task/work-record identity.
The generated ready/proposed plan carries DoR evidence and eleven ordered
tasks for baseline capture, metadata preparation, separate product/runtime
naming decisions, consumer/CI/package/deployment/credential/fabric/SBOM/docs
inventory, renewed preflight and approval, Forgejo rename, State Hub rebind,
fresh-clone registration, relationship-aware verification, rollback, soak,
residuals, and old-checkout cleanup. Live rename and destructive cleanup tasks
start in `wait`. Every captured blocker, warning, active work item, alias, and
external handoff is rendered; an ownership ledger requires exact repository
slugs and prohibits the target plan from closing another repository's work.
Tokens are omitted. Existing UUID-bearing files remain untouched, and no new
`state_hub_workstream_id` or `state_hub_task_id` is invented.
Output uses exclusive create with no overwrite/force mode; private preflight
files retain the mode-0600 input guard. Missing checkouts can render from
indexed records only with an explicit output path and remain visibly blocked
for baseline capture. Snapshot/parser/quality tests cover deterministic
flex-auth output, active work, archived numbering, missing paths, unreadable
private Forge state, old aliases, ambiguous prefixes, UUID preservation, and
overwrite refusal. Verification: 801 Python tests and the 70-page dashboard
build pass; a clean wheel installation exposes the generator command. The
dashboard retains the pre-existing `/docs/intakes` broken-link warning.
## Prove failure recovery and telemetry continuity
```task