STATE-WP-0069: schedule weekly legacy-meter review monitoring
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 3s
Build and Publish Container Image / build-and-push (push) Successful in 36s

Add legacy_meter_weekly_review state-hub resolver query, weekly activity
definition (Mon 08:30 Berlin), Railiance runtime projection, and progress
sink posting for STATE-WP-0069 retirement gating.
This commit is contained in:
tegwick 2026-07-08 20:55:06 +02:00
parent bad91099e8
commit efa361541b
8 changed files with 267 additions and 1 deletions

View file

@ -137,6 +137,64 @@ def test_state_hub_progress_sink_posts_compact_probe_summary(monkeypatch) -> Non
assert "token=secret" not in serialized
def test_legacy_meter_weekly_review_sink_posts_progress(monkeypatch) -> None:
posts: list[dict[str, Any]] = []
def fake_get(url: str, **kwargs: Any) -> DummyResponse:
return DummyResponse([])
def fake_post(url: str, **kwargs: Any) -> DummyResponse:
posts.append({"url": url, **kwargs})
return DummyResponse({"id": "progress-legacy-meter-1"})
monkeypatch.setattr(httpx, "get", fake_get)
monkeypatch.setattr(httpx, "post", fake_post)
persist_ops_inventory_evidence(
{
"activity_id": "weekly-legacy-meter-review",
"run_id": "12345678-aaaa-bbbb-cccc-123456789abc",
"scheduled_for": "2026-07-08T06:30:00+00:00",
"version_used": 1,
"context_sources": [
{
"type": "state-hub",
"query": "legacy_meter_weekly_review",
"bind_to": "context.legacy_meter_weekly_review",
"params": {
"days": 7,
"evidence_sinks": [
{
"type": "state-hub-progress",
"state_hub_url": "http://state-hub.test",
"event_type": "legacy_meter_weekly_review",
"workplan_id": "923bb94a-d16c-422c-b81e-16328bd7b60c",
}
],
},
}
],
"context": {
"legacy_meter_weekly_review": {
"kind": "legacy_meter_weekly_review",
"interface_count": 12,
"retirement_candidate_count": 2,
"window_legacy_calls": 5,
"retirement_candidates": [],
"checks": {"has_retirement_candidates": True},
"overall_pass": True,
}
},
}
)
body = posts[0]["json"]
assert body["event_type"] == "legacy_meter_weekly_review"
assert "2 retirement candidate(s)" in body["summary"]
assert body["workplan_id"] == "923bb94a-d16c-422c-b81e-16328bd7b60c"
assert body["workstream_id"] == "923bb94a-d16c-422c-b81e-16328bd7b60c"
def test_state_hub_progress_prefers_workplan_id(monkeypatch) -> None:
posts: list[dict[str, Any]] = []