state-hub/workplans/STATE-WP-0095-historical-source-receiving.md
tegwick 30c9b1a895
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Verify Activity historical replay after the approved retirement.
The founder-approved rollout retired exactly the three empty projections and kept every bound historical identity.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 57383@bnt-lap001
Assistant-Session: ef71febe-2a37-4c34-a979-2508ca973c91
2026-10-06 10:34:14 +02:00

8 KiB

id type title domain repo status owner created updated flavor depends_on state_hub_workstream_id
STATE-WP-0095 workplan Preserve exact closed historical source bindings in Forge receiving infotech state-hub finished codex 2026-10-04 2026-10-06 implementation
79579572-8120-5d3b-aca5-dd4aff60d058

Goal

Normal Forge receiving must preserve the seven bound Activity legacy source views and the Custodian retired ADHOC source without new identities, source rewrites, task movement, deletion, relabeling or unretirement. This implements receiving support before RMGR-WP-0019 registrar admission. CUST-WP-0077 owns cross-owner coordination; deployment and replay remain explicit owner returns.

Verify source bindings and shared views

id: STATE-WP-0095-T01
status: done
priority: high
state_hub_task_id: "6a5f87bb-e63d-5e20-b9fc-c1b5cd403ff7"

Reviewed seven exact Activity files: four existing workplans and 64 UUID-bound closed tasks. The archived custodian-WP-0003 parent and three split_from views share one existing parent UUID; every repeated task binding/content agrees. Custodian ADHOC-2026-08-25-retired retains parent 1c53d3db-6633-5e2d-987f-10706d73be9e and task d8af3e6b-26ae-580c-bbeb-caa8ad419bec. No identity migration is authorized.

Implement preservation receiving and global collision refusal

id: STATE-WP-0095-T02
status: done
priority: high
state_hub_task_id: "ebb24194-e4cc-5130-aaa6-663f2ea2c822"

Prepared exact source digest manifest, existing-parent/task verification, immutable receiving and UUID-based historical diff. Ordinary canonical sources continue deriving their identities. Missing/changed/symlinked source, absent bound rows or nonterminal hub histories refuse. Check task UUID holders globally, including retired and acknowledged-stale parent workplans, before INSERT.

Offline preview tests and snapshot proof are evidence of source behavior only; finish after applying reviewed source and its focused tests to the owning repo.

Deliver receiving through normal deployment and verify owner return

id: STATE-WP-0095-T03
status: done
priority: high
depends_on: [STATE-WP-0095-T02]
state_hub_task_id: "e8566341-cf6e-5b9c-ad80-8564d14cd52a"
decision_id: "36772026-f43d-4331-b466-5f4b1afe4eca"

No direct live code patch. This task is a deployment return, not policy authority or permission to resolve identity decisions. Exact receiving fixture acceptance and global collision rejection must hold in the delivered version.

Verify normal historical replay preserves existing identities

id: STATE-WP-0095-T04
status: done
priority: high
depends_on: [STATE-WP-0095-T03, RMGR-WP-0019-T03]
state_hub_task_id: "3bbb311f-194e-5862-8aed-358a580f22b4"

Verify Activity four historical parent UUIDs/64 task UUIDs and Custodian retired parent/task unchanged; no historical row creation, movement, deletion, relabeling or unretirement. Unrelated stale projections remain separate decisions.

2026-10-05: Source exact-set retirement support now exists. Repository projection reconcile accepts expected_retirement_uuids; that set must equal the stale projections, and any task or dependency edge on a stale row refuses the call. Live apply still needs a reviewed rollout. On 2026-10-05 the founder accepted review review-1ece4f3e-d0e3-4fd6-abc8-272f1b1876f4, which names only the three empty projections and preserves parent b4eb45a9-69e3-4ab0-b00c-67a53c3117c5. That acceptance is not a live retirement and does not resolve 91b7c633-a66f-5d43-9f4b-6565aefb9356.

Offline evidence, 2026-10-04

Prepared receiver suite: Forge projection regression plus historical preservation, missing/changed source, terminality, immutable UUID diff, and global holder query. Real-source offline snapshot proof preserves four Activity parents/64 tasks and one Custodian parent/task without mutations; no API writes or deployment occurred. Exact original bindings are maintained in api/services/historical_projection.py.

2026-10-04 actual owning-source validation: 155 focused receiver/qualifier/planner cases passed; the independent offline current-source/current-hub-snapshot proof retained five existing parents and 65 task UUIDs, no mutations, clean historical diff. T02 is source-complete; T03/T04 remain wait for reviewed deployment and normal registrar/replay receiving, respectively. Evidence: docs/evidence/2026-10-04-historical-receiving-source.json.

Verified receiving rollout and remaining replay gate, 2026-10-04

T03 is done on actual founder approval of proposal STATE-WP-0095-T03-historical-receiving revision 1, SHA256 d6789359b3fe7988a6201fff6f367cb46948aa197e1cc0ca66c31f45e1ea9981, approval receipt reference user_reply:call_o87uEfFs3AtXfxO5YqUnSpcg:0. The normal owner Helm path delivered main-5dd3df9, commit 5dd3df9c69eb564af10ea5ea01e349786212501a, revision 72; API and MCP are Ready, primary/railiance01 health and schema a0b1c2d3e4f5 verified, running source hashes match. Rollback remains revision 71; no receipt-table downgrade is needed. Actual historical preservation and global task-holder refusal were verified in the delivered version. Durable receipt: verified historical receiving rollout.

Custodian immutable replay applied while preserving the retired historical parent/task UUIDs. Activity immutable replay retained all four historical parent and 64 task UUIDs and historical row contents, but refused transactionally on three unrelated stale projections: custodian-wp-0003 (archived), custodian-wp-0003a (done), custodian-wp-0003b (done). No retirement acknowledgement was issued and that refusal is not represented as normal replay success.

Registrar source c41d36c2 has 38 actual passing tests and Repo Manager's own normal sync succeeded; registrar admission does not authorize retiring Activity projections. T04 therefore remains wait, retaining RMGR-WP-0019-T03 and awaiting Activity Core's precise reviewed disposition of those three stale rows. No rename, identity migration, new paid native trial or further live action is included in this source status update.

Activity Core return, 2026-10-06

Activity Core returned the exact disposition (message cf2d5847-8b3f-4653-9d9f-d5fcfbe3f1e4, ACTIVITY-WP-0045, activity-core commit 941fac0). expected_retirement_uuids: 683724d9-4249-5e0e-88e0-7baff4330d58 (custodian-wp-0003), 644017c7-c5f2-5a64-81c3-d8ee806f8251 (custodian-wp-0003a), a5806df9-5b9a-50da-81c1-7e606076bed9 (custodian-wp-0003b). Each has zero tasks and zero dependency edges. None is preserved parent b4eb45a9-69e3-4ab0-b00c-67a53c3117c5. Repo Manager independently verified the set (message 916841f6, repo-manager commit 498682c). Nothing was retired. T04 now waits on decision 91b7c633 and a reviewed live rollout. After that, Repo Manager re-runs the Activity owner sync and closes RMGR-WP-0019-T03.

Retirement rollout and T04 verification, 2026-10-06

The founder resolved decision 91b7c633 (retire exactly the three projections) and approved the rollout. The founder ran the normal Helm upgrade to main-968a811 (revision 74; rollback revision 73, main-fad9b3f). API and MCP are Ready, health is ok on primary/railiance01, and schema b3c4d5e6f7a8 is unchanged; no migrations. The activity-core reconcile at commit 67a92d2ff8e033baf2c36998d24187fe83edec84 with expected_retirement_uuids set to the three UUIDs applied: 0 created, 3 retired (tombstoned with an @retired-20261006 slug; UUIDs and statuses kept), 0 refused, 0 tasks cancelled. All 7 bound Activity source files still match their digests. The four historical parents and 64 task UUIDs are present under their bound parents with unchanged fields. The Custodian retired parent and task are unchanged. Activity had 54 workplans and 288 tasks before and after. Evidence: activity stale retirement rollout. Repo Manager's re-run of the Activity owner sync (RMGR-WP-0019-T03) and ACTIVITY-WP-0045-T02 remain with their owners.