feat(governance): surface km completion callback evidence
Some checks failed
CD Pipeline / tests (push) Successful in 1m10s
Code Review / ai-code-review (push) Successful in 12s
CD Pipeline / build-and-deploy (push) Successful in 4m19s
E2E Health Check / e2e-health (push) Failing after 34s
CD Pipeline / post-deploy-checks (push) Successful in 1m46s
Some checks failed
CD Pipeline / tests (push) Successful in 1m10s
Code Review / ai-code-review (push) Successful in 12s
CD Pipeline / build-and-deploy (push) Successful in 4m19s
E2E Health Check / e2e-health (push) Failing after 34s
CD Pipeline / post-deploy-checks (push) Successful in 1m46s
This commit is contained in:
@@ -421,6 +421,28 @@ def test_list_callback_replies_response_preserves_callback_evidence() -> None:
|
||||
"repair_state": "read_only_dry_run",
|
||||
"needs_human": True,
|
||||
},
|
||||
"km_stale_completion_summary": {
|
||||
"schema_version": (
|
||||
"km_stale_owner_review_completion_callback_summary_v1"
|
||||
),
|
||||
"project_id": "awoooi",
|
||||
"incident_id": "INC-20260513-79ED5E",
|
||||
"status": "matched_owner_review",
|
||||
"ready_count": 3,
|
||||
"blocked_count": 1,
|
||||
"completed_count": 2,
|
||||
"failed_count": 0,
|
||||
"batch_writes_allowed": False,
|
||||
"manual_review_required": True,
|
||||
"related_total": 1,
|
||||
"related_items": [
|
||||
{
|
||||
"entry_id": "km-1",
|
||||
"readiness": "ready",
|
||||
"next_action": "preview_stale_km_review_completion",
|
||||
}
|
||||
],
|
||||
},
|
||||
"run_detail_href": (
|
||||
"/awooop/runs/5c0306e0-591a-5445-9a33-80f499426b38"
|
||||
"?project_id=awoooi"
|
||||
@@ -438,9 +460,77 @@ def test_list_callback_replies_response_preserves_callback_evidence() -> None:
|
||||
assert dumped["items"][0]["awooop_status_chain"]["repair_state"] == (
|
||||
"read_only_dry_run"
|
||||
)
|
||||
assert dumped["items"][0]["km_stale_completion_summary"]["ready_count"] == 3
|
||||
assert dumped["items"][0]["km_stale_completion_summary"]["related_total"] == 1
|
||||
assert dumped["items"][0]["run_detail_href"].endswith("project_id=awoooi")
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_km_stale_completion_summary_matches_callback_incident(
|
||||
monkeypatch,
|
||||
) -> None:
|
||||
async def fake_query_km_stale_completion_queue(**kwargs):
|
||||
assert kwargs["project_id"] == "awoooi"
|
||||
assert kwargs["status_bucket"] == "all"
|
||||
assert kwargs["limit"] == 100
|
||||
return SimpleNamespace(
|
||||
project_id="awoooi",
|
||||
total=2,
|
||||
returned=2,
|
||||
pending_count=2,
|
||||
ready_count=1,
|
||||
blocked_count=1,
|
||||
completed_count=0,
|
||||
failed_count=0,
|
||||
writes_on_read=False,
|
||||
manual_review_required=True,
|
||||
batch_writes_allowed=False,
|
||||
items=[
|
||||
SimpleNamespace(
|
||||
entry_id="km-1",
|
||||
title="Bitan pharmacy status drift",
|
||||
dispatch_id="dispatch-1",
|
||||
governance_event_id="event-1",
|
||||
readiness="ready",
|
||||
workflow_stage="waiting_owner_review",
|
||||
next_action="preview_stale_km_review_completion",
|
||||
priority_tier="P0",
|
||||
recommended_completion_outcome="refresh_with_evidence",
|
||||
can_preview=True,
|
||||
related_incident_id="INC-20260513-79ED5E",
|
||||
),
|
||||
SimpleNamespace(
|
||||
entry_id="km-2",
|
||||
title="Other stale KM",
|
||||
related_incident_id="INC-20260513-OTHER",
|
||||
readiness="blocked",
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
monkeypatch.setattr(
|
||||
platform_operator_service,
|
||||
"query_km_stale_owner_review_completion_queue",
|
||||
fake_query_km_stale_completion_queue,
|
||||
)
|
||||
|
||||
summary = await platform_operator_service._fetch_km_stale_completion_summary_for_incident(
|
||||
project_id="awoooi",
|
||||
incident_id="INC-20260513-79ED5E",
|
||||
queue_cache={},
|
||||
)
|
||||
|
||||
assert summary["schema_version"] == (
|
||||
"km_stale_owner_review_completion_callback_summary_v1"
|
||||
)
|
||||
assert summary["status"] == "matched_owner_review"
|
||||
assert summary["ready_count"] == 1
|
||||
assert summary["blocked_count"] == 1
|
||||
assert summary["batch_writes_allowed"] is False
|
||||
assert summary["related_items"][0]["entry_id"] == "km-1"
|
||||
assert summary["related_items"][0]["can_preview"] is True
|
||||
|
||||
|
||||
def test_list_approvals_response_preserves_status_chain() -> None:
|
||||
run_id = UUID("5c0306e0-591a-5445-9a33-80f499426b38")
|
||||
response = ListApprovalsResponse.model_validate({
|
||||
|
||||
Reference in New Issue
Block a user