These workplans exist only in the retired local hub. Their random pre-ADR-007 identifiers are refused by C-06 as stale references, so they cannot be registered. Deriving from the canonical record id takes no identity from anything: central does not hold them and the old ids die with the cache. Records central already holds were deliberately left untouched. Refs CUST-WP-0068-T06 Assistant: claude-code Assistant-Model: opus Assistant-Process: 2583210@bnt-lap001 Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
2.9 KiB
| id | type | title | domain | repo | status | owner | topic_slug | planning_priority | planning_order | created | updated | state_hub_workstream_id |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| STATE-WP-0075 | workplan | Workstream REST route 410 stranglers | infotech | state-hub | finished | codex | custodian | high | 75 | 2026-07-10 | 2026-07-10 | a7fc6116-6587-5c17-9a64-d47634aa6a59 |
STATE-WP-0075 — Workstream REST route 410 stranglers
Parent: STATE-WP-0070 T02 (phase-2 legacy retirement).
Handoff from: STATE-WP-0073 T04 (meter-cleared REST key retirement).
Baseline evidence: docs/evidence/legacy-meter-weekly-review-20260710.json
— phase-1 /workstreams/* keys at 0 calls (retirement candidates; ~2/7
consecutive 8h zero windows at capture time). Operator approved early 410 rollout
after caller remediation (STATE-WP-0072) drove hot-key counts to zero.
Goal
Convert remaining phase-1 and phase-2 /workstreams REST aliases to 410 Gone
stranglers that still meter final legacy usage, matching the existing
DELETE /workstreams/{id} and GET /workstreams/workplan-index pattern.
Preferred /workplans/* routes remain the only functional surface.
Task: Shared retire_legacy_route helper
id: STATE-WP-0075-T01
status: done
priority: high
state_hub_task_id: "cce857a7-cdec-5ceb-a8e4-b0c54498fe41"
- Add
retire_legacy_route()toapi/services/legacy_compat.py— meter usage, set deprecation headers, raiseHTTPException(410). - Refactor existing 410 routes (
workplan-index,DELETE) to use the helper.
Done when all 410 stranglers share one code path for metering and headers.
Task: Phase-1 workstream CRUD stranglers
id: STATE-WP-0075-T02
status: done
priority: high
state_hub_task_id: "819494cf-5539-5c2e-897b-9650835c6aee"
Return 410 Gone on:
GET /workstreams/POST /workstreams/GET /workstreams/{workstream_id}PATCH /workstreams/{workstream_id}
Keep /workplans/* handlers unchanged.
Task: Phase-2 dependency and execution stranglers
id: STATE-WP-0075-T03
status: done
priority: high
state_hub_task_id: "cac01081-f78e-5d55-90d1-5b486fb9b9f6"
Return 410 Gone on:
POST/GET/DELETE /workstreams/{workstream_id}/dependencies/…PATCH /execution/workstreams/{workstream_id}/intent
Task: Tests, backlog, and parent handoff
id: STATE-WP-0075-T04
status: done
priority: high
state_hub_task_id: "df8e19fb-93ad-5b00-ab62-431d27d9c8a0"
- Update
tests/test_legacy_meter.pyandtests/test_routers_core.pyfor 410 expectations on all retired keys. - Mark phase 1–2 REST keys retired in
docs/workplan-terminology-legacy-retirement-backlog.md. - Run
pytest tests/test_legacy_meter.py tests/test_routers_core.py. - Register via
statehub fix-consistency --repo state-hub. - Hand off completion to
STATE-WP-0070T02 and closeSTATE-WP-0073T04.
Done when tests pass, workplan registered, and parent tasks reflect retirement.