From b7b127406cf51d472eb94f3a74d18353770c6423 Mon Sep 17 00:00:00 2001 From: ogt Date: Tue, 14 Jul 2026 14:42:40 +0800 Subject: [PATCH] fix(agent): use indexed replay terminal joins --- .../services/awooop_ansible_audit_service.py | 11 +++++++---- .../awooop_ansible_check_mode_service.py | 18 +++++++++++++----- .../api/tests/test_ansible_verified_closure.py | 2 ++ .../tests/test_awooop_truth_chain_service.py | 2 ++ 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/apps/api/src/services/awooop_ansible_audit_service.py b/apps/api/src/services/awooop_ansible_audit_service.py index b28cdfdfd..76f781e1c 100644 --- a/apps/api/src/services/awooop_ansible_audit_service.py +++ b/apps/api/src/services/awooop_ansible_audit_service.py @@ -187,8 +187,13 @@ def verified_ansible_candidate_terminal_sql(candidate_alias: str) -> str: AND replay_check.status IN ('success', 'failed') AND replay_check.input ->> 'execution_mode' = 'stdin_boundary_check_mode_replay' - AND replay_check.input ->> 'replay_of_check_mode_op_id' - = failed_check.op_id::text + AND failed_check.op_id = CAST( + NULLIF( + replay_check.input + ->> 'replay_of_check_mode_op_id', + '' + ) AS uuid + ) JOIN automation_operation_log terminal ON terminal.parent_op_id = replay_check.op_id AND terminal.operation_type = 'ansible_execution_skipped' @@ -207,8 +212,6 @@ def verified_ansible_candidate_terminal_sql(candidate_alias: str) -> str: ) = __INCIDENT_ID__ AND replay_check.input ->> 'automation_run_id' = __AUTOMATION_RUN_ID__ - AND replay_check.input ->> 'replay_of_check_mode_op_id' - = failed_check.op_id::text AND coalesce( replay_check.incident_id::text, replay_check.input ->> 'incident_id' diff --git a/apps/api/src/services/awooop_ansible_check_mode_service.py b/apps/api/src/services/awooop_ansible_check_mode_service.py index a83fe1465..ff9b292b7 100644 --- a/apps/api/src/services/awooop_ansible_check_mode_service.py +++ b/apps/api/src/services/awooop_ansible_check_mode_service.py @@ -4031,8 +4031,12 @@ async def _load_missing_stdin_boundary_terminal_projection_rows( AND replay.input ->> 'automation_run_id' = terminal.input ->> 'automation_run_id' JOIN automation_operation_log failed_check - ON failed_check.op_id::text - = replay.input ->> 'replay_of_check_mode_op_id' + ON failed_check.op_id = CAST( + NULLIF( + replay.input ->> 'replay_of_check_mode_op_id', + '' + ) AS uuid + ) AND failed_check.operation_type = 'ansible_check_mode_executed' AND failed_check.status = 'failed' @@ -4341,9 +4345,13 @@ async def _verify_stdin_boundary_terminal_projection_readback( AND replay.input ->> 'execution_mode' = 'stdin_boundary_check_mode_replay' JOIN automation_operation_log failed_check - ON failed_check.op_id::text - = replay.input - ->> 'replay_of_check_mode_op_id' + ON failed_check.op_id = CAST( + NULLIF( + replay.input + ->> 'replay_of_check_mode_op_id', + '' + ) AS uuid + ) AND failed_check.operation_type = 'ansible_check_mode_executed' AND failed_check.status = 'failed' diff --git a/apps/api/tests/test_ansible_verified_closure.py b/apps/api/tests/test_ansible_verified_closure.py index afc14222f..34c8a324c 100644 --- a/apps/api/tests/test_ansible_verified_closure.py +++ b/apps/api/tests/test_ansible_verified_closure.py @@ -606,6 +606,8 @@ def test_terminal_candidate_contract_requires_verified_four_node_chain() -> None ) assert "replay_of_check_mode_op_id" in predicate assert "failed_check.parent_op_id = candidate.op_id" in predicate + assert "failed_check.op_id = CAST(" in predicate + assert predicate.count("failed_check.op_id::text") == 1 assert "verified_no_write_terminal" in predicate assert "repository_readback_verified" in predicate assert "{detail,execution_success}" in predicate diff --git a/apps/api/tests/test_awooop_truth_chain_service.py b/apps/api/tests/test_awooop_truth_chain_service.py index fbf23630e..9f28e2c56 100644 --- a/apps/api/tests/test_awooop_truth_chain_service.py +++ b/apps/api/tests/test_awooop_truth_chain_service.py @@ -2140,6 +2140,8 @@ def test_stdin_boundary_terminal_projection_closes_only_from_durable_receipts( assert "JOIN automation_operation_log failed_check" in source assert "candidate.op_id = replay.parent_op_id" in source assert "failed_check.parent_op_id = replay.parent_op_id" in source + assert "failed_check.op_id = CAST(" in source + assert source.count("failed_check.op_id::text") == 1 assert "replay_of_check_mode_op_id" in source assert "retry_of_check_mode_op_id" in source assert "TELEGRAM_RESULT_SENT" in verifier_source