feat: converge mixed identifier projections
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 24s

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a053ff-1d6f-7fe2-ac1c-a6eb40a42a0c
This commit is contained in:
tegwick 2026-08-31 01:27:21 +02:00
parent 6f64f1aab8
commit 151fdcf397
5 changed files with 256 additions and 25 deletions

View file

@ -365,6 +365,17 @@ in the meantime.
**Task-level reset remains blocked**, now on a narrower and better-understood
problem: 35 identities, not 5974 unidentified rows.
**Mixed identifier convergence support (2026-08-31).** The fast forge path
exposed a second, separate consistency shape: one repository can contain legacy
UUID rows and already-derived UUID rows at the same time. State Hub's sealed
identifier transaction now classifies every mapping, migrates only verified
legacy sources, accepts already-derived targets only when their canonical
record identity and repository match, and records durable aliases for both.
Both-present and neither-present mappings fail the whole repository transaction.
The primary-only HTTP surface has explicit plan-hash confirmation and a reverse
operation for a failed file phase. This does not resolve the 35 duplicate
canonical task identities, so T02 remains `progress`.
## Restore a migration mechanism for central
@ -724,4 +735,4 @@ displaced files moved to 0025-0027. The source numbering was checked before
renaming; the target was not.
**Remaining, and not solvable by retirement:** 9 private repositories central
cannot clone, and 9 identifier collisions that are identity decisions.
cannot clone, and 9 identifier collisions that are identity decisions.