feat(governance): surface verification remediation queue
All checks were successful
Code Review / ai-code-review (push) Successful in 10s
CD Pipeline / tests (push) Successful in 1m0s
CD Pipeline / build-and-deploy (push) Successful in 3m25s
CD Pipeline / post-deploy-checks (push) Successful in 1m16s

This commit is contained in:
Your Name
2026-05-14 21:45:33 +08:00
parent f97127f704
commit aa63ae5eca
6 changed files with 326 additions and 3 deletions

View File

@@ -69,6 +69,16 @@ async def _low_volume_coverage(self): # noqa: ANN001
"by_verification_result": [],
"by_failure_class": [],
},
"remediation_queue": {
"schema_version": "adr100_remediation_queue_v1",
"source": "recent_non_success_read_model",
"total": 0,
"ready_for_ai": 0,
"needs_human": 0,
"items": [],
"by_status": [],
"by_action": [],
},
}
@@ -185,12 +195,25 @@ def test_verification_coverage_payload_flags_backlog():
assert payload["recent_unverified"][0]["incident_id"] == "INC-1"
assert payload["recent_non_success"][0]["failure_class"] == "unsupported_action_scheme"
assert payload["recent_non_success"][0]["next_step"] == "normalize_playbook_executor"
assert payload["recent_non_success"][0]["remediation_status"] == "ready_for_replay"
assert payload["recent_non_success"][0]["remediation_action"] == (
"replay_with_supported_executor"
)
assert payload["non_success_breakdown"]["by_failure_class"] == [
{"name": "unsupported_action_scheme", "count": 1},
]
assert payload["non_success_breakdown"]["by_verification_result"] == [
{"name": "degraded", "count": 1},
]
assert payload["non_success_breakdown"]["by_remediation_status"] == [
{"name": "ready_for_replay", "count": 1},
]
assert payload["remediation_queue"]["total"] == 1
assert payload["remediation_queue"]["ready_for_ai"] == 1
assert payload["remediation_queue"]["needs_human"] == 0
assert payload["remediation_queue"]["items"][0]["work_item_id"] == (
"verification:INC-2:are-2"
)
def test_verification_coverage_payload_skips_when_no_auto_repair():
@@ -210,3 +233,4 @@ def test_verification_coverage_payload_skips_when_no_auto_repair():
assert payload["status"] == "skipped_low_volume"
assert payload["reason"] == "no_auto_repair_executions_24h"
assert payload["evaluable"] is False
assert payload["remediation_queue"]["total"] == 0