Retire GET /workstreams/workplan-index with 410; railiance01 deploy runbook
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s

Return 410 Gone for legacy workplan-index route (replacement /workplans/index).
Add tests, update transition backlog, operator deploy evidence doc, and
STATE-WP-0070 progress notes.
This commit is contained in:
tegwick 2026-07-09 00:43:08 +02:00
parent 7e68f9e8e3
commit 14b7d8418d
7 changed files with 88 additions and 9 deletions

View file

@ -165,6 +165,20 @@ class TestWorkplanAliasesAndLegacyMeter:
}
assert items.get("event_subject:org.statehub.workstream.completed") is None
async def test_legacy_workplan_index_returns_410(self, client):
r = await client.get(
"/workstreams/workplan-index",
headers={"X-StateHub-Component": "old-index-client"},
)
assert r.status_code == 410
assert "retired" in r.json()["detail"]
assert r.headers["X-StateHub-Replacement"] == "/workplans/index"
summary = (await client.get("/legacy-meter/summary")).json()
item = _summary_by_key(summary)["rest_api:GET /workstreams/workplan-index"]
assert item["window"]["calls"] == 1
assert item["window"]["components"] == {"old-index-client": 1}
async def test_legacy_delete_workstream_returns_410(self, client):
await _create_domain(client)
topic = await _create_topic(client)

View file

@ -189,8 +189,12 @@ class TestWorkstreams:
async def test_workplan_index_route(self, client):
r = await client.get("/workstreams/workplan-index")
assert r.status_code == 410
assert r.headers["X-StateHub-Replacement"] == "/workplans/index"
r = await client.get("/workplans/index")
assert r.status_code == 200
assert "workstreams" in r.json()
assert "workplans" in r.json()
async def test_workplan_bindings_sync_populates_index(self, client, tmp_path):
await _create_domain(client)