feat: persist repository rename identity
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a049a4-ee9f-78e1-9d66-2cb0f9bea3e3
This commit is contained in:
parent
13f7a10018
commit
8988a093f2
10 changed files with 1454 additions and 4 deletions
|
|
@ -188,7 +188,7 @@ are explicit target-workplan boundaries.
|
|||
|
||||
```task
|
||||
id: STATE-WP-0085-T02
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "c9e6c8c5-c254-5f4d-982c-c161f6ed6d29"
|
||||
```
|
||||
|
|
@ -219,6 +219,22 @@ Acceptance:
|
|||
- no migration rewrites workplan, task, progress, decision, token, or SBOM
|
||||
identities.
|
||||
|
||||
Result (2026-08-28): migration `f3c4d5e6a7b8` adds an explicitly unverified or
|
||||
verified Forge identity per managed-repository UUID, a global canonical/alias
|
||||
slug registry, and a phased rename-operation journal. Composite foreign keys
|
||||
prevent operations for unverified or mismatched repository identities; partial
|
||||
unique indexes reserve one canonical slug, one active operation per repository,
|
||||
and one active target slug. Database history guards prevent verified Forge
|
||||
identity, protected slug, and operation-assertion rewrites or deletion while
|
||||
leaving phase/evidence/error progress updateable. Existing repositories are
|
||||
backfilled only with an unverified marker and their current canonical slug;
|
||||
Forge coordinates are not guessed. Both API and direct classification
|
||||
registration create the same initial records. PostgreSQL tests prove protected
|
||||
alias conflicts, unique Forge identity, active-operation locks, a non-mutating
|
||||
`flex-auth`/Forgejo-id-42 preflight representation with all existing identities
|
||||
preserved, isolated migration upgrade/downgrade, and full-chain migration. The
|
||||
full Python suite passes (765 tests).
|
||||
|
||||
## Implement preflight, apply, resume, verify, and rollback APIs
|
||||
|
||||
```task
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue