docs(identifiers): prepare markitect cutover batch

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
This commit is contained in:
tegwick 2026-08-22 16:21:56 +02:00
parent b6ea4d655d
commit 1250fa87f7
4 changed files with 177 additions and 0 deletions

View file

@ -0,0 +1,47 @@
# RMGR-DEC-2026-002 — Markitect identifier cutover batch
```yaml
id: RMGR-DEC-2026-002
kind: decision
title: Approve deterministic identifier batch 0003 for markitect-main
status: open
decision_type: pending
owner: Bernd Worsch
repo: repo-manager
workplan: RMGR-WP-0005
workplan_task: RMGR-WP-0005-T04
requested_dispositions:
- approved
- revised
- rejected
source_plan: docs/evidence/RMGR-WP-0005-helixforge-uuid-migration-plan-2026-08-22-v2.json
source_plan_sha256: ac97f6e4f0b35db63a0dc1b4a439f0a39738d13c1407f18419f706d780d4eea0
batch_manifest: docs/evidence/RMGR-WP-0005-batch-0003-markitect-main.json
batch_sha256: 494db8e101aeae7f8488082565dec3b4dd5c9c6ccb5f8812aaf233f813768f67
scope:
repositories: [markitect-main]
replacements: 2
assignments: 0
apply_authorized: false
approval_effect: >-
Approved authorizes one repository-atomic forward cutover of exactly the
pinned batch in both current projections and the authoritative repository
file, subject to repeated no-drift and restore-point checks. Revised or
rejected authorizes no mutation.
rollback: >-
Reverse the file transaction if written, then reverse production and
workstation projection transactions using their durable aliases.
evidence: docs/evidence/RMGR-WP-0005-batch-0003-markitect-readiness-2026-08-22.md
created: "2026-08-22"
updated: "2026-08-22"
```
## Decision requested
Approve, revise, or reject the exact batch manifest named above. Approval is
limited to `markitect-main`, `MARKITECT-WP-0002`, and
`MARKITECT-WP-0002-T01`; it does not authorize any later or broader batch.
The manifest remains fail-closed: any Git, source-fingerprint, projection, or
plan-seal drift before execution voids the approval and requires a new batch
hash.

View file

@ -0,0 +1,47 @@
{
"schema": "repo-manager.identifier-migration-batch.v1",
"ok": true,
"ready_for_approval": true,
"apply_authorized": false,
"approval_required": true,
"namespace": "helixforge",
"source_plan_sha256": "ac97f6e4f0b35db63a0dc1b4a439f0a39738d13c1407f18419f706d780d4eea0",
"batch_policy": "repository-atomic, sequential, stop on first failure",
"rollback_order": "reverse files if written, then reverse central projection",
"generated_at": "2026-08-22T14:20:25.402175Z",
"totals": {
"repositories": 1,
"records": 2,
"replace": 2,
"assign": 0,
"unchanged": 0
},
"repositories": [
{
"repo": "markitect-main",
"path": "/home/worsch/markitect-main",
"planned_head_sha": "3a45d51bbad49512d2610950eccaa3c2782a8523",
"source_fingerprint": "a6c5a705f7d5e0dc5620f469e0382467b7908a71390afac915557d7e9c33df77",
"source_verified": true,
"git_preflight": {
"ok": true,
"head_sha": "3a45d51bbad49512d2610950eccaa3c2782a8523",
"expected_head_sha": "3a45d51bbad49512d2610950eccaa3c2782a8523",
"upstream": "origin/main",
"behind": 0,
"ahead": 0,
"origin": "forgejo-remote:coulomb/markitect-main.git",
"errors": []
},
"mapping_counts": {
"records": 2,
"replace": 2,
"assign": 0,
"unchanged": 0
},
"ready": true
}
],
"errors": [],
"batch_sha256": "494db8e101aeae7f8488082565dec3b4dd5c9c6ccb5f8812aaf233f813768f67"
}

View file

@ -0,0 +1,72 @@
# RMGR-WP-0005 batch 0003 readiness
**Observed at:** `2026-08-22T14:20:25Z`
**Scope:** `markitect-main` only
**Decision:** `RMGR-DEC-2026-002`
## Outcome
The next deterministic-identifier batch is sealed and ready for an explicit
approval decision. No database or repository identifier was changed.
Source plan:
`RMGR-WP-0005-helixforge-uuid-migration-plan-2026-08-22-v2.json`, SHA-256 seal
`ac97f6e4f0b35db63a0dc1b4a439f0a39738d13c1407f18419f706d780d4eea0`.
Batch manifest:
`RMGR-WP-0005-batch-0003-markitect-main.json`, SHA-256 seal
`494db8e101aeae7f8488082565dec3b4dd5c9c6ccb5f8812aaf233f813768f67`.
## Mappings
| Kind | Record | Current UUID | Derived UUID |
| --- | --- | --- | --- |
| Workplan | `MARKITECT-WP-0002` | `e203d487-01f1-494a-b14d-a436241a4c01` | `e03ef262-5284-5dd3-92d2-dbd85c6b6159` |
| Task | `MARKITECT-WP-0002-T01` | `88b3c206-4d45-4bb3-bbb3-47443cdf2123` | `1852eca1-92e2-518e-bb21-9dffbeb32a4f` |
The batch contains two replacements, no assignments, and no unchanged records.
`markitect-main` is clean, exactly synchronized with `origin/main`, and uses
the Forgejo lineage. The source plan pins HEAD
`3a45d51bbad49512d2610950eccaa3c2782a8523` and source fingerprint
`a6c5a705f7d5e0dc5620f469e0382467b7908a71390afac915557d7e9c33df77`.
## Projection preflight
Read-only checks against the workstation and production projections agree:
| Check | Workstation | Production |
| --- | ---: | ---: |
| Current workplan UUID lookup | 200 | 200 |
| Derived workplan UUID lookup | 404 | 404 |
| Current task UUID lookup | 200 | 200 |
| Derived task UUID lookup | 404 | 404 |
| Tasks linked to current workplan | 10 | 10 |
| Progress events linked to current workplan | 9 | 9 |
| Foreign-key references to current task | 0 | 0 |
The workplan and task targets are absent in both projections. Dynamic inspection
of every current foreign key into `workplans` and `tasks` found only the ten
task rows and nine progress events shown above; the existing cascade contract
covers them.
## Approved execution interface
If `RMGR-DEC-2026-002` is approved against the exact batch hash:
1. Re-run batch/source/Git and projection preflight; stop on any drift.
2. Retain fresh, verified workstation and production database restore points.
3. Apply the repository transaction to workstation and production projections.
4. Apply the sealed authoritative file transaction for `markitect-main`.
5. Commit and push only the mapped workplan file.
6. Run consistency twice against each projection and require old/new API
lookups of 404/200 for both records.
7. Require all ten tasks and nine progress events to remain linked to the
derived workplan and the mapped task's reference count to remain zero.
8. On failure after database apply, reverse written files if necessary, then
reverse production and workstation projection transactions through their
durable aliases.
The decision does not authorize another repository, an assignment-only batch,
or restoration of the disabled production sweep.

View file

@ -463,6 +463,17 @@ restore hashes, commits, checks, and the bounded warning are in
progress because the remaining fleet repositories require separately sealed
and approved batches.
**Batch 0003 prepared (2026-08-22):** `markitect-main` is the smallest next
repository whose two mapped rows exist in both current projections. Its clean,
Forgejo-synchronized source still matches the sealed fleet plan. Both
projections return old/new lookups 200/404 for `MARKITECT-WP-0002` and
`MARKITECT-WP-0002-T01`, with 10 tasks and 9 progress events linked to the
workplan and no foreign-key reference to the mapped task. The fail-closed batch
hash is `494db8e101aeae7f8488082565dec3b4dd5c9c6ccb5f8812aaf233f813768f67`.
`RMGR-DEC-2026-002` is the directly actionable approval interface; no mutation
has run. Evidence:
`docs/evidence/RMGR-WP-0005-batch-0003-markitect-readiness-2026-08-22.md`.
## Retire the interim rule
```task