docs(identifier): record repo-manager cutover pilot
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
This commit is contained in:
parent
4b5e48fd69
commit
f8b914a52a
2 changed files with 118 additions and 0 deletions
97
docs/evidence/RMGR-WP-0005-repo-manager-pilot-2026-08-22.md
Normal file
97
docs/evidence/RMGR-WP-0005-repo-manager-pilot-2026-08-22.md
Normal file
|
|
@ -0,0 +1,97 @@
|
||||||
|
# RMGR-WP-0005 Repo Manager pilot evidence
|
||||||
|
|
||||||
|
**Observed at:** `2026-08-22T07:59:49Z`
|
||||||
|
**Fleet namespace:** `helixforge`
|
||||||
|
**Scope:** `repo-manager` / `RMGR-WP-0005` only
|
||||||
|
|
||||||
|
## Outcome
|
||||||
|
|
||||||
|
The first repository cutover completed without rollback. The workstation
|
||||||
|
projection was migrated in place from minted UUIDs to deterministic UUIDv5
|
||||||
|
identifiers. The production registrar had no Repo Manager projection, so it was
|
||||||
|
upgraded and rebuilt from the same authoritative file identifiers. Both now
|
||||||
|
resolve `RMGR-WP-0005` as
|
||||||
|
`6dcf854e-9229-569d-90f0-2d9df235a61d`.
|
||||||
|
|
||||||
|
The sealed fleet plan remains unchanged and no other repository was migrated.
|
||||||
|
|
||||||
|
## Recovery points
|
||||||
|
|
||||||
|
| Projection | Backup | SHA-256 | Size |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| Workstation | `/tmp/state-hub-rmgr-wp-0005-pilot-preapply.dump` | `8c5a4ef4cddef2d3a1af0303eeccbb6206613fa1a5fe932364262b3623f77950` | 4.4 MiB |
|
||||||
|
| Production registrar | `/tmp/state-hub-registrar-rmgr-wp-0005-preapply.dump` | `01753744bc844b154900ead916f122946c5414e77f888c3e18016cae6d3d8929` | 4.6 MiB |
|
||||||
|
|
||||||
|
Both are PostgreSQL custom-format archives with readable restore catalogs.
|
||||||
|
The production deployment can also return to Helm revision 9 / image
|
||||||
|
`main-d8808bf`. Recovery must stop writes first and restore into an isolated or
|
||||||
|
replacement database before endpoint cutover; no destructive in-place restore
|
||||||
|
was attempted.
|
||||||
|
|
||||||
|
## Workstation projection migration
|
||||||
|
|
||||||
|
- Alembic advanced to `b8d4f0a2c6e1`; 20/20 foreign keys into workplan/task
|
||||||
|
identities use `ON UPDATE CASCADE`.
|
||||||
|
- The repository-atomic database executor applied six replacements and no
|
||||||
|
assignments. Six durable aliases have status `applied`.
|
||||||
|
- All old rows are absent and all new rows are present.
|
||||||
|
- Cascades preserved 12 task-to-workplan links, 12 workplan progress links, one
|
||||||
|
decision link, and three task progress links.
|
||||||
|
- The guarded file executor applied the same six replacements from sealed plan
|
||||||
|
`5a2e0d1d4e6e121780a0e66a83e07a718f3050e8f1c6b94328b86b92de290a0c`.
|
||||||
|
- File migration commit: `5de754a`; final consistency commit: `40ad9e9`.
|
||||||
|
- The rebuilt local Repo Manager cache is fresh with 73 records.
|
||||||
|
|
||||||
|
## Production registrar deployment and rebuild
|
||||||
|
|
||||||
|
- Helm dry-run selected `main-697dd49` and rendered no host path, operator-home,
|
||||||
|
SSH, or sweep environment entries.
|
||||||
|
- Helm revision 10 deployed atomically; the live release reports
|
||||||
|
`sweep.enabled: false`, no volumes or mounts, and `/state/health` returns 200
|
||||||
|
with a connected database.
|
||||||
|
- Alembic advanced from `f0a1b2c3d4e5` to `b8d4f0a2c6e1`; 20/20 relevant
|
||||||
|
foreign keys cascade updates and the alias table exists.
|
||||||
|
- The logical `repo-manager` repository was absent and was registered as
|
||||||
|
`a9d105c6-10fa-4cf9-8bc1-e248476698d3` under topic
|
||||||
|
`cee7bedf-2b48-46ef-8601-006474f2ad7a`.
|
||||||
|
- Governed projection repair created deterministic `RMGR-WP-0005` and 12 tasks.
|
||||||
|
The 12 file task UUIDs and 12 production task UUIDs are byte-for-byte equal.
|
||||||
|
- The new workplan lookup returns 200; old minted UUID
|
||||||
|
`7ddb5421-d960-4a3c-94b1-40b6c96abfab` returns 404.
|
||||||
|
- A second read-only consistency pass reports no issue for `RMGR-WP-0005`.
|
||||||
|
Eight legacy/random-ID Repo Manager workplans remain explicit non-fixable
|
||||||
|
stale references and were not ingested.
|
||||||
|
- Production aliases remain empty, as expected for rebuilding an absent
|
||||||
|
projection rather than rewriting an existing primary key.
|
||||||
|
|
||||||
|
The first classified repository-create request returned 500 because the
|
||||||
|
contained image does not package `repo-classification.allowed.yaml` and has no
|
||||||
|
Custodian host mount. No row was created. The minimal logical record then
|
||||||
|
created successfully. Packaging classification canon is follow-up work; host
|
||||||
|
mount containment was not weakened.
|
||||||
|
|
||||||
|
The scoped registrar child returned the broader consistency exit code 1 because
|
||||||
|
of the eight intentionally untouched legacy references. It nevertheless created
|
||||||
|
and returned the exact target UUID and tasks. Repo Manager commit `e656f7f`
|
||||||
|
adds `--repair-workplan` and verifies that exact projection before accepting this
|
||||||
|
bounded residual status. In the managed Codex sandbox the child could not create
|
||||||
|
`.git/index.lock` for its generated brief; the complete local projection restored
|
||||||
|
the brief and pushed consistency commit `4b5e48f`. No authoritative identifier
|
||||||
|
file changed during registrar rebuild.
|
||||||
|
|
||||||
|
## Published implementation
|
||||||
|
|
||||||
|
- State Hub schema/executor: `cb1b028`
|
||||||
|
- State Hub deterministic rebuild API/consistency: `697dd49`
|
||||||
|
- State Hub declared production state and pilot record: `52a7d6b`
|
||||||
|
- Repo Manager sealed plan: `e52ce3e`
|
||||||
|
- Repo Manager file migration: `5de754a`
|
||||||
|
- Repo Manager projection-repair wrapper: `e656f7f`
|
||||||
|
|
||||||
|
## Gate after the pilot
|
||||||
|
|
||||||
|
This evidence authorizes no fleet-wide mutation. Before a wider cutover, select
|
||||||
|
the next repository batch, refresh preflight/source fingerprints, retain a
|
||||||
|
per-database restore point, and preserve the same database-first/file-second
|
||||||
|
rollback boundary. The scoped credential/sweep replacement in
|
||||||
|
`RMGR-WP-0005-T12` remains separate and blocked; production sweeping stays off.
|
||||||
|
|
@ -403,6 +403,19 @@ plan after this implementation commit. The remaining gate is a single-repository
|
||||||
pilot that couples database apply, authoritative file rewrite, consistency
|
pilot that couples database apply, authoritative file rewrite, consistency
|
||||||
verification, and database rollback if the file phase fails.
|
verification, and database rollback if the file phase fails.
|
||||||
|
|
||||||
|
**Pilot completed (2026-08-22):** the refreshed sealed plan covered 43/43
|
||||||
|
eligible repositories, 245 mappings (212 replacements, 33 assignments), and no
|
||||||
|
collisions. The authorized `repo-manager` slice migrated six existing
|
||||||
|
workplan/task rows and file identifiers atomically. All referenced rows followed,
|
||||||
|
six aliases are durable, the local cache is fresh, and both old/new API lookups
|
||||||
|
have the expected 404/200 result. The production registrar was upgraded with
|
||||||
|
sweeping still disabled and rebuilt the formerly absent projection from the
|
||||||
|
same deterministic workplan UUID and all 12 authoritative task UUIDs. Exact
|
||||||
|
evidence, restore points, hashes, and residuals are in
|
||||||
|
`docs/evidence/RMGR-WP-0005-repo-manager-pilot-2026-08-22.md`. T04 remains in
|
||||||
|
progress: widening beyond this single repository requires a new explicit fleet
|
||||||
|
cutover decision and refreshed source fingerprints.
|
||||||
|
|
||||||
## Retire the interim rule
|
## Retire the interim rule
|
||||||
|
|
||||||
```task
|
```task
|
||||||
|
|
@ -459,6 +472,14 @@ State Hub database and verify hub-native centralization. The documented remote
|
||||||
tunnel at `127.0.0.1:18000` was not running during this pass, so no central
|
tunnel at `127.0.0.1:18000` was not running during this pass, so no central
|
||||||
comparison was inferred.
|
comparison was inferred.
|
||||||
|
|
||||||
|
**Production comparison (2026-08-22):** the registrar began with no Repo
|
||||||
|
Manager workplan projection. After the contained rebuild, `RMGR-WP-0005` and
|
||||||
|
all 12 task UUIDs exactly match the authoritative file, and a second read-only
|
||||||
|
pass reports no issue for that workplan. This proves discard-and-reconstruct for
|
||||||
|
the pilot record without identifier writeback. T07 remains in progress because
|
||||||
|
the full isolated projection rebuild and hub-native centralization proof still
|
||||||
|
cover more than this one workplan.
|
||||||
|
|
||||||
## Separate file-derived from hub-native data
|
## Separate file-derived from hub-native data
|
||||||
|
|
||||||
```task
|
```task
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue