the-custodian/docs/evidence/2026-10-03-dependency-graph-triage/activity-core-projection-route-recommendation.md
codex 786b082a19
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Python Tests / pytest (push) Successful in 23s
CUST-WP-0075: reconcile owner waits and decision routing
2026-10-04 01:17:18 +02:00

3.4 KiB

Activity Core: preserve historical identities while projecting current work

The October 4 rmgr sync --path /home/worsch/activity-core --push failure occurs before any HTTP reconcile call. ensure_missing_work_record_identifiers() rejects seven workplan labels as invalid: custodian-WP-0001, 0002, 0003, 0003a, 0003b, 0003c, and 0004. There are no reported identity collisions. This is the existing owner request 6bf8ca98-ada1-43ab-83e7-207d4ab195fe, already referenced by ACTIVITY-WP-0042-T08; RMGR-WP-0014/0015 completion does not cover these labels.

All seven files are closed historical evidence (legacy done, or archived) and already carry UUID bindings. The primary snapshot confirms four retained workplans: foundation e22516cc-4fdf-4dad-a928-a9e04a9fa7c7, triggers 3a4f47d9-8bc1-434e-acb4-bed5d4dacda0, event bridge b4eb45a9-69e3-4ab0-b00c-67a53c3117c5, and ops 759b1255-aa78-42b5-8fab-c5fcf168f5f4. The archived 0003 container and split 0003a/0003b/0003c files share the event-bridge UUID; the owner must explicitly audit and preserve that historical mapping rather than treating them as four new workstreams.

Minimal supported repair belongs to Repo Manager: extend its bounded historical binding-preservation path for these exact activity-core source records, terminal statuses and existing valid UUIDs. Keep strict conformance reporting, reject new or active uses, missing bindings and conflicting claims, and test that no source label/UUID or primary identity changes. If registry grandfathering is used, update the authoritative canon and Repo Manager's machine copy consistently; do not introduce a general lowercase-prefix allowance. Verify the shared event-bridge mapping in a read-only derive/merge test against the actual primary snapshot.

After owner acceptance, use the existing supported route:

uv run --project /home/worsch/repo-manager rmgr sync --path /home/worsch/activity-core --push

That route verifies clean authoritative files, preserves existing managed IDs, checks the pushed Forge commit and primary/railiance01 identity, then calls POST /repos/activity-core/work-record-projection/reconcile with the exact expected_commit and retirement acknowledgement false. Validate the returned exact-commit primary receipt and independently read back ACTIVITY-WP-0042-T05/T08 dependency/qualifier fields by UUID.

Do not rename legacy workplans, allocate replacement UUIDs, bypass the rejected identifier gate with an ad-hoc API call, acknowledge retirements, or claim current projection from a successful Git push alone. No source or runtime changes were made for this recommendation.

Read-only receiving proof subsequently failed preservation. The current pure derive/diff path, evaluated against the actual primary snapshot, reports one missing legacy workplan (custodian-WP-0003c) and 40 stale legacy tasks. The historical files store tasks in frontmatter YAML lists, which the current Forge parser omits. This prevents a registrar-only repair from proving safe normal projection. Retain owner request 6bf8ca98-ada1-43ab-83e7-207d4ab195fe; do not apply the prepared preflight-only patch or call normal sync restored. Receiving preservation needs owner work before the next normal reconcile can proceed. Proof: /tmp/activity-core-projection-read-proof.json and its read-only generating script /tmp/activity-core-projection-read-proof.py. Neither writes to the hub.