diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index 8a5058f..759b402 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -8,7 +8,7 @@ | Kind | ID | Status | Lane | Source | | --- | --- | --- | --- | --- | -| workplan | ADHOC-2026-08-23 | finished | — | workplans/ADHOC-2026-08-23.md | +| workplan | RPF-WP-ADHOC-2026-08-23 | finished | — | workplans/ADHOC-2026-08-23.md | | workplan | RPF-WP-0001 | finished | — | workplans/RPF-WP-0001-credential-request-and-lease-broker.md | | workplan | RPF-WP-0002 | finished | — | workplans/RPF-WP-0002-openbao-approved-automation-delegation.md | | workplan | RPF-WP-0003 | finished | — | workplans/RPF-WP-0003-issue-core-runtime-ingestion-key-lane.md | @@ -29,12 +29,15 @@ | workplan | RPF-WP-0018 | finished | — | workplans/RPF-WP-0018-policy-surface-alignment.md | | workplan | RPF-WP-0019 | finished | — | workplans/RPF-WP-0019-apps-pg-recoverability-and-controls.md | | workplan | RPF-WP-0020 | finished | — | workplans/RPF-WP-0020-ccr-schema-drift.md | -| workplan | RPF-WP-0021 | finished | — | workplans/RPF-WP-0021-core-hub-platform-onboarding.md | | workplan | RPF-WP-0025 | blocked | — | workplans/RPF-WP-0025-openbao-operator-only-access.md | | workplan | RPF-WP-0026 | finished | — | workplans/RPF-WP-0026-flex-auth-credential-grant-integration.md | | workplan | RPF-WP-0027 | active | — | workplans/RPF-WP-0027-keycape-live-secret-exposure-recovery.md | -| task | ADHOC-2026-08-23-T01 | done | — | workplans/ADHOC-2026-08-23.md | -| task | ADHOC-2026-08-23-T02 | done | — | workplans/ADHOC-2026-08-23.md | +| workplan | RPF-WP-0028 | finished | — | workplans/RPF-WP-0028-durable-live-image-inventory.md | +| workplan | RPF-WP-0029 | blocked | — | workplans/RPF-WP-0029-backup-credential-default-removal.md | +| workplan | RPF-WP-0030 | finished | — | workplans/RPF-WP-0030-core-hub-platform-onboarding.md | +| workplan | RPF-WP-0031 | finished | — | workplans/RPF-WP-0031-workplan-identity-collision.md | +| task | RPF-WP-ADHOC-2026-08-23-T01 | done | — | workplans/ADHOC-2026-08-23.md | +| task | RPF-WP-ADHOC-2026-08-23-T02 | done | — | workplans/ADHOC-2026-08-23.md | | task | RPF-WP-0001-T01 | done | — | workplans/RPF-WP-0001-credential-request-and-lease-broker.md | | task | RPF-WP-0001-T02 | done | — | workplans/RPF-WP-0001-credential-request-and-lease-broker.md | | task | RPF-WP-0001-T03 | done | — | workplans/RPF-WP-0001-credential-request-and-lease-broker.md | @@ -131,11 +134,6 @@ | task | RPF-WP-0020-T02 | done | — | workplans/RPF-WP-0020-ccr-schema-drift.md | | task | RPF-WP-0020-T03 | done | — | workplans/RPF-WP-0020-ccr-schema-drift.md | | task | RPF-WP-0020-T04 | done | — | workplans/RPF-WP-0020-ccr-schema-drift.md | -| task | RPF-WP-0021-T01 | done | — | workplans/RPF-WP-0021-core-hub-platform-onboarding.md | -| task | RPF-WP-0021-T02 | done | — | workplans/RPF-WP-0021-core-hub-platform-onboarding.md | -| task | RPF-WP-0021-T03 | done | — | workplans/RPF-WP-0021-core-hub-platform-onboarding.md | -| task | RPF-WP-0021-T04 | done | — | workplans/RPF-WP-0021-core-hub-platform-onboarding.md | -| task | RPF-WP-0021-T05 | done | — | workplans/RPF-WP-0021-core-hub-platform-onboarding.md | | task | RPF-WP-0025-T01 | done | — | workplans/RPF-WP-0025-openbao-operator-only-access.md | | task | RPF-WP-0025-T02 | done | — | workplans/RPF-WP-0025-openbao-operator-only-access.md | | task | RPF-WP-0025-T03 | wait | — | workplans/RPF-WP-0025-openbao-operator-only-access.md | @@ -148,3 +146,14 @@ | task | RPF-WP-0027-T04 | wait | — | workplans/RPF-WP-0027-keycape-live-secret-exposure-recovery.md | | task | RPF-WP-0027-T05 | wait | — | workplans/RPF-WP-0027-keycape-live-secret-exposure-recovery.md | | task | RPF-WP-0027-T06 | progress | — | workplans/RPF-WP-0027-keycape-live-secret-exposure-recovery.md | +| task | RPF-WP-0028-T01 | done | — | workplans/RPF-WP-0028-durable-live-image-inventory.md | +| task | RPF-WP-0028-T02 | done | — | workplans/RPF-WP-0028-durable-live-image-inventory.md | +| task | RPF-WP-0029-T01 | done | — | workplans/RPF-WP-0029-backup-credential-default-removal.md | +| task | RPF-WP-0029-T02 | wait | — | workplans/RPF-WP-0029-backup-credential-default-removal.md | +| task | RPF-WP-0030-T01 | done | — | workplans/RPF-WP-0030-core-hub-platform-onboarding.md | +| task | RPF-WP-0030-T02 | done | — | workplans/RPF-WP-0030-core-hub-platform-onboarding.md | +| task | RPF-WP-0030-T03 | done | — | workplans/RPF-WP-0030-core-hub-platform-onboarding.md | +| task | RPF-WP-0030-T04 | done | — | workplans/RPF-WP-0030-core-hub-platform-onboarding.md | +| task | RPF-WP-0030-T05 | done | — | workplans/RPF-WP-0030-core-hub-platform-onboarding.md | +| task | RPF-WP-0031-T01 | done | — | workplans/RPF-WP-0031-workplan-identity-collision.md | +| task | RPF-WP-0031-T02 | done | — | workplans/RPF-WP-0031-workplan-identity-collision.md | diff --git a/docs/evidence/RPF-WP-0031-reconciliation-2026-09-05.json b/docs/evidence/RPF-WP-0031-reconciliation-2026-09-05.json new file mode 100644 index 0000000..2d06844 --- /dev/null +++ b/docs/evidence/RPF-WP-0031-reconciliation-2026-09-05.json @@ -0,0 +1,124 @@ +{ + "ok": true, + "status": "applied", + "repo_slug": "railiance-platform", + "commit": "6b41a43fa354f8752e40c907ad7a7ae5f6f1dbd6", + "requests": 2, + "elapsed_ms": 11989.4, + "git": { + "upstream": "origin/main", + "behind": 0, + "ahead": 0 + }, + "identifiers": { + "schema": "repo-manager.identifier-assignment.v1", + "ok": true, + "executed": true, + "repo": "railiance-platform", + "namespace": "helixforge", + "assignments": [], + "files_changed": [] + }, + "receipt": { + "schema": "state-hub.repository-projection-reconcile.v1", + "instance_role": "primary", + "instance_label": "railiance01", + "expected_commit": "6b41a43fa354f8752e40c907ad7a7ae5f6f1dbd6", + "derived_commit": "6b41a43fa354f8752e40c907ad7a7ae5f6f1dbd6", + "outcome": { + "schema": "state-hub.projection-reset.v1", + "repo_slug": "railiance-platform", + "commit": "6b41a43fa354f8752e40c907ad7a7ae5f6f1dbd6", + "status": "applied", + "counts": { + "created": 4, + "updated": 30, + "retired": 0, + "refused": 0, + "released": 0, + "created_tasks": 0, + "updated_tasks": 33, + "cancelled_tasks": 0 + }, + "created": [ + "RPF-WP-0028", + "RPF-WP-0029", + "RPF-WP-0030", + "RPF-WP-0031" + ], + "updated": [ + "RAIL-PL-WP-0001", + "RAIL-PL-WP-0002", + "RPF-WP-0001", + "RPF-WP-0002", + "RPF-WP-0003", + "RPF-WP-0004", + "RPF-WP-0005", + "RPF-WP-0006", + "RPF-WP-0007", + "RPF-WP-0008", + "RPF-WP-0009", + "RPF-WP-0010", + "RPF-WP-0011", + "RPF-WP-0012", + "RPF-WP-0013", + "RPF-WP-0014", + "RPF-WP-0015", + "RPF-WP-0016", + "RPF-WP-0017", + "RPF-WP-0018", + "RPF-WP-0019", + "RPF-WP-0020", + "RPF-WP-0021", + "RPF-WP-0022", + "RPF-WP-0023", + "RPF-WP-0024", + "RPF-WP-0025", + "RPF-WP-0026", + "RPF-WP-0027", + "RPF-WP-ADHOC-2026-08-23" + ], + "retired": [], + "released": [], + "created_tasks": [], + "updated_tasks": [ + "RAIL-PL-WP-0001-T02", + "RPF-WP-0008-T01", + "RPF-WP-0008-T02", + "RPF-WP-0008-T03", + "RPF-WP-0009-T01", + "RPF-WP-0009-T02", + "RPF-WP-0009-T03", + "RPF-WP-0009-T04", + "RPF-WP-0009-T05", + "RPF-WP-0011-T01", + "RPF-WP-0011-T02", + "RPF-WP-0011-T03", + "RPF-WP-0011-T04", + "RPF-WP-0018-T01", + "RPF-WP-0018-T02", + "RPF-WP-0018-T03", + "RPF-WP-0018-T04", + "RPF-WP-0018-T05", + "RPF-WP-0018-T06", + "RPF-WP-0019-T01", + "RPF-WP-0019-T02", + "RPF-WP-0019-T03", + "RPF-WP-0020-T01", + "RPF-WP-0020-T02", + "RPF-WP-0020-T03", + "RPF-WP-0021-T01", + "RPF-WP-0021-T02", + "RPF-WP-0021-T03", + "RPF-WP-0021-T04", + "RPF-WP-0021-T05", + "RPF-WP-0021-T06", + "RPF-WP-ADHOC-2026-08-23-T01", + "RPF-WP-ADHOC-2026-08-23-T02" + ], + "cancelled_tasks": [], + "refused": [], + "notes": [] + } + } +} diff --git a/docs/evidence/repo-review-2026-09-05.md b/docs/evidence/repo-review-2026-09-05.md index 87355ad..5a6898e 100644 --- a/docs/evidence/repo-review-2026-09-05.md +++ b/docs/evidence/repo-review-2026-09-05.md @@ -92,3 +92,12 @@ Read-only State Hub source inspection also found eager relationship loading on RepositorySlug, ManagedRepo, Workplan and Task. Avoiding unrelated relationship loads is a candidate optimization for the snapshot/identity endpoints, not a measured root-cause finding. No State Hub service code or deployment was changed. + + +## Identity repair and synchronization completed + +The user approved the narrow managed-UUID exception. Core Hub onboarding is +now RPF-WP-0030 with the six proposed identities; the older apps-pg archive +is byte-for-byte unchanged. Root/archive uniqueness checks pass for all 196 +IDs and UUIDs. Primary/railiance01 applied commit 6b41a43 with zero refusals or +retirements. RPF-WP-0031 is finished; the prior sync blocker is resolved. diff --git a/workplans/RPF-WP-0031-workplan-identity-collision.md b/workplans/RPF-WP-0031-workplan-identity-collision.md index 7c23223..8f549dc 100644 --- a/workplans/RPF-WP-0031-workplan-identity-collision.md +++ b/workplans/RPF-WP-0031-workplan-identity-collision.md @@ -4,7 +4,7 @@ type: workplan title: "Separate duplicated apps-pg and Core Hub workplan identities" domain: financials repo: railiance-platform -status: active +status: finished owner: codex created: "2026-09-05" updated: "2026-09-05" @@ -37,7 +37,7 @@ updates. Existing source UUIDs have not been changed. ```task id: RPF-WP-0031-T02 -status: progress +status: done priority: high state_hub_task_id: "2990a940-634c-5d76-b74c-740de8c36b16" ``` @@ -53,4 +53,9 @@ never blanket-acknowledge unrelated retirements. User approved the exact exception on 2026-09-05. Applied the six proposed UUIDs and four evidence-reference updates; the archived file is byte-for-byte unchanged. -Source uniqueness and authoritative reconciliation are being verified. +All 196 source IDs and 196 UUIDs are unique across root and archived files. +Primary/railiance01 verified the pushed `6b41a43` commit and applied the source +projection in 12 seconds: four workplans created, 30 updated, no retirements, +no refusals, no cancelled tasks. RPF-WP-0028/0029/0030/0031 are now projected. +Receipt: `docs/evidence/RPF-WP-0031-reconciliation-2026-09-05.json`. +The approved identity repair and its authoritative reconciliation are complete.