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,9 +1,9 @@
{"timestamp":"2026-07-01T02:01:41Z","trace_id":"3472b6af-6a0d-4dc6-aac3-acb6972e6a45","harness":"H5-governance","action":"deploy","actor":"developer","risk_level":"high","decision":"denied","approval_status":"approval_required","approver":"","input_hash":"3c1cf354bd8e23e98738dd97e726a7c751cf9c7574454d52b9698bfbb9000bff","output_hash":"3c1cf354bd8e23e98738dd97e726a7c751cf9c7574454d52b9698bfbb9000bff","previous_record_hash":"","record_hash":"9fc91a1e6f8242fcc0014cdec58e7245a7f5da9e8e6064ee4395767b7bc978a4"}
{"timestamp":"2026-07-01T02:01:42Z","trace_id":"54beb0b8-5cf5-4529-97d4-c68906a4c5c8","harness":"H5-governance","action":"deploy","actor":"developer","risk_level":"high","decision":"approved","approval_status":"human_approved","approver":"architect@example.local","input_hash":"3c1cf354bd8e23e98738dd97e726a7c751cf9c7574454d52b9698bfbb9000bff","output_hash":"3c1cf354bd8e23e98738dd97e726a7c751cf9c7574454d52b9698bfbb9000bff","previous_record_hash":"9fc91a1e6f8242fcc0014cdec58e7245a7f5da9e8e6064ee4395767b7bc978a4","record_hash":"26cff3a8f400638509659e1a3f45e1ac2a01cda53e84bec1414e57c192c8f051"}
{"timestamp":"2026-07-01T02:01:44Z","trace_id":"3cf5eadd-da0b-439d-bc84-c170f32a50b8","harness":"H5-governance","action":"agent_step","actor":"developer","risk_level":"low","decision":"approved","approval_status":"auto_approved","approver":"","input_hash":"0649852ef55d103b9b1134daf5324e92a3e2254386dc137787ca9432b2e4b9bf","output_hash":"0649852ef55d103b9b1134daf5324e92a3e2254386dc137787ca9432b2e4b9bf","previous_record_hash":"26cff3a8f400638509659e1a3f45e1ac2a01cda53e84bec1414e57c192c8f051","record_hash":"2d10d6d0521d6e1994662831c926941ea3190783f903b57e7621770e665475de"}
{"timestamp":"2026-07-01T02:01:46Z","trace_id":"49118749-d88b-450a-b418-9c98f63bea66","harness":"H5-governance","action":"agent_step","actor":"developer","risk_level":"low","decision":"approved","approval_status":"auto_approved","approver":"","input_hash":"0649852ef55d103b9b1134daf5324e92a3e2254386dc137787ca9432b2e4b9bf","output_hash":"0649852ef55d103b9b1134daf5324e92a3e2254386dc137787ca9432b2e4b9bf","previous_record_hash":"2d10d6d0521d6e1994662831c926941ea3190783f903b57e7621770e665475de","record_hash":"91b48a6a85181617c399a56efa04266fb0bb6f1268fbc8dc0fc13d06d40edf0f"}
{"timestamp":"2026-07-01T02:01:52Z","trace_id":"3bc8b340-0e70-4719-86d6-7473a10744c6","harness":"H5-governance","action":"deploy","actor":"alice","risk_level":"high","decision":"denied","approval_status":"separation_of_duties_violation","approver":"alice","input_hash":"ec9c2145d75be1bf0080711b5bd106465a8307147205ea249bfa1faa0bf05bbb","output_hash":"ec9c2145d75be1bf0080711b5bd106465a8307147205ea249bfa1faa0bf05bbb","previous_record_hash":"91b48a6a85181617c399a56efa04266fb0bb6f1268fbc8dc0fc13d06d40edf0f","record_hash":"1c70b776153081cd0590d2393f8fc2d81bba375efe7460cc7f57047437a382da"}
{"timestamp":"2026-07-01T02:01:52Z","trace_id":"368dd45d-2363-4014-a0d6-57b2c7e72e7d","harness":"H5-governance","action":"deploy","actor":"alice","risk_level":"high","decision":"approved","approval_status":"human_approved","approver":"bob","input_hash":"ec9c2145d75be1bf0080711b5bd106465a8307147205ea249bfa1faa0bf05bbb","output_hash":"ec9c2145d75be1bf0080711b5bd106465a8307147205ea249bfa1faa0bf05bbb","previous_record_hash":"1c70b776153081cd0590d2393f8fc2d81bba375efe7460cc7f57047437a382da","record_hash":"687804c99f9ef1f9602872ed76c4d83dc6e260d4b290a3af773c22f16f675aff"}
{"timestamp":"2026-07-01T02:01:54Z","trace_id":"77ba1a65-4f55-4ef2-aa7f-7de8c58a777b","harness":"H5-governance","action":"write_code","actor":"developer","risk_level":"medium","decision":"approved","approval_status":"policy_auto_approved_with_audit","approver":"","input_hash":"d62056ac97257e952127e4ee599f12b633725abe0c5a7c8fbaa82d6c29561190","output_hash":"d62056ac97257e952127e4ee599f12b633725abe0c5a7c8fbaa82d6c29561190","previous_record_hash":"687804c99f9ef1f9602872ed76c4d83dc6e260d4b290a3af773c22f16f675aff","record_hash":"105ebba853ce36c17ab93634efa4f671e30c2da9c60e2243b95fa79e92e84bef"}
{"timestamp":"2026-07-01T02:01:55Z","trace_id":"b0a4e69b-1486-42b1-915e-d7d0a4d952ca","harness":"H5-governance","action":"write_code","actor":"developer","risk_level":"medium","decision":"approved","approval_status":"policy_auto_approved_with_audit","approver":"","input_hash":"d62056ac97257e952127e4ee599f12b633725abe0c5a7c8fbaa82d6c29561190","output_hash":"d62056ac97257e952127e4ee599f12b633725abe0c5a7c8fbaa82d6c29561190","previous_record_hash":"105ebba853ce36c17ab93634efa4f671e30c2da9c60e2243b95fa79e92e84bef","record_hash":"f0da1372c4ede2245b27e0b5af0298e371300ab9e61ef4e9be399bf9348f49f4"}
{"timestamp":"2026-07-01T02:02:02Z","trace_id":"216eb0be-a307-4671-8265-77ac9c2b728a","harness":"H5-governance","action":"test_timeout","actor":"developer","risk_level":"low","decision":"approved","approval_status":"auto_approved","approver":"","input_hash":"c96c6d5be8d08a12e7b5cdc1b207fa6b2430974c86803d8891675e76fd992c20","output_hash":"c96c6d5be8d08a12e7b5cdc1b207fa6b2430974c86803d8891675e76fd992c20","previous_record_hash":"f0da1372c4ede2245b27e0b5af0298e371300ab9e61ef4e9be399bf9348f49f4","record_hash":"79838ccc84e4249258dccba1d6f94cba5474520106abc00ff6d018d67c91c5c1"}
{"timestamp":"2026-07-01T02:23:34Z","trace_id":"5b252084-bc14-407b-b7b0-d0ac978e351d","harness":"H5-governance","action":"deploy","actor":"developer","risk_level":"high","decision":"denied","approval_status":"approval_required","approver":"","input_hash":"3c1cf354bd8e23e98738dd97e726a7c751cf9c7574454d52b9698bfbb9000bff","output_hash":"3c1cf354bd8e23e98738dd97e726a7c751cf9c7574454d52b9698bfbb9000bff","previous_record_hash":"","record_hash":"4882c105b674c2c92aa55473f559a2f01eda68abec253a4d0e8479dc6ea632cb"}
{"timestamp":"2026-07-01T02:23:34Z","trace_id":"c85c12f1-af7a-4624-bd08-c1be93d04b37","harness":"H5-governance","action":"deploy","actor":"developer","risk_level":"high","decision":"approved","approval_status":"human_approved","approver":"architect@example.local","input_hash":"3c1cf354bd8e23e98738dd97e726a7c751cf9c7574454d52b9698bfbb9000bff","output_hash":"3c1cf354bd8e23e98738dd97e726a7c751cf9c7574454d52b9698bfbb9000bff","previous_record_hash":"4882c105b674c2c92aa55473f559a2f01eda68abec253a4d0e8479dc6ea632cb","record_hash":"d713ef8b1a7c1922e851145199b35664a0c7484993c2dee03371f18e2bf8909e"}
{"timestamp":"2026-07-01T02:23:38Z","trace_id":"047960ed-96d8-4808-9b20-70dd41c8cd59","harness":"H5-governance","action":"agent_step","actor":"developer","risk_level":"low","decision":"approved","approval_status":"auto_approved","approver":"","input_hash":"0649852ef55d103b9b1134daf5324e92a3e2254386dc137787ca9432b2e4b9bf","output_hash":"0649852ef55d103b9b1134daf5324e92a3e2254386dc137787ca9432b2e4b9bf","previous_record_hash":"d713ef8b1a7c1922e851145199b35664a0c7484993c2dee03371f18e2bf8909e","record_hash":"daef0ecf710f424a1be0db7087f878fa4e82ed39ed319d7fb58c8d9dcfe1ca9e"}
{"timestamp":"2026-07-01T02:23:40Z","trace_id":"ac454f4b-2608-4f7c-9c9f-993b8f03836a","harness":"H5-governance","action":"agent_step","actor":"developer","risk_level":"low","decision":"approved","approval_status":"auto_approved","approver":"","input_hash":"0649852ef55d103b9b1134daf5324e92a3e2254386dc137787ca9432b2e4b9bf","output_hash":"0649852ef55d103b9b1134daf5324e92a3e2254386dc137787ca9432b2e4b9bf","previous_record_hash":"daef0ecf710f424a1be0db7087f878fa4e82ed39ed319d7fb58c8d9dcfe1ca9e","record_hash":"32848e6ec1a718aab3af3585ea2ec3da9c39253e420fdfe9694aab6ca526589c"}
{"timestamp":"2026-07-01T02:23:46Z","trace_id":"e9bb1b86-e62f-45f9-809d-06a16401006d","harness":"H5-governance","action":"deploy","actor":"alice","risk_level":"high","decision":"denied","approval_status":"separation_of_duties_violation","approver":"alice","input_hash":"ec9c2145d75be1bf0080711b5bd106465a8307147205ea249bfa1faa0bf05bbb","output_hash":"ec9c2145d75be1bf0080711b5bd106465a8307147205ea249bfa1faa0bf05bbb","previous_record_hash":"32848e6ec1a718aab3af3585ea2ec3da9c39253e420fdfe9694aab6ca526589c","record_hash":"86b798c6c0c890fcafb01c0664d9a49463a7ba52ce5b4f7aea0d0c1b9fdf271b"}
{"timestamp":"2026-07-01T02:23:46Z","trace_id":"948aad39-bac7-4697-a00a-32643ce1c8d8","harness":"H5-governance","action":"deploy","actor":"alice","risk_level":"high","decision":"approved","approval_status":"human_approved","approver":"bob","input_hash":"ec9c2145d75be1bf0080711b5bd106465a8307147205ea249bfa1faa0bf05bbb","output_hash":"ec9c2145d75be1bf0080711b5bd106465a8307147205ea249bfa1faa0bf05bbb","previous_record_hash":"86b798c6c0c890fcafb01c0664d9a49463a7ba52ce5b4f7aea0d0c1b9fdf271b","record_hash":"21337e9ca3833a16d06fb95dc488e6eaa0440ca959df6e490e3acb1d5aac7ee2"}
{"timestamp":"2026-07-01T02:23:48Z","trace_id":"8b14ca5f-75c7-4785-80c5-3c18b6b5f9cb","harness":"H5-governance","action":"write_code","actor":"developer","risk_level":"medium","decision":"approved","approval_status":"policy_auto_approved_with_audit","approver":"","input_hash":"d62056ac97257e952127e4ee599f12b633725abe0c5a7c8fbaa82d6c29561190","output_hash":"d62056ac97257e952127e4ee599f12b633725abe0c5a7c8fbaa82d6c29561190","previous_record_hash":"21337e9ca3833a16d06fb95dc488e6eaa0440ca959df6e490e3acb1d5aac7ee2","record_hash":"25f88523223f2e1e2b33a5dbda364276befddabcd82a125c63889f71b4d72a71"}
{"timestamp":"2026-07-01T02:23:49Z","trace_id":"7fd79537-8cbb-4c9f-bd7e-fdcbaf571d8b","harness":"H5-governance","action":"write_code","actor":"developer","risk_level":"medium","decision":"approved","approval_status":"policy_auto_approved_with_audit","approver":"","input_hash":"d62056ac97257e952127e4ee599f12b633725abe0c5a7c8fbaa82d6c29561190","output_hash":"d62056ac97257e952127e4ee599f12b633725abe0c5a7c8fbaa82d6c29561190","previous_record_hash":"25f88523223f2e1e2b33a5dbda364276befddabcd82a125c63889f71b4d72a71","record_hash":"e37c1046802557778b1a6cefabf8fee28872b6dc42f4d83893467f06a24f6669"}
{"timestamp":"2026-07-01T02:23:55Z","trace_id":"d68363e1-22b5-4431-867c-dcdb171e8220","harness":"H5-governance","action":"test_timeout","actor":"developer","risk_level":"low","decision":"approved","approval_status":"auto_approved","approver":"","input_hash":"c96c6d5be8d08a12e7b5cdc1b207fa6b2430974c86803d8891675e76fd992c20","output_hash":"c96c6d5be8d08a12e7b5cdc1b207fa6b2430974c86803d8891675e76fd992c20","previous_record_hash":"e37c1046802557778b1a6cefabf8fee28872b6dc42f4d83893467f06a24f6669","record_hash":"3e52f09a8e1a6efb09d4b6637551bb9831b35ff30904edd1a2996769aa55edda"}