From e7f3eece3475f3013acc50a2d30a9fcab28e27a2 Mon Sep 17 00:00:00 2001 From: tegwick Date: Sat, 22 Aug 2026 16:13:50 +0200 Subject: [PATCH] docs(identifiers): record whynot cutover Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d --- ...R-WP-0005-batch-0002-cutover-2026-08-22.md | 89 +++++++++++++++++++ ...gistrar-consolidation-deterministic-ids.md | 15 ++++ 2 files changed, 104 insertions(+) create mode 100644 docs/evidence/RMGR-WP-0005-batch-0002-cutover-2026-08-22.md diff --git a/docs/evidence/RMGR-WP-0005-batch-0002-cutover-2026-08-22.md b/docs/evidence/RMGR-WP-0005-batch-0002-cutover-2026-08-22.md new file mode 100644 index 0000000..0127057 --- /dev/null +++ b/docs/evidence/RMGR-WP-0005-batch-0002-cutover-2026-08-22.md @@ -0,0 +1,89 @@ +# RMGR-WP-0005 batch 0002 cutover + +**Completed at:** `2026-08-22T14:12:19Z` + +**Scope:** `whynot-design` only + +**Decision:** `RMGR-DEC-2026-001` (`approved`) + +## Outcome + +The approved repository-atomic batch completed in both current State Hub +projections and the authoritative repository. No other identifier mapping was +applied. + +| Record | Previous UUID | Derived UUID | +| --- | --- | --- | +| `WHYNOT-WP-0003` | `41fed928-f44a-48f4-9870-120310fbf071` | `d3a6ec16-ac40-5ffb-99e7-07f997e59a4a` | + +The source plan seal was +`ac97f6e4f0b35db63a0dc1b4a439f0a39738d13c1407f18419f706d780d4eea0`. +The approved batch seal was +`4039224352c6590fdc6b41e739539f1f9c92d098b43ed6e30b3cd9a87b53da65`. +The no-drift gate was repeated after approval and passed against pinned source +HEAD `4b62cffc86496d587ac8d48a8e199624bc4a5c1f`. + +## Restore points + +Fresh PostgreSQL custom-format archives were retained before mutation and +successfully enumerated by `pg_restore --list`. + +| Projection | Archive | Bytes | SHA-256 | Archive entries | +| --- | --- | ---: | --- | ---: | +| Workstation | `/tmp/state-hub-whynot-batch-0002-workstation-preapply.dump` | 4,640,237 | `19a24b573adbe9807970dcdd0d0c17e63247a0e3135c6dd32b297648f680cc2b` | 423 | +| Production | `/tmp/state-hub-whynot-batch-0002-production-preapply.dump` | 4,799,940 | `1435ef077d664a46bf989a9daad9fab2c010ea19e3198a867690233c4a77c926` | 425 | + +The durable alias reverse executor remains available in each projection; the +restore archives are the database-level fallback. + +## Projection transaction + +The State Hub repository transaction ran first on the workstation projection +and then inside the production State Hub runtime. Both executions reported one +replacement, zero deferred assignments, direction `forward`, and the exact +source-plan seal above. + +Final direct database and API checks agree: + +| Check | Workstation | Production | +| --- | ---: | ---: | +| Previous UUID rows | 0 | 0 | +| Derived UUID rows | 1 | 1 | +| Tasks linked to derived UUID | 9 | 9 | +| Progress events linked to derived UUID | 11 | 11 | +| Decisions linked to derived UUID | 1 | 1 | +| Applied aliases for exact plan | 1 | 1 | +| Previous UUID API lookup | 404 | 404 | +| Derived UUID API lookup | 200 | 200 | + +## Authoritative file transaction + +`rmgr identifier migration-files` changed only +`workplans/WHYNOT-WP-0003-downstream-consumption.md`, replacing the one mapped +frontmatter value. The reviewed diff passed `git diff --check` and was pushed +as `whynot-design` commit +`9ffe187731bfd51869b487805ec6c937bdc653e7`. + +Two consistency passes then ran against each projection. They produced the +standard generated-brief commits `e915d4c`, `5b38e07`, `3cfee73`, and +`a427356`; the checkout is clean and synchronized at +`a4273562b131cf41f3c8afdd385ea458bda62fa0`. The generated brief carries the +derived identity and no workplan identifier was changed after the file +transaction. + +## Existing status-rule warning + +The consistency passes exposed a pre-existing disagreement unrelated to the +identifier cutover: the authoritative workplan frontmatter says `active`, all +nine tasks are done, and the projection's completion rule therefore returns +the row to `finished` on the second pass. This produces alternating C-04/C-13 +warnings but no identifier or reference drift. The UUID-only approval did not +authorize changing that status. Existing C-24 classification advisories and +C-27 cross-repository logical-id collisions also remain outside this batch. + +## Rollback posture + +Rollback was not invoked. If later required, reverse the authoritative file +transaction first, then reverse production and workstation projection +transactions through the durable aliases. Restore from the archives only after +an isolated restore rehearsal. diff --git a/workplans/RMGR-WP-0005-registrar-consolidation-deterministic-ids.md b/workplans/RMGR-WP-0005-registrar-consolidation-deterministic-ids.md index 4385167..cb464b1 100644 --- a/workplans/RMGR-WP-0005-registrar-consolidation-deterministic-ids.md +++ b/workplans/RMGR-WP-0005-registrar-consolidation-deterministic-ids.md @@ -448,6 +448,21 @@ No mutation has run; approval, revision, or rejection of that exact package is the remaining gate. Evidence: `docs/evidence/RMGR-WP-0005-batch-0002-readiness-2026-08-22.md`. +**Batch 0002 completed (2026-08-22):** `RMGR-DEC-2026-001` approved the exact +sealed `whynot-design` package. Fresh workstation and production restore points +were created and verified before both projection transactions replaced +`WHYNOT-WP-0003` with derived UUID +`d3a6ec16-ac40-5ffb-99e7-07f997e59a4a`. The authoritative one-line file +transaction was pushed in `whynot-design` commit `9ffe187`; both projections +now return old/new API lookups 404/200, retain 9 tasks, 11 progress events, and +1 decision, and carry one applied alias for the exact plan. Two consistency +passes ran against each projection. They exposed an existing active-versus-all- +tasks-done status-rule oscillation but no identifier or reference drift. Full +restore hashes, commits, checks, and the bounded warning are in +`docs/evidence/RMGR-WP-0005-batch-0002-cutover-2026-08-22.md`. T04 remains in +progress because the remaining fleet repositories require separately sealed +and approved batches. + ## Retire the interim rule ```task