feat(api): expose log consumer readback
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 29s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 29s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
This commit is contained in:
@@ -54,6 +54,101 @@ def _assert_log_controlled_writeback_executor(payload: dict):
|
||||
assert boundaries["github_api_used"] is False
|
||||
|
||||
|
||||
def _log_controlled_writeback_consumer_readback() -> dict:
|
||||
targets = ("km", "rag", "playbook", "mcp", "verifier", "ai_agent")
|
||||
bindings = [
|
||||
{
|
||||
"consumer_binding_id": f"consumer::receipt::{target}",
|
||||
"dispatch_receipt_id": f"receipt::{target}",
|
||||
"ledger_op_id": f"op::{target}",
|
||||
"target": target,
|
||||
"target_surface": f"{target}_metadata_feedback_binding",
|
||||
"consumer_surface": f"{target}_consumer_context",
|
||||
"status": "ready_for_consumer_context",
|
||||
"raw_payload_included": False,
|
||||
"post_apply_verifier_refs": [f"verifier://{target}"],
|
||||
"target_write_performed": False,
|
||||
}
|
||||
for target in targets
|
||||
]
|
||||
return {
|
||||
"schema_version": "ai_agent_log_controlled_writeback_consumer_readback_v1",
|
||||
"priority": "P1-LOG-KM-RAG-MCP-PLAYBOOK",
|
||||
"scope": "ai_agent_log_controlled_writeback_consumer_readback",
|
||||
"status": "controlled_writeback_consumer_readback_ready",
|
||||
"readback": {
|
||||
"workplan_id": "P1-LOG-CONTROLLED-WRITEBACK-CONSUMER-READBACK",
|
||||
"source_operation_type": "log_controlled_writeback_dispatched",
|
||||
"source_executor_route": "ai_agent_metadata_writeback_executor",
|
||||
},
|
||||
"controlled_consume": {
|
||||
"controlled_consume_allowed": True,
|
||||
"runtime_target_write_performed": False,
|
||||
},
|
||||
"consumer_bindings": bindings,
|
||||
"target_rollups": [
|
||||
{
|
||||
"target": target,
|
||||
"consumer_surface": f"{target}_consumer_context",
|
||||
"binding_count": 1,
|
||||
"ready_binding_count": 1,
|
||||
"metadata_only": True,
|
||||
}
|
||||
for target in targets
|
||||
],
|
||||
"rollups": {
|
||||
"target_count": 6,
|
||||
"dispatch_ledger_row_count": 6,
|
||||
"consumer_binding_count": 6,
|
||||
"ready_consumer_binding_count": 6,
|
||||
"ready_target_count": 6,
|
||||
"metadata_only_receipt_count": 6,
|
||||
"post_apply_verifier_ref_count": 6,
|
||||
"controlled_consumer_readback_ready": True,
|
||||
"km_consumer_binding_count": 1,
|
||||
"rag_consumer_binding_count": 1,
|
||||
"playbook_consumer_binding_count": 1,
|
||||
"mcp_consumer_binding_count": 1,
|
||||
"verifier_consumer_binding_count": 1,
|
||||
"ai_agent_consumer_binding_count": 1,
|
||||
"runtime_target_write_performed": False,
|
||||
},
|
||||
"active_blockers": [],
|
||||
"operation_boundaries": {
|
||||
"consumer_readback_only": True,
|
||||
"metadata_ledger_read_performed": True,
|
||||
"km_write_performed": False,
|
||||
"rag_index_write_performed": False,
|
||||
"playbook_trust_write_performed": False,
|
||||
"mcp_tool_call_performed": False,
|
||||
"agent_runtime_action_performed": False,
|
||||
"telegram_send_performed": False,
|
||||
"workflow_trigger_performed": False,
|
||||
"raw_log_payload_persisted": False,
|
||||
"secret_value_collection_allowed": False,
|
||||
"github_api_used": False,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def _assert_log_controlled_writeback_consumer(payload: dict):
|
||||
assert payload["schema_version"] == (
|
||||
"ai_agent_log_controlled_writeback_consumer_readback_v1"
|
||||
)
|
||||
assert payload["status"] == "controlled_writeback_consumer_readback_ready"
|
||||
assert payload["active_blockers"] == []
|
||||
assert payload["controlled_consume"]["controlled_consume_allowed"] is True
|
||||
assert payload["controlled_consume"]["runtime_target_write_performed"] is False
|
||||
assert payload["rollups"]["consumer_binding_count"] == 6
|
||||
assert payload["rollups"]["ready_consumer_binding_count"] == 6
|
||||
assert payload["rollups"]["ready_target_count"] == 6
|
||||
assert payload["rollups"]["controlled_consumer_readback_ready"] is True
|
||||
assert payload["operation_boundaries"]["consumer_readback_only"] is True
|
||||
assert payload["operation_boundaries"]["mcp_tool_call_performed"] is False
|
||||
assert payload["operation_boundaries"]["raw_log_payload_persisted"] is False
|
||||
assert payload["operation_boundaries"]["github_api_used"] is False
|
||||
|
||||
|
||||
def test_runtime_receipt_auxiliary_sql_keeps_source_family_counts_schema_safe():
|
||||
from src.services.ai_agent_autonomous_runtime_control import (
|
||||
_RUNTIME_OPERATION_COUNTS_SQL,
|
||||
@@ -134,6 +229,11 @@ def test_ai_agent_autonomous_runtime_control_exposes_reports_and_executor_receip
|
||||
_assert_log_controlled_writeback_executor(
|
||||
data["runtime_receipt_readback"]["log_controlled_writeback_executor"]
|
||||
)
|
||||
consumer = data["runtime_receipt_readback"]["log_controlled_writeback_consumer"]
|
||||
assert consumer["schema_version"] == (
|
||||
"ai_agent_log_controlled_writeback_consumer_readback_v1"
|
||||
)
|
||||
assert consumer["status"] == "blocked_waiting_controlled_writeback_consumer_receipts"
|
||||
assert data["rollups"]["live_log_controlled_writeback_executor_batch_count"] == 6
|
||||
assert data["rollups"]["live_log_controlled_writeback_executor_ready_batch_count"] == 6
|
||||
assert data["rollups"]["live_log_controlled_writeback_executor_ready_count"] == 1
|
||||
@@ -141,6 +241,9 @@ def test_ai_agent_autonomous_runtime_control_exposes_reports_and_executor_receip
|
||||
assert data["rollups"]["live_log_controlled_writeback_next_action_queue_count"] == 6
|
||||
assert data["rollups"]["live_log_controlled_writeback_dispatch_count"] == 0
|
||||
assert data["rollups"]["live_log_controlled_writeback_recent_dispatch_count"] == 0
|
||||
assert data["rollups"]["live_log_controlled_writeback_consumer_binding_count"] == 0
|
||||
assert data["rollups"]["live_log_controlled_writeback_consumer_ready_count"] == 0
|
||||
assert data["rollups"]["live_log_controlled_writeback_consumer_blocker_count"] == 1
|
||||
assert data["runtime_receipt_readback"]["learning_loop"]["status"] == "in_progress"
|
||||
assert (
|
||||
data["runtime_receipt_readback"]["learning_loop"]["rollups"][
|
||||
@@ -398,6 +501,7 @@ def test_runtime_receipt_readback_summarizes_live_executor_closure_rows():
|
||||
grouped_alert_event_count_rows=[
|
||||
{"status": "grouped_child_alert", "total": 4, "recent": 1},
|
||||
],
|
||||
log_controlled_writeback_consumer=_log_controlled_writeback_consumer_readback(),
|
||||
)
|
||||
|
||||
assert readback["db_read_status"] == "ok"
|
||||
@@ -533,6 +637,9 @@ def test_runtime_receipt_readback_summarizes_live_executor_closure_rows():
|
||||
_assert_log_controlled_writeback_executor(
|
||||
readback["log_controlled_writeback_executor"]
|
||||
)
|
||||
_assert_log_controlled_writeback_consumer(
|
||||
readback["log_controlled_writeback_consumer"]
|
||||
)
|
||||
decision_wiring = readback["agent_decision_wiring"]
|
||||
assert decision_wiring["schema_version"] == "ai_agent_decision_wiring_readback_v1"
|
||||
assert decision_wiring["status"] == "completed"
|
||||
@@ -642,6 +749,7 @@ def test_runtime_receipt_readback_summarizes_live_executor_closure_rows():
|
||||
"P1-C-learning-loop",
|
||||
"P1-D-alert-noise-reduction",
|
||||
"P1-E-log-controlled-writeback-executor",
|
||||
"P1-F-log-controlled-writeback-consumer",
|
||||
"P2-A-ui-ux-productization",
|
||||
"P2-B-multi-product-expansion",
|
||||
]
|
||||
@@ -656,13 +764,16 @@ def test_runtime_receipt_readback_summarizes_live_executor_closure_rows():
|
||||
assert progress["ordered_items"][9]["remaining_executor_batch_count"] == 0
|
||||
assert progress["ordered_items"][9]["active_blocker_count"] == 0
|
||||
assert progress["ordered_items"][10]["status"] == "completed"
|
||||
assert progress["ordered_items"][10]["remaining_ui_surface_count"] == 0
|
||||
assert progress["ordered_items"][10]["remaining_consumer_binding_count"] == 0
|
||||
assert progress["ordered_items"][10]["active_blocker_count"] == 0
|
||||
assert progress["ordered_items"][11]["status"] == "completed"
|
||||
assert progress["ordered_items"][11]["remaining_product_scope_count"] == 0
|
||||
assert progress["ordered_items"][11]["remaining_ui_surface_count"] == 0
|
||||
assert progress["ordered_items"][12]["status"] == "completed"
|
||||
assert progress["ordered_items"][12]["remaining_product_scope_count"] == 0
|
||||
assert progress["source_family_items"]
|
||||
assert {item["status"] for item in progress["source_family_items"]} == {"completed"}
|
||||
assert progress["rollups"]["source_family_work_item_count"] == 10
|
||||
assert progress["rollups"]["completed_count"] == 22
|
||||
assert progress["rollups"]["completed_count"] == 23
|
||||
assert progress["rollups"]["pending_count"] == 0
|
||||
|
||||
|
||||
@@ -830,6 +941,7 @@ def test_runtime_receipt_work_items_use_learning_receipts_without_latest_telegra
|
||||
grouped_alert_event_count_rows=[
|
||||
{"status": "grouped_child_alert", "total": 4, "recent": 1},
|
||||
],
|
||||
log_controlled_writeback_consumer=_log_controlled_writeback_consumer_readback(),
|
||||
)
|
||||
|
||||
assert readback["latest_flow_closure"]["closed"] is False
|
||||
@@ -848,10 +960,11 @@ def test_runtime_receipt_work_items_use_learning_receipts_without_latest_telegra
|
||||
assert statuses["P1-C-learning-loop"] == "completed"
|
||||
assert statuses["P1-D-alert-noise-reduction"] == "completed"
|
||||
assert statuses["P1-E-log-controlled-writeback-executor"] == "completed"
|
||||
assert statuses["P1-F-log-controlled-writeback-consumer"] == "completed"
|
||||
assert statuses["P2-A-ui-ux-productization"] == "completed"
|
||||
assert statuses["P2-B-multi-product-expansion"] == "completed"
|
||||
assert {item["status"] for item in progress["source_family_items"]} == {"completed"}
|
||||
assert progress["rollups"]["completed_count"] == 22
|
||||
assert progress["rollups"]["completed_count"] == 23
|
||||
assert progress["rollups"]["pending_count"] == 0
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user