feat: advance conformance and deterministic ID migration

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
This commit is contained in:
tegwick 2026-08-21 22:43:37 +02:00
parent 3791411591
commit ad621d6c0d
10 changed files with 513 additions and 20 deletions

View file

@ -4,7 +4,7 @@ type: workplan
title: "Repository standards conformance and governed scaffolding"
domain: infotech
repo: repo-manager
status: active
status: finished
owner: codex
topic_slug: infotech
created: "2026-08-16"
@ -86,7 +86,7 @@ anti-patterns (`INTENT.md`+`GOAL.md`, `PRJ-WP-`). Index:
```task
id: RMGR-WP-0004-T02
status: progress
status: done
priority: high
state_hub_task_id: "2c9b0cb1-f0f0-40f7-83ef-1828298338d3"
```
@ -106,11 +106,14 @@ Known first findings, both live today:
- every `prj-` repo would collide on workplan prefix `PRJ-WP-`, because the
prefix is derived from the flavor marker rather than from the project.
**Progress (2026-08-21):** `rmgr conform` reports `missing` vs
`contradictory` and flags both known findings. Remaining: call from the
consistency lane / STATE-WP-0080 guard. The earlier C-15 gate is gone:
**Result (2026-08-21):** `rmgr conform` reports `missing` vs
`contradictory` and flags both known findings. The earlier C-15 gate is gone:
`RMGR-WP-0005-T06` is complete, so this task is no longer `todo` in substance.
The compatibility call is now live as State Hub consistency check C-35
(`state-hub` commit `b9d9ffe`). It executes the Repo Manager command and
projects its findings without copying flavor rules into the retiring hub.
## Own governed scaffolding
```task
@ -151,7 +154,7 @@ Durable flavors get `INTENT.md` and an optional foundation workplan.
```task
id: RMGR-WP-0004-T04
status: wait
status: done
priority: medium
state_hub_task_id: "8cd3ba11-b16b-4910-8bf6-651a24d47b8c"
```
@ -166,6 +169,13 @@ running it on a `prj-` repo produces the standard's session order —
This matters beyond first registration: regeneration runs fleet-wide, so a
flavor-blind template silently re-breaks conformant repos.
Result (2026-08-21): current generator and fleet output were re-audited rather
than changed from the stale task premise. Templates are brief-first and contain
no `INTENT.md` assumption; the four `prj-` repositories have zero incorrect
purpose-document references. The two literal `INTENT.md` mentions explicitly
say project repositories use `GOAL.md`, which is the desired safeguard.
Repo Manager conformance is now the regeneration guard via C-35.
## Accept the handoff from state-hub
```task
@ -293,7 +303,7 @@ ADR-007 § Migration.
```task
id: RMGR-WP-0004-T09
status: progress
status: done
priority: high
state_hub_task_id: "3a6ba954-4e35-4b2d-8dff-d3db84ed832c"
```
@ -459,6 +469,14 @@ to the next free `KONT-WP-` number.
every clash is against an archived file. Assign them before either repo
allocates its next number, or they become live collisions.
Result (2026-08-21): all 11 records named by the live-collision section are now
terminal (`finished` or legacy `completed`). `rmgr identifier preflight --root
/home/worsch` sees 263 live identifiers across 113 repositories with zero
collisions, so T03's gate is cleared without rewriting frozen history. Dormant
future ownership for `WHYNOT-WP`, `OPS-WP`, and `REPO-WP` is handed off as live
residual `RMGR-IN-0002`; it must be resolved before the next allocation under
any of those prefixes.
## Confirm the canon boundary
```task
@ -482,3 +500,10 @@ Result (2026-08-21): the seam is explicit in
standards and Repo Manager implements conformance and governed mutation. The
canon ADR for this workplan links the enforcement placement; no competing
semantic standard was introduced here.
## Closure
Finished 2026-08-21. Standards modeling, conformance, governed scaffolding,
compatibility coverage, identifier uniqueness, prefix ownership, and the canon
boundary are live. Dormant prefix ownership is preserved as registered residual
`RMGR-IN-0002` rather than keeping this implementation workplan open.

View file

@ -313,8 +313,9 @@ derivation scope this task needs:
checked against the live namespace and renumbered if it clashes. Build this
check alongside derivation, not after.
Remaining prerequisite is the live-collision remediation below, tracked on
`RMGR-WP-0004-T09`. 11 files, 5 identifiers.
The live-collision remediation tracked on `RMGR-WP-0004-T09` completed
2026-08-21. All 11 affected files are terminal history, and a fresh fleet
preflight found 263 live identifiers with zero collisions.
Progress (2026-08-21): the versioned derivation function and collision guard are
implemented in Repo Manager and published as
@ -322,15 +323,18 @@ implemented in Repo Manager and published as
`a4058507-5c4a-5a00-ab06-fffa4fb46009` and exact name bytes
`<fleet-namespace>\n<canonical-id>`. `rmgr identifier derive|preflight` provides
independent reproduction and a hard live-collision refusal, including the
unarchive hazard. Activation remains correctly gated on T09's 11-file
remediation and declaration of the current N1 fleet namespace name; no existing
minted identifier was rewritten implicitly.
unarchive hazard. `rmgr identifier migration-plan` now emits the versioned,
non-mutating old-to-derived mapping needed by T04 and refuses a whole repository
when any live record is unsafe. Activation is gated only on declaration of the
current fleet namespace boundary/name: ADR-011 intentionally leaves that an
open governance question, so Repo Manager does not infer it from a hostname.
No existing minted identifier was rewritten implicitly.
## Migrate the fleet
```task
id: RMGR-WP-0005-T04
status: wait
status: progress
priority: high
state_hub_task_id: "503a23a9-ede1-4cf1-bd32-e9669b84ce58"
```
@ -346,6 +350,14 @@ value, update the database to match, and write the file.
- Repositories with unresolved identifier collisions cannot migrate until
`ADR-007` § Migration is ruled on; skip and report them rather than guessing.
**Progress (2026-08-21):** `rmgr identifier migration-plan --root ...
--namespace ... --output ...` implements the non-mutating first phase. Its
versioned JSON retains every current-to-derived UUID, labels the repository as
the atomic unit, and skips an entire affected repository on a collision or
malformed live identifier. Applying those plans remains gated on the namespace
declaration and a compatibility write path that updates file and central
projection together.
## Retire the interim rule
```task
@ -388,7 +400,7 @@ portion of the divergence is redundant and needs no merge — only a rebuild.
```task
id: RMGR-WP-0005-T08
status: wait
status: done
priority: high
state_hub_task_id: "241cf058-2f3e-4d49-8cc9-5c714be4a1cf"
```
@ -411,11 +423,22 @@ this split most of what it buffers does not need buffering, and only the
append-only stream does. Re-examine before building further on it — this likely
reduces its scope.
**Result (2026-08-21):** `config/hub-record-authority.yaml` classifies all 42
tables imported by the current State Hub model package; a regression test keeps
the inventory explicit. `docs/hub-record-authority_v1.md` defines truth source,
offline behaviour, write rule, and target owner. The audit adapted the original
binary wording: hub-native origin contains both append-only events and mutable
control records. Only `progress_events` and `token_events` enter the generic
append/replay path; mutable message, launch, domain/topic, interface, and catalog
state requires an owner-specific ordered command or stays online-only. Decisions
and intakes are file-derived under the ratified work-record standard, superseding
ADR-010's older example list.
## Disposition the orphaned hub-first records
```task
id: RMGR-WP-0005-T09
status: wait
status: progress
priority: high
state_hub_task_id: "d40cc4a8-4280-4940-ac1d-dc1049f1b678"
```
@ -442,6 +465,16 @@ Note: one of these records is already labelled `SPURIOUS bootstrap (statehub
register collision)` in `repo-manager`, independent corroboration of the
`STATE-WP-0080` defect.
**Rebaselined 2026-08-21:** the local cache now has 224 rows without a backing
filename, not 28: 217 are closed (`finished`/`archived`) provenance and seven are
live. All seven live rows have matching files across `net-kingdom`, `state-hub`,
`railiance-platform`, `railiance-enablement`, `railiance-infra`, and `ops-hub`;
there are zero confirmed live hub-first rows in this snapshot. Exact ids and
paths are captured in
`docs/evidence/RMGR-WP-0005-orphan-disposition-2026-08-21.md`. Remaining work is
to repair those seven bindings and retain/export the 217 closed rows before T07
replaces the cache.
## Assign one authoritative hub per record
```task