fix T1+T4: wire rollback into pipeline; real Ollama telemetry in metrics

T1 (H7): casan-step.mjs now calls rollback-manager.sh checkpoint before
overwriting plan.md at attempt-2, writes tx-id to plan.checkpoint.txid
sidecar, and executes rollback on REJECTED verdict. rollback-transactions.jsonl
records a real cp restore command. Adversarial test: checkpoint exists,
real cp command recorded, plan hash matches pre-overwrite content.

T4 (H6): casan-harness.sh exports CASAN_STEP_NAME=$ACTION_NAME before
agent-metrics.sh so nested model calls (model-call.py) and the provider-
cost-lookup.py query share the same step label. metrics.jsonl now writes
cost_source=provider_telemetry instead of word_count_estimate when a real
Ollama call is made within the same step. Adversarial test: verified with
CASAN_STEP_NAME=t4-telemetry-test end-to-end.

adversarial-harness-tests.sh: 40 → 44 PASS / 0 FAIL (+3 T1, +1 T4)
security-gate.sh: PASS=10 FAIL=0 SKIP=0 (verified, local ornith:9b)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
thanhnv
2026-07-01 11:25:50 +09:00
co-authored by Claude Sonnet 4.6
parent f74a5b6e42
commit a8edbea534
18 changed files with 284 additions and 159 deletions
@@ -1,11 +1,11 @@
{"timestamp": "2026-07-01T02:01:47Z", "trace_id": "70570443-dcbb-4ab9-b8bb-a289a8ec8159", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "release-manager", "run_id": "adhoc-67539", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": false, "decision": "denied", "reason": "missing_idempotency_key"}
{"timestamp": "2026-07-01T02:01:47Z", "trace_id": "7f14dc67-a9cb-4319-9426-9bcdbd2a2b9c", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "release-manager", "run_id": "adhoc-67576", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "approved", "reason": "registered"}
{"timestamp": "2026-07-01T02:01:47Z", "trace_id": "57100327-59f7-446f-a816-37c30e937927", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "design-agent", "run_id": "adhoc-67601", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "denied", "reason": "unauthorized_agent"}
{"timestamp": "2026-07-01T02:01:53Z", "trace_id": "46af3713-8749-420b-ab91-fcfe62525621", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "design-agent", "run_id": "adhoc-69970", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "denied", "reason": "unauthorized_agent"}
{"timestamp": "2026-07-01T02:01:53Z", "trace_id": "8ed3296a-09fa-4fff-88f7-4826776d64cb", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "", "run_id": "adhoc-69989", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "denied", "reason": "missing_agent_identity"}
{"timestamp": "2026-07-01T02:01:53Z", "trace_id": "64a32c86-02b7-4cf6-bd94-5a8470091b77", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "release-manager", "run_id": "adhoc-70008", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "approved", "reason": "registered"}
{"timestamp": "2026-07-01T02:01:54Z", "trace_id": "fcae68a3-7bda-4ac5-b6ed-71042dd0dafb", "harness": "L5-tool-registry", "tool_id": "write_code", "agent": "design-agent", "run_id": "adhoc-70374", "owner": "engineering", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "denied", "reason": "unauthorized_agent"}
{"timestamp": "2026-07-01T02:01:55Z", "trace_id": "f601e745-2e16-4291-803d-946578e9f3bc", "harness": "L5-tool-registry", "tool_id": "write_code", "agent": "implement-agent", "run_id": "adhoc-70722", "owner": "engineering", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "approved", "reason": "registered"}
{"timestamp": "2026-07-01T02:01:57Z", "trace_id": "2c06a7a3-e6b2-4796-99e1-183cdbc8ee91", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "release-manager", "run_id": "adv-67821", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "approved", "reason": "registered"}
{"timestamp": "2026-07-01T02:01:58Z", "trace_id": "652ea22a-4b46-4cf9-81aa-1588854a7569", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "release-manager", "run_id": "adv-67821", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "approved", "reason": "registered"}
{"timestamp": "2026-07-01T02:01:58Z", "trace_id": "eb00313e-7c40-46ba-ae48-41d75587aac4", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "release-manager", "run_id": "adv-67821", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "denied", "reason": "rate_limit_exceeded(limit=2)"}
{"timestamp": "2026-07-01T02:23:41Z", "trace_id": "78b8f3e2-9c34-40c9-815f-cc6d667b8962", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "release-manager", "run_id": "adhoc-66281", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": false, "decision": "denied", "reason": "missing_idempotency_key"}
{"timestamp": "2026-07-01T02:23:41Z", "trace_id": "cb9c879f-3b54-4308-b7a9-6e9e17df393f", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "release-manager", "run_id": "adhoc-66302", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "approved", "reason": "registered"}
{"timestamp": "2026-07-01T02:23:41Z", "trace_id": "62b6e28f-4f45-4520-a869-083943c4c21f", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "design-agent", "run_id": "adhoc-66338", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "denied", "reason": "unauthorized_agent"}
{"timestamp": "2026-07-01T02:23:47Z", "trace_id": "93e105ef-6af4-4170-874a-5bffb0f86e85", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "design-agent", "run_id": "adhoc-68619", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "denied", "reason": "unauthorized_agent"}
{"timestamp": "2026-07-01T02:23:47Z", "trace_id": "b2be71d6-8032-473d-95c0-f2ef944d6212", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "", "run_id": "adhoc-68684", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "denied", "reason": "missing_agent_identity"}
{"timestamp": "2026-07-01T02:23:47Z", "trace_id": "16a35597-ccd8-49bd-8e48-c47ef68d2d3a", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "release-manager", "run_id": "adhoc-68714", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "approved", "reason": "registered"}
{"timestamp": "2026-07-01T02:23:48Z", "trace_id": "850822a9-d189-4d4b-ab70-3db194568797", "harness": "L5-tool-registry", "tool_id": "write_code", "agent": "design-agent", "run_id": "adhoc-69129", "owner": "engineering", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "denied", "reason": "unauthorized_agent"}
{"timestamp": "2026-07-01T02:23:49Z", "trace_id": "0461ed55-ec5f-458e-b43f-707cb246f2d5", "harness": "L5-tool-registry", "tool_id": "write_code", "agent": "implement-agent", "run_id": "adhoc-69467", "owner": "engineering", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "approved", "reason": "registered"}
{"timestamp": "2026-07-01T02:23:51Z", "trace_id": "00a374d2-dab2-43cc-bdfa-71a73b8e920d", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "release-manager", "run_id": "adv-66580", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "approved", "reason": "registered"}
{"timestamp": "2026-07-01T02:23:52Z", "trace_id": "a775ba64-e5f0-459c-9b36-5fd7d698e7f6", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "release-manager", "run_id": "adv-66580", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "approved", "reason": "registered"}
{"timestamp": "2026-07-01T02:23:52Z", "trace_id": "5d71fa2d-ce61-42f2-8b46-f8a27874b371", "harness": "L5-tool-registry", "tool_id": "deploy", "agent": "release-manager", "run_id": "adv-66580", "owner": "release-manager", "risk_level": "high", "side_effect": true, "idempotency_required": true, "idempotency_key_present": true, "decision": "denied", "reason": "rate_limit_exceeded(limit=2)"}