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:
parent
b6ea4d655d
commit
1250fa87f7
4 changed files with 177 additions and 0 deletions
47
decisions/RMGR-DEC-2026-002-markitect-identifier-batch.md
Normal file
47
decisions/RMGR-DEC-2026-002-markitect-identifier-batch.md
Normal 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.
|
||||
47
docs/evidence/RMGR-WP-0005-batch-0003-markitect-main.json
Normal file
47
docs/evidence/RMGR-WP-0005-batch-0003-markitect-main.json
Normal 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"
|
||||
}
|
||||
|
|
@ -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.
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue