--- id: ACTIVITY-WP-0048 type: workplan title: "Route-switch and rollback receipts for the moved /execution surface (STATE-WP-0079-T04, STATE-WP-0098-T02)" domain: infotech repo: activity-core status: active owner: claude-activity-core topic_slug: activity-core created: "2026-10-19" updated: "2026-10-19" flavor: implementation related: [STATE-WP-0079, STATE-WP-0098, ACTIVITY-WP-0029] state_hub_workstream_id: "af8b55fe-1b69-5bfc-9d95-cc88b2de8463" --- Origin: State Hub messages 4427c6cb (STATE-WP-0079-T04 asks for the workplan that holds activity-core's receipts) and 13cff5ff (STATE-WP-0098-T02 asks about the `/workplan-queue` dashboard view), both dated 2026-10-13. Scope is only the part activity-core owns. That part is `GET /execution/semantics`, plus `GET /ops-runs` as the automation-history replacement for `GET /execution/launch-requests`. `GET /execution/workplan-stack` and `PATCH /execution/workplans/{id}/intent` are not activity-core's. The first belongs to the Repo Manager work index or the hub-core projection; for the second, edit the workplan file. activity-core's own `/execution` routes answer 410 with those pointers (ACTIVITY-WP-0029). `POST /execution/launch-requests` does not move: workplan ids are never queued in activity-core. ## Candidate read smoke ```task id: ACTIVITY-WP-0048-T01 status: todo priority: medium state_hub_task_id: "92d0af6a-217e-5382-9803-1dc9d90e48a6" ``` Run a read-only smoke against the production activity-core API. `GET /execution/semantics` returns 200 with the `replacements` map, and the State Hub 410 routes point to the same owners. `GET /ops-runs?limit=50` returns rows comparable on ids and counts with what the dashboard used `GET /execution/launch-requests` for. Record the commands and the result here. There are no writes. ## Route-switch receipt ```task id: ACTIVITY-WP-0048-T02 status: wait blocked_on: message-from:state-hub priority: medium state_hub_task_id: "02358c93-627a-5dcb-abbf-922a9ebf2263" ``` Wait: State Hub sets the switch window and gives metered acceptance under STATE-WP-0079-T04. The `/workplan-queue` page points its `/execution/semantics` read and its history read at activity-core behind a toggle. The other widgets go to repo-manager or hub-core. Record the switch time, the toggle state and the smoke result as the receipt. ## Rollback receipt ```task id: ACTIVITY-WP-0048-T03 status: wait blocked_on: message-from:state-hub priority: medium state_hub_task_id: "16a55060-8362-5667-ad43-a43bf2e82294" ``` Rollback flips the toggle back to the retained State Hub view, which stays unchanged. Rehearse it once in the switch window and record the receipt.