From 54507b975a475a7eda15255e9183e6fc2ec7e056 Mon Sep 17 00:00:00 2001 From: tegwick Date: Mon, 31 Aug 2026 01:36:38 +0200 Subject: [PATCH] docs: approve state-hub identifier pilot Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a053ff-1d6f-7fe2-ac1c-a6eb40a42a0c --- decisions/decisions.md | 30 ++ ...0005-state-hub-pilot-batch-2026-08-31.json | 143 ++++++++ ...-0005-state-hub-pilot-plan-2026-08-31.json | 305 ++++++++++++++++++ 3 files changed, 478 insertions(+) create mode 100644 decisions/decisions.md create mode 100644 docs/evidence/RMGR-WP-0005-state-hub-pilot-batch-2026-08-31.json create mode 100644 docs/evidence/RMGR-WP-0005-state-hub-pilot-plan-2026-08-31.json diff --git a/decisions/decisions.md b/decisions/decisions.md new file mode 100644 index 0000000..6b9f015 --- /dev/null +++ b/decisions/decisions.md @@ -0,0 +1,30 @@ +# Decision records + +## RMGR-DEC-2026-004 — Approve deterministic identifier pilot for state-hub + +```yaml +id: RMGR-DEC-2026-004 +kind: decision +title: Approve deterministic identifier pilot for state-hub +status: resolved +decision_type: approved +owner: Bernd Worsch +repo: repo-manager +workplan: RMGR-WP-0005 +workplan_task: RMGR-WP-0005-T04 +source_plan: docs/evidence/RMGR-WP-0005-state-hub-pilot-plan-2026-08-31.json +source_plan_sha256: c752d7962ee1008f6e31fe424a8c39e22a48f63003494546c4fdae8c7a29a019 +batch_manifest: docs/evidence/RMGR-WP-0005-state-hub-pilot-batch-2026-08-31.json +batch_sha256: 77156a9906703f599cdb2d0fee8e018a9860b23b2f1c1959ff0983d33b447763 +apply_authorized: true +approval_source: operator chat approval on 2026-08-31 +scope: + repositories: + - state-hub + replacements: 9 + assignments: 0 +rollback: Reverse the file transaction if written, then reverse the primary projection + using durable aliases. +created: '2026-08-30T23:36:27.990474Z' +updated: '2026-08-30T23:36:27.990474Z' +``` diff --git a/docs/evidence/RMGR-WP-0005-state-hub-pilot-batch-2026-08-31.json b/docs/evidence/RMGR-WP-0005-state-hub-pilot-batch-2026-08-31.json new file mode 100644 index 0000000..a4681ce --- /dev/null +++ b/docs/evidence/RMGR-WP-0005-state-hub-pilot-batch-2026-08-31.json @@ -0,0 +1,143 @@ +{ + "schema": "repo-manager.identifier-migration-batch.v1", + "ok": true, + "ready_for_approval": true, + "apply_authorized": false, + "approval_required": true, + "projection_api_bases": [ + "http://127.0.0.1:8000" + ], + "namespace": "helixforge", + "source_plan_sha256": "c752d7962ee1008f6e31fe424a8c39e22a48f63003494546c4fdae8c7a29a019", + "batch_policy": "repository-atomic, sequential, stop on first failure", + "rollback_order": "reverse files if written, then reverse central projection", + "generated_at": "2026-08-30T23:35:48.897638Z", + "totals": { + "repositories": 1, + "records": 30, + "replace": 9, + "assign": 0, + "unchanged": 21 + }, + "repositories": [ + { + "repo": "state-hub", + "path": "/home/worsch/state-hub", + "planned_head_sha": "f39612558d92e0f822f2e735341eb5b3b3f0912f", + "source_fingerprint": "695792b72630de00837574e2abe5951c6fe7ec453f95eca03c5ff72d595d684c", + "source_verified": true, + "git_preflight": { + "ok": true, + "head_sha": "f39612558d92e0f822f2e735341eb5b3b3f0912f", + "expected_head_sha": "f39612558d92e0f822f2e735341eb5b3b3f0912f", + "upstream": "origin/main", + "behind": 0, + "ahead": 0, + "origin": "forgejo-remote:coulomb/state-hub.git", + "errors": [] + }, + "projection_preflight": { + "required": true, + "ok": true, + "projections": [ + { + "api_base": "http://127.0.0.1:8000", + "ok": true, + "mode": "legacy_migration", + "state_counts": { + "legacy_source": 9, + "derived_target": 0, + "both_present": 0, + "neither_present": 0, + "unexpected_status": 0 + }, + "replacement_checks": [ + { + "record_id": "CUST-WP-0038", + "kind": "workplan", + "current_status": 200, + "derived_status": 404, + "state": "legacy_source", + "ok": true + }, + { + "record_id": "CUST-WP-0038-T01", + "kind": "task", + "current_status": 200, + "derived_status": 404, + "state": "legacy_source", + "ok": true + }, + { + "record_id": "CUST-WP-0038-T02", + "kind": "task", + "current_status": 200, + "derived_status": 404, + "state": "legacy_source", + "ok": true + }, + { + "record_id": "CUST-WP-0038-T03", + "kind": "task", + "current_status": 200, + "derived_status": 404, + "state": "legacy_source", + "ok": true + }, + { + "record_id": "CUST-WP-0038-T04", + "kind": "task", + "current_status": 200, + "derived_status": 404, + "state": "legacy_source", + "ok": true + }, + { + "record_id": "CUST-WP-0038-T05", + "kind": "task", + "current_status": 200, + "derived_status": 404, + "state": "legacy_source", + "ok": true + }, + { + "record_id": "CUST-WP-0038-T06", + "kind": "task", + "current_status": 200, + "derived_status": 404, + "state": "legacy_source", + "ok": true + }, + { + "record_id": "CUST-WP-0038-T07", + "kind": "task", + "current_status": 200, + "derived_status": 404, + "state": "legacy_source", + "ok": true + }, + { + "record_id": "CUST-WP-0038-T08", + "kind": "task", + "current_status": 200, + "derived_status": 404, + "state": "legacy_source", + "ok": true + } + ] + } + ], + "errors": [] + }, + "mapping_counts": { + "records": 30, + "replace": 9, + "assign": 0, + "unchanged": 21 + }, + "ready": true + } + ], + "errors": [], + "batch_sha256": "77156a9906703f599cdb2d0fee8e018a9860b23b2f1c1959ff0983d33b447763" +} diff --git a/docs/evidence/RMGR-WP-0005-state-hub-pilot-plan-2026-08-31.json b/docs/evidence/RMGR-WP-0005-state-hub-pilot-plan-2026-08-31.json new file mode 100644 index 0000000..439d8d3 --- /dev/null +++ b/docs/evidence/RMGR-WP-0005-state-hub-pilot-plan-2026-08-31.json @@ -0,0 +1,305 @@ +{ + "schema": "repo-manager.identifier-migration-plan.v1", + "ok": true, + "ready_to_apply": true, + "root": "/home/worsch/state-hub", + "namespace": "helixforge", + "derivation_version": "repo-manager.work-record-uuid.v1", + "namespace_uuid": "a4058507-5c4a-5a00-ab06-fffa4fb46009", + "scope": "live workplans and unfinished tasks", + "apply_policy": "all-or-nothing per repository", + "generated_at": "2026-08-30T23:30:06.909260Z", + "totals": { + "repositories": 1, + "eligible": 1, + "skipped": 0, + "records": 30, + "replace": 9, + "assign": 0, + "unchanged": 21 + }, + "repositories": [ + { + "repo": "state-hub", + "path": "/home/worsch/state-hub", + "planned_head_sha": "f39612558d92e0f822f2e735341eb5b3b3f0912f", + "source_fingerprint": "695792b72630de00837574e2abe5951c6fe7ec453f95eca03c5ff72d595d684c", + "eligible": true, + "atomic_unit": true, + "blockers": [], + "mappings": [ + { + "repo": "state-hub", + "path": "workplans/CUST-WP-0038-state-hub-threephoenix-ha.md", + "kind": "workplan", + "record_id": "CUST-WP-0038", + "current_uuid": "8d0c1b5d-44da-4b91-8357-e6526d3e0a85", + "derived_uuid": "ccb87fa4-6381-5f22-b097-6e026f56a9c1", + "action": "replace" + }, + { + "repo": "state-hub", + "path": "workplans/CUST-WP-0038-state-hub-threephoenix-ha.md", + "kind": "task", + "record_id": "CUST-WP-0038-T01", + "current_uuid": "aa1bf291-3b6c-4940-a4f5-7680b0349110", + "derived_uuid": "5c79e069-281e-5b3c-a45e-3e906b9053fa", + "action": "replace" + }, + { + "repo": "state-hub", + "path": "workplans/CUST-WP-0038-state-hub-threephoenix-ha.md", + "kind": "task", + "record_id": "CUST-WP-0038-T02", + "current_uuid": "5575f244-5cef-47aa-a168-24027cd08140", + "derived_uuid": "b91f9086-c526-5452-bade-ad2451ce3bd3", + "action": "replace" + }, + { + "repo": "state-hub", + "path": "workplans/CUST-WP-0038-state-hub-threephoenix-ha.md", + "kind": "task", + "record_id": "CUST-WP-0038-T03", + "current_uuid": "5330fcc3-684b-49f6-8d28-ea8c929733d6", + "derived_uuid": "b6fbdfe2-7561-561d-936b-d531300f88aa", + "action": "replace" + }, + { + "repo": "state-hub", + "path": "workplans/CUST-WP-0038-state-hub-threephoenix-ha.md", + "kind": "task", + "record_id": "CUST-WP-0038-T04", + "current_uuid": "64175ed0-af36-47ea-9401-74c4b15ffe24", + "derived_uuid": "c7f59893-6042-540c-ada7-e3661ffdabf7", + "action": "replace" + }, + { + "repo": "state-hub", + "path": "workplans/CUST-WP-0038-state-hub-threephoenix-ha.md", + "kind": "task", + "record_id": "CUST-WP-0038-T05", + "current_uuid": "73c5008a-380e-42bf-ad57-1c9d0bda3a86", + "derived_uuid": "390f292d-1d74-5ca7-a08c-530e9c679bd3", + "action": "replace" + }, + { + "repo": "state-hub", + "path": "workplans/CUST-WP-0038-state-hub-threephoenix-ha.md", + "kind": "task", + "record_id": "CUST-WP-0038-T06", + "current_uuid": "4e5b97ff-ef1c-414d-812b-39b87b242c74", + "derived_uuid": "e7640bd3-827b-5f8c-b03b-93e76eb8c412", + "action": "replace" + }, + { + "repo": "state-hub", + "path": "workplans/CUST-WP-0038-state-hub-threephoenix-ha.md", + "kind": "task", + "record_id": "CUST-WP-0038-T07", + "current_uuid": "959062d8-decb-4969-a60b-0d3b618a8d6c", + "derived_uuid": "6492555c-aa6a-5c91-a2cf-3824fe1f1b12", + "action": "replace" + }, + { + "repo": "state-hub", + "path": "workplans/CUST-WP-0038-state-hub-threephoenix-ha.md", + "kind": "task", + "record_id": "CUST-WP-0038-T08", + "current_uuid": "d4a7ca26-c338-48a1-b8b1-85a356550add", + "derived_uuid": "57412aef-f47a-5b58-b0a3-ca066d05ca09", + "action": "replace" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0079-retirement-strangler.md", + "kind": "workplan", + "record_id": "STATE-WP-0079", + "current_uuid": "ed077b62-7048-5752-bf65-f90471f45854", + "derived_uuid": "ed077b62-7048-5752-bf65-f90471f45854", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0079-retirement-strangler.md", + "kind": "task", + "record_id": "STATE-WP-0079-T04", + "current_uuid": "3a454438-1955-547f-a491-8eab7cd25710", + "derived_uuid": "3a454438-1955-547f-a491-8eab7cd25710", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0079-retirement-strangler.md", + "kind": "task", + "record_id": "STATE-WP-0079-T05", + "current_uuid": "f6cf8c01-eb59-5ca8-a541-23928d4a000c", + "derived_uuid": "f6cf8c01-eb59-5ca8-a541-23928d4a000c", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0079-retirement-strangler.md", + "kind": "task", + "record_id": "STATE-WP-0079-T06", + "current_uuid": "9230c99b-af58-5794-9291-452e619a30fa", + "derived_uuid": "9230c99b-af58-5794-9291-452e619a30fa", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0081-cluster-self-sufficiency-and-registrar.md", + "kind": "workplan", + "record_id": "STATE-WP-0081", + "current_uuid": "bb2798fd-0680-5027-8479-3af3a5b048de", + "derived_uuid": "bb2798fd-0680-5027-8479-3af3a5b048de", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0081-cluster-self-sufficiency-and-registrar.md", + "kind": "task", + "record_id": "STATE-WP-0081-T01", + "current_uuid": "7dca680b-d34d-5bfe-838e-b463a4487a9c", + "derived_uuid": "7dca680b-d34d-5bfe-838e-b463a4487a9c", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0081-cluster-self-sufficiency-and-registrar.md", + "kind": "task", + "record_id": "STATE-WP-0081-T02", + "current_uuid": "3fd4d23c-6b67-5b92-b312-25a7295773fd", + "derived_uuid": "3fd4d23c-6b67-5b92-b312-25a7295773fd", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0081-cluster-self-sufficiency-and-registrar.md", + "kind": "task", + "record_id": "STATE-WP-0081-T03", + "current_uuid": "8e5a5eb8-f29c-5cab-a19d-3447b6e0c26a", + "derived_uuid": "8e5a5eb8-f29c-5cab-a19d-3447b6e0c26a", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0081-cluster-self-sufficiency-and-registrar.md", + "kind": "task", + "record_id": "STATE-WP-0081-T04", + "current_uuid": "57ab0ced-ef3f-5260-b7d6-e2a78ff4e023", + "derived_uuid": "57ab0ced-ef3f-5260-b7d6-e2a78ff4e023", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0081-cluster-self-sufficiency-and-registrar.md", + "kind": "task", + "record_id": "STATE-WP-0081-T05", + "current_uuid": "530fbd27-e463-51d2-b09c-ba9827d057de", + "derived_uuid": "530fbd27-e463-51d2-b09c-ba9827d057de", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0081-cluster-self-sufficiency-and-registrar.md", + "kind": "task", + "record_id": "STATE-WP-0081-T06", + "current_uuid": "1d74e5e2-fb0f-5342-afbb-6ce2986823f4", + "derived_uuid": "1d74e5e2-fb0f-5342-afbb-6ce2986823f4", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0081-cluster-self-sufficiency-and-registrar.md", + "kind": "task", + "record_id": "STATE-WP-0081-T07", + "current_uuid": "12a2ce9f-7cdf-501b-9018-4c960d45e855", + "derived_uuid": "12a2ce9f-7cdf-501b-9018-4c960d45e855", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0081-cluster-self-sufficiency-and-registrar.md", + "kind": "task", + "record_id": "STATE-WP-0081-T08", + "current_uuid": "782c502a-5ce2-5ec3-8f07-b550c9705013", + "derived_uuid": "782c502a-5ce2-5ec3-8f07-b550c9705013", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0083-forge-derived-projection-reset.md", + "kind": "workplan", + "record_id": "STATE-WP-0083", + "current_uuid": "40e36360-6b2a-5903-b769-47507d866ac8", + "derived_uuid": "40e36360-6b2a-5903-b769-47507d866ac8", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0083-forge-derived-projection-reset.md", + "kind": "task", + "record_id": "STATE-WP-0083-T02", + "current_uuid": "3122ae66-1a9a-5102-a7ff-b7ba1564bf3c", + "derived_uuid": "3122ae66-1a9a-5102-a7ff-b7ba1564bf3c", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0084-forge-read-for-private-repositories.md", + "kind": "workplan", + "record_id": "STATE-WP-0084", + "current_uuid": "9c4b8c79-edba-5d2d-ad37-a45707e89304", + "derived_uuid": "9c4b8c79-edba-5d2d-ad37-a45707e89304", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0084-forge-read-for-private-repositories.md", + "kind": "task", + "record_id": "STATE-WP-0084-T02", + "current_uuid": "d8d41a89-1ebc-5118-bb73-cf8d8c114e16", + "derived_uuid": "d8d41a89-1ebc-5118-bb73-cf8d8c114e16", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0084-forge-read-for-private-repositories.md", + "kind": "task", + "record_id": "STATE-WP-0084-T03", + "current_uuid": "b22b24d9-7ed3-533c-bda7-3130693cf4d2", + "derived_uuid": "b22b24d9-7ed3-533c-bda7-3130693cf4d2", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0084-forge-read-for-private-repositories.md", + "kind": "task", + "record_id": "STATE-WP-0084-T04", + "current_uuid": "33c09a78-5974-57c6-bb7f-ad73082046bb", + "derived_uuid": "33c09a78-5974-57c6-bb7f-ad73082046bb", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0085-repository-lineage-preserving-rename.md", + "kind": "workplan", + "record_id": "STATE-WP-0085", + "current_uuid": "4f5661de-5922-55d6-bd02-5dcb00b13f73", + "derived_uuid": "4f5661de-5922-55d6-bd02-5dcb00b13f73", + "action": "unchanged" + }, + { + "repo": "state-hub", + "path": "workplans/STATE-WP-0085-repository-lineage-preserving-rename.md", + "kind": "task", + "record_id": "STATE-WP-0085-T09", + "current_uuid": "df34f6ec-d137-52d0-93c4-3756a821097f", + "derived_uuid": "df34f6ec-d137-52d0-93c4-3756a821097f", + "action": "unchanged" + } + ] + } + ], + "plan_sha256": "c752d7962ee1008f6e31fe424a8c39e22a48f63003494546c4fdae8c7a29a019" +}