fix(sre): require verified learning closure
This commit is contained in:
@@ -46,7 +46,9 @@ def _payload(
|
||||
"rollups": {
|
||||
"telegram_alert_learning_context_post_apply_verifier_ready": True,
|
||||
"verified_context_receipt_count": 36,
|
||||
"target_count": 6,
|
||||
"verified_target_count": 6,
|
||||
"verified_target_context_write_count": 6,
|
||||
"verified_ai_agent_context_receipt_count": 6,
|
||||
},
|
||||
}
|
||||
@@ -367,7 +369,7 @@ def test_telegram_alert_monitoring_coverage_readback_surfaces_live_gaps():
|
||||
matrix = {item["surface_id"]: item for item in payload["coverage_matrix"]}
|
||||
assert matrix["telegram_gateway_outbound_mirror"]["gap_count"] == 0
|
||||
assert matrix["telegram_alert_ai_loop_context_verifier"]["status"] == (
|
||||
"verified_context_ready"
|
||||
"verified_durable_context_ready"
|
||||
)
|
||||
assert matrix["monitoring_inventory_static_scope"]["gap_count"] == 60
|
||||
assert payload["operation_boundaries"]["telegram_send_performed"] is False
|
||||
@@ -563,7 +565,7 @@ def test_telegram_alert_monitoring_coverage_blocks_partial_surface_contracts():
|
||||
]
|
||||
|
||||
|
||||
def test_telegram_alert_monitoring_coverage_uses_consumer_context_fallback():
|
||||
def test_telegram_alert_monitoring_coverage_rejects_unverified_consumer_context():
|
||||
payload = _payload(
|
||||
post_apply_verifier={
|
||||
"schema_version": "telegram_alert_learning_context_post_apply_verifier_v1",
|
||||
@@ -571,7 +573,9 @@ def test_telegram_alert_monitoring_coverage_uses_consumer_context_fallback():
|
||||
"rollups": {
|
||||
"telegram_alert_learning_context_post_apply_verifier_ready": False,
|
||||
"verified_context_receipt_count": 0,
|
||||
"target_count": 6,
|
||||
"verified_target_count": 0,
|
||||
"verified_target_context_write_count": 0,
|
||||
"verified_ai_agent_context_receipt_count": 0,
|
||||
},
|
||||
},
|
||||
@@ -588,61 +592,64 @@ def test_telegram_alert_monitoring_coverage_uses_consumer_context_fallback():
|
||||
|
||||
summary = payload["summary"]
|
||||
assert summary["ai_alert_card_db_readback_ok"] is False
|
||||
assert summary["ai_loop_context_ready"] is True
|
||||
assert summary["ai_loop_context_source"] == "log_controlled_writeback_consumer"
|
||||
assert summary["ai_loop_context_fallback_used"] is True
|
||||
assert summary["ai_loop_context_ready"] is False
|
||||
assert summary["durable_learning_writeback_ready"] is False
|
||||
assert summary["ai_loop_context_source"] == (
|
||||
"unverified_log_controlled_writeback_consumer"
|
||||
)
|
||||
assert summary["ai_loop_context_fallback_used"] is False
|
||||
assert summary["ai_loop_context_receipt_count"] == 6
|
||||
assert summary["ai_loop_ai_agent_context_receipt_count"] == 1
|
||||
assert summary["km_rag_mcp_playbook_ai_agent_context_ready"] is True
|
||||
assert summary["km_rag_mcp_playbook_ai_agent_context_ready"] is False
|
||||
assert (
|
||||
summary["km_rag_mcp_playbook_ai_agent_context_source"]
|
||||
== "log_controlled_writeback_consumer"
|
||||
== "unverified_log_controlled_writeback_consumer"
|
||||
)
|
||||
assert summary["effective_ai_alert_context_receipt_total"] == 6
|
||||
assert summary["effective_ai_alert_context_ready_total"] == 6
|
||||
assert summary["effective_ai_alert_context_ready_total"] == 0
|
||||
assert summary["log_controlled_consumer_readback_ready"] is True
|
||||
assert summary["telegram_monitoring_audit_completion_percent"] == 81.8
|
||||
assert summary["telegram_monitoring_audit_completion_percent"] < 100.0
|
||||
|
||||
assert (
|
||||
payload["operator_answer"][
|
||||
"all_verified_ai_alert_context_receipts_reusable_by_ai_agent"
|
||||
]
|
||||
is True
|
||||
is False
|
||||
)
|
||||
assert (
|
||||
payload["operator_answer"]["km_rag_mcp_playbook_ai_agent_context_ready"]
|
||||
is True
|
||||
is False
|
||||
)
|
||||
assert (
|
||||
payload["operator_answer"]["km_rag_mcp_playbook_ai_agent_context_source"]
|
||||
== "log_controlled_writeback_consumer"
|
||||
== "unverified_log_controlled_writeback_consumer"
|
||||
)
|
||||
assert (
|
||||
"awooop_ai_alert_card_delivery_db_readback_unavailable"
|
||||
in payload["active_blockers"]
|
||||
)
|
||||
assert "awooop_ai_alert_card_delivery_receipts_missing" not in payload[
|
||||
assert "awooop_ai_alert_card_delivery_receipts_missing" in payload[
|
||||
"active_blockers"
|
||||
]
|
||||
assert "awooop_ai_alert_card_learning_writeback_refs_missing" not in payload[
|
||||
assert "awooop_ai_alert_card_learning_writeback_refs_missing" in payload[
|
||||
"active_blockers"
|
||||
]
|
||||
assert "telegram_alert_ai_loop_post_apply_verifier_not_ready" not in payload[
|
||||
assert "telegram_alert_ai_loop_post_apply_verifier_not_ready" in payload[
|
||||
"active_blockers"
|
||||
]
|
||||
|
||||
pipeline = {stage["stage_id"]: stage for stage in payload["alert_receipt_pipeline"]}
|
||||
assert pipeline["km_rag_mcp_playbook_ai_agent_learning_refs"]["ready"] is True
|
||||
assert pipeline["km_rag_mcp_playbook_ai_agent_learning_refs"]["ready"] is False
|
||||
matrix = {item["surface_id"]: item for item in payload["coverage_matrix"]}
|
||||
assert matrix["telegram_alert_ai_loop_context_verifier"]["status"] == (
|
||||
"consumer_context_fallback_ready"
|
||||
"verifier_not_ready"
|
||||
)
|
||||
assert matrix["telegram_alert_ai_loop_context_verifier"][
|
||||
"ai_loop_context_source"
|
||||
] == "log_controlled_writeback_consumer"
|
||||
] == "unverified_log_controlled_writeback_consumer"
|
||||
|
||||
|
||||
def test_telegram_alert_monitoring_coverage_uses_ai_alert_card_learning_refs_fallback():
|
||||
def test_telegram_alert_monitoring_coverage_rejects_unverified_ai_alert_refs():
|
||||
payload = _payload(
|
||||
post_apply_verifier={
|
||||
"schema_version": "telegram_alert_learning_context_post_apply_verifier_v1",
|
||||
@@ -650,7 +657,9 @@ def test_telegram_alert_monitoring_coverage_uses_ai_alert_card_learning_refs_fal
|
||||
"rollups": {
|
||||
"telegram_alert_learning_context_post_apply_verifier_ready": False,
|
||||
"verified_context_receipt_count": 0,
|
||||
"target_count": 0,
|
||||
"verified_target_count": 0,
|
||||
"verified_target_context_write_count": 0,
|
||||
"verified_ai_agent_context_receipt_count": 0,
|
||||
},
|
||||
},
|
||||
@@ -680,20 +689,108 @@ def test_telegram_alert_monitoring_coverage_uses_ai_alert_card_learning_refs_fal
|
||||
)
|
||||
|
||||
summary = payload["summary"]
|
||||
assert payload["status"] == "telegram_alert_monitoring_coverage_ready"
|
||||
assert summary["ai_loop_context_ready"] is True
|
||||
assert summary["ai_loop_context_source"] == "ai_alert_card_learning_writeback_refs"
|
||||
assert summary["ai_loop_context_fallback_used"] is True
|
||||
assert payload["status"] == (
|
||||
"blocked_telegram_alert_monitoring_coverage_gaps_present"
|
||||
)
|
||||
assert summary["ai_loop_context_ready"] is False
|
||||
assert summary["ai_loop_context_source"] == (
|
||||
"unverified_ai_alert_card_learning_writeback_refs"
|
||||
)
|
||||
assert summary["ai_loop_context_fallback_used"] is False
|
||||
assert summary["effective_ai_alert_context_receipt_total"] == 444
|
||||
assert summary["effective_ai_alert_context_ready_total"] == 444
|
||||
assert summary["telegram_monitoring_audit_completion_percent"] == 100.0
|
||||
assert summary["telegram_monitoring_audit_completion_percent"] < 100.0
|
||||
assert "telegram_alert_ai_loop_post_apply_verifier_not_ready" in payload[
|
||||
"active_blockers"
|
||||
]
|
||||
assert (
|
||||
payload["operator_answer"]["km_rag_mcp_playbook_ai_agent_context_source"]
|
||||
== "unverified_ai_alert_card_learning_writeback_refs"
|
||||
)
|
||||
|
||||
|
||||
def test_telegram_alert_monitoring_coverage_requires_durable_target_writes():
|
||||
payload = _payload(
|
||||
post_apply_verifier={
|
||||
"schema_version": (
|
||||
"telegram_alert_learning_context_post_apply_verifier_v1"
|
||||
),
|
||||
"status": "telegram_alert_learning_context_post_apply_verified",
|
||||
"rollups": {
|
||||
"telegram_alert_learning_context_post_apply_verifier_ready": True,
|
||||
"verified_context_receipt_count": 6,
|
||||
"target_count": 6,
|
||||
"verified_target_count": 6,
|
||||
"verified_target_context_write_count": 0,
|
||||
"verified_ai_agent_context_receipt_count": 1,
|
||||
},
|
||||
},
|
||||
monitoring_live_receipt_apply_readback=(
|
||||
_metadata_live_receipt_apply_readback()
|
||||
),
|
||||
)
|
||||
|
||||
summary = payload["summary"]
|
||||
assert payload["status"] == (
|
||||
"blocked_telegram_alert_monitoring_coverage_gaps_present"
|
||||
)
|
||||
assert summary["ai_loop_context_ready"] is False
|
||||
assert summary["durable_learning_writeback_ready"] is False
|
||||
assert summary["verified_target_context_write_count"] == 0
|
||||
assert summary["ai_loop_context_source"] == (
|
||||
"post_apply_verifier_without_durable_target_writes"
|
||||
)
|
||||
assert (
|
||||
"telegram_alert_ai_loop_durable_learning_writeback_not_verified"
|
||||
in payload["active_blockers"]
|
||||
)
|
||||
assert "telegram_alert_ai_loop_post_apply_verifier_not_ready" not in payload[
|
||||
"active_blockers"
|
||||
]
|
||||
assert payload["active_blockers"] == []
|
||||
queue = {item["blocker"]: item for item in payload["ai_controlled_gap_queue"]}
|
||||
candidate = queue[
|
||||
"telegram_alert_ai_loop_durable_learning_writeback_not_verified"
|
||||
]
|
||||
assert candidate["risk_level"] == "medium"
|
||||
assert candidate["ai_controlled_execution_allowed"] is True
|
||||
assert candidate["critical_break_glass_required"] is False
|
||||
assert candidate["executor_route"] == "ai_agent_metadata_writeback_executor"
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("target_count", "verified_target_count", "verified_write_count"),
|
||||
((5, 5, 5), (6, 6, 7)),
|
||||
)
|
||||
def test_telegram_alert_monitoring_coverage_requires_exact_six_target_writes(
|
||||
target_count: int,
|
||||
verified_target_count: int,
|
||||
verified_write_count: int,
|
||||
):
|
||||
payload = _payload(
|
||||
post_apply_verifier={
|
||||
"schema_version": (
|
||||
"telegram_alert_learning_context_post_apply_verifier_v1"
|
||||
),
|
||||
"status": "telegram_alert_learning_context_post_apply_verified",
|
||||
"rollups": {
|
||||
"telegram_alert_learning_context_post_apply_verifier_ready": True,
|
||||
"verified_context_receipt_count": verified_target_count,
|
||||
"target_count": target_count,
|
||||
"verified_target_count": verified_target_count,
|
||||
"verified_target_context_write_count": verified_write_count,
|
||||
"verified_ai_agent_context_receipt_count": 1,
|
||||
},
|
||||
},
|
||||
monitoring_live_receipt_apply_readback=(
|
||||
_metadata_live_receipt_apply_readback()
|
||||
),
|
||||
)
|
||||
|
||||
assert payload["summary"]["durable_learning_writeback_ready"] is False
|
||||
assert payload["operator_answer"]["durable_learning_writeback_verified"] is False
|
||||
assert (
|
||||
payload["operator_answer"]["km_rag_mcp_playbook_ai_agent_context_source"]
|
||||
== "ai_alert_card_learning_writeback_refs"
|
||||
"telegram_alert_ai_loop_durable_learning_writeback_not_verified"
|
||||
in payload["active_blockers"]
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user