fix(agent): isolate closure receipt id binds

This commit is contained in:
ogt
2026-07-11 19:16:04 +08:00
parent a7f2684589
commit 9880da63fd
2 changed files with 33 additions and 5 deletions

View File

@@ -288,6 +288,29 @@ async def test_atomic_closure_rolls_back_when_bundle_readback_is_missing(
assert "UPDATE incidents incident" in atomic_statement
assert "WITH target_apply AS" in atomic_statement
assert "WHEN upper(incident.status::text) = 'CLOSED'" in atomic_statement
assert db.parameters[1]["apply_op_id_uuid"] == db.parameters[1]["apply_op_id"]
def test_uuid_lookup_and_json_text_receipt_binds_are_type_isolated() -> None:
mixed_apply_id_queries = (
service._read_verified_apply_closure_prerequisites,
service._read_incident_closure_readback,
service._commit_verified_incident_closure,
service._verify_retry_terminal_projection_readback,
)
for query_owner in mixed_apply_id_queries:
source = inspect.getsource(query_owner)
assert "CAST(:apply_op_id_uuid AS uuid)" in source
assert "CAST(:apply_op_id AS uuid)" not in source
assert '"apply_op_id_uuid": apply_op_id' in source
retry_source = inspect.getsource(
service._verify_retry_terminal_projection_readback
)
assert "CAST(:replay_op_id_uuid AS uuid)" in retry_source
assert "CAST(:replay_op_id AS uuid)" not in retry_source
assert '"replay_op_id_uuid": replay_op_id' in retry_source
def test_terminal_candidate_contract_requires_verified_four_node_chain() -> None: