controlspec / action-demo.html
claytonsamples's picture
Publish ControlSpec OpenShell protocol preview and nine recorded scenarios
b0b1f38 verified
Raw History Blame Contribute Delete
80.9 kB
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>ControlSpec — Same intent. Different outcome.</title>
<style>
:root{color-scheme:dark;--bg:#111513;--panel:#1a211d;--line:#36453b;--text:#edf2e7;--muted:#aabaad;--lime:#c7f582;--orange:#ffac83;--blue:#9dcaff}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,a,summary{touch-action:manipulation}button{font:inherit;cursor:pointer}a{color:inherit;text-underline-offset:4px}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:5px}header,main,footer{max-width:1280px;margin:auto;padding:0 38px}header{height:86px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{font-weight:750;letter-spacing:-.7px;font-size:23px;text-decoration:none}.brand i{display:inline-block;width:17px;height:17px;border:4px solid var(--lime);border-radius:5px;margin-right:10px;transform:rotate(-12deg)}.toplinks{display:flex;gap:26px;font-size:13px}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:11px;font-weight:750;color:var(--lime)}.hero{display:grid;grid-template-columns:1.4fr 1fr;align-items:end;gap:50px;padding:37px 0 26px}h1{font-size:clamp(36px,4.5vw,60px);line-height:1.05;letter-spacing:-2.8px;margin:10px 0 0;font-weight:650}h1 span{color:var(--lime)}.hero p{font-size:15px;color:var(--muted);max-width:400px;margin:0 0 3px}.notice{display:flex;gap:12px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:11px 15px;color:var(--muted);font-size:12px}.dot{flex-shrink:0;width:7px;height:7px;border-radius:100%;background:var(--lime)}.notice strong{color:var(--text)}.scene-nav{display:flex;gap:8px;margin:23px 0 18px;flex-wrap:wrap}.scene-nav button{background:transparent;color:var(--muted);border:1px solid var(--line);border-radius:30px;padding:8px 14px;font-size:12px}.scene-nav button[aria-pressed=true]{background:var(--lime);border-color:var(--lime);color:#172014}.scene-nav button span{opacity:.65;margin-right:7px;font-variant-numeric:tabular-nums}.stage{border:1px solid var(--line);border-radius:15px;overflow:hidden;background:#151b17}.scene-head{display:flex;justify-content:space-between;align-items:start;gap:20px;padding:23px 26px;border-bottom:1px solid var(--line)}.scene-head h2{font-weight:550;letter-spacing:-.6px;font-size:25px;margin:2px 0 5px}.scene-head p{font-size:13px;color:var(--muted);margin:0;max-width:720px}.count{color:var(--muted);font:13px ui-monospace,monospace;white-space:nowrap;margin-top:6px}.phases{display:flex;padding:14px 26px;gap:8px;background:#101612;border-bottom:1px solid var(--line)}.phases span{flex:1;border-top:2px solid var(--line);padding-top:7px;font-size:10px;letter-spacing:.9px;text-transform:uppercase;color:var(--muted)}.phases span.active{border-color:var(--lime);color:var(--lime)}.lanes{display:grid;grid-template-columns:1fr 1fr}.lane{padding:24px 26px;min-width:0}.lane+.lane{border-left:1px solid var(--line);background:linear-gradient(150deg,#23302244,transparent)}.lane-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1.1px;display:flex;align-items:center;gap:9px}.marker{width:8px;height:8px;border-radius:50%;background:var(--orange)}.controlled .marker{background:var(--lime)}.lane-sub{color:var(--muted);font-size:11px;margin:5px 0 20px}.state-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.value{font-size:43px;letter-spacing:-1.8px;font-weight:500;font-variant-numeric:tabular-nums;margin:0 0 3px}.state-caption{font-size:12px;color:var(--muted);min-height:19px}.status{margin:20px 0 12px;display:inline-block;border:1px solid var(--line);border-radius:5px;font-size:11px;letter-spacing:.5px;padding:5px 9px;color:var(--muted)}.status.done{border-color:#b17b5e;color:var(--orange);background:#ffac830c}.controlled .status.done{border-color:#708f4a;color:var(--lime);background:#c7f5820c}.events{height:108px;overflow:auto;font:12px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--muted)}.events p{margin:0 0 7px;overflow-wrap:anywhere}.events b{color:var(--text);font-weight:400}.evidence{font-size:11px;padding-top:13px;margin-top:9px;border-top:1px solid var(--line);color:var(--muted);min-height:45px}.evidence strong{color:var(--text)}.controls{display:flex;align-items:center;gap:10px;padding:17px 26px;border-top:1px solid var(--line);background:#101612}.controls button{border:1px solid var(--line);border-radius:7px;background:transparent;color:var(--text);padding:10px 16px;font-size:13px}.controls .primary{background:var(--lime);color:#172014;border-color:var(--lime);font-weight:700;min-width:150px}.timing{margin-left:auto;color:var(--muted);font:11px ui-monospace,monospace}.takeaway{display:flex;align-items:start;gap:17px;padding:20px 0}.takeaway .arrow{color:var(--lime);font-size:23px}.takeaway p{margin:0;font-size:14px}.takeaway small{display:block;color:var(--muted);font-size:12px;margin-top:3px}.details{border-top:1px solid var(--line);padding:20px 0;color:var(--muted);font-size:12px}.details summary{cursor:pointer;color:var(--text);font-size:13px}.details pre{max-height:380px;overflow:auto;background:#0a100d;border:1px solid var(--line);border-radius:8px;padding:20px;font:11px/1.6 ui-monospace,monospace}.provenance{overflow-wrap:anywhere;margin:16px 0}.explain{max-width:920px;font-size:13px;color:var(--muted)}footer{display:flex;justify-content:space-between;gap:25px;padding-top:22px;padding-bottom:30px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}button:disabled{opacity:.4;cursor:default}
@media(max-width:700px){header,main,footer{padding-left:18px;padding-right:18px}header{height:68px}.toplinks{gap:14px}.hero{grid-template-columns:1fr;gap:18px;padding-top:28px}h1{letter-spacing:-1.7px}.scene-head{padding:20px 17px}.scene-head h2{font-size:22px}.scene-nav{gap:6px}.scene-nav button{padding:7px 11px}.lanes{grid-template-columns:1fr}.lane{padding:20px 17px}.lane+.lane{border-left:0;border-top:1px solid var(--line)}.events{height:90px}.value{font-size:37px}.phases{padding:12px 17px}.phases span{font-size:9px;letter-spacing:0}.controls{padding:15px 17px;flex-wrap:wrap}.timing{width:100%;margin:2px 0 0}.controls button{padding:10px 12px}.notice{align-items:start}footer{flex-direction:column;gap:8px}.count{font-size:11px}}
@media(max-width:700px){header{height:auto;min-height:68px;padding-top:15px;padding-bottom:15px;flex-wrap:wrap;gap:12px}.toplinks{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
</style>
</head>
<body>
<header><a class="brand" href="https://github.com/claytonsamples/controlspec"><i aria-hidden="true"></i>ControlSpec</a><nav class="toplinks" aria-label="Project links"><a href="https://github.com/claytonsamples/controlspec">View source ↗</a><a href="action-traces.json" download>Download trace ↓</a></nav></header>
<main>
<section class="hero"><div><div class="eyebrow">The agent action lab / 01</div><h1>Same intent.<br><span>Different outcome.</span></h1></div><p>Watch an agent try to spend, discount, and change the deal. See where ControlSpec changes the route—and where it lets the action proceed.</p></section>
<div class="notice"><span class="dot" aria-hidden="true"></span><div><strong>Recorded sandbox simulation.</strong> Real ControlSpec reference decisions. Scripted agent intents. Fake targets. No real money, messages, or production authorization.</div></div>
<nav class="scene-nav" id="scenes" aria-label="Choose a scene"></nav>
<section class="stage" aria-label="Side-by-side demonstration">
<div class="scene-head"><div><div class="eyebrow" id="domain">Personal agent</div><h2 id="title"></h2><p id="description"></p><p id="rule" style="color:var(--lime);margin-top:9px"></p></div><div class="count" id="counter"></div></div>
<div class="phases" aria-label="Playback stages"><span>01 · Intent</span><span>02 · Decision</span><span>03 · Target</span><span>04 · Evidence</span></div>
<div class="lanes"><article class="lane" id="without"><div class="lane-title"><span class="marker"></span>Without ControlSpec</div><p class="lane-sub">Direct dispatch to the simulated target</p><div class="state-label"></div><div class="value"></div><div class="state-caption"></div><div class="status"></div><div class="events"></div><div class="evidence"></div></article><article class="lane controlled" id="controlled"><div class="lane-title"><span class="marker"></span>With ControlSpec</div><p class="lane-sub">Reference evaluator + sandbox dispatch gate</p><div class="state-label"></div><div class="value"></div><div class="state-caption"></div><div class="status"></div><div class="events"></div><div class="evidence"></div></article></div>
<div class="controls"><button class="primary" id="play">▶ Run the comparison</button><button id="step">Next step →</button><button id="reset">↺ Reset</button><span class="timing" id="timing">6 scenes · approximately 60 seconds</span></div>
</section>
<div class="takeaway"><span class="arrow" aria-hidden="true">↳</span><div><p id="lesson"></p><small>The same scripted proposal enters both lanes. Only the sandbox control path changes.</small></div></div>
<details class="details"><summary>Inspect the rule binding, decision, and sandbox trace</summary><p class="provenance" id="provenance"></p><pre id="trace"></pre></details>
<p class="explain">This browser replays recorded results; it does not evaluate new policies or run an LLM. The local Python harness runs the real reference evaluator and simulates target changes. A sandbox event proves only that simulation occurred. Production identity, credential isolation, enforcement, and durable evidence remain separate work. The baseline isolates ControlSpec’s contribution; it is not a claim that other agent systems lack safeguards.</p>
<div class="sr" id="announce" role="status" aria-live="polite"></div>
</main>
<footer><span>ControlSpec · Experimental open-source reference layer</span><a href="https://github.com/claytonsamples/controlspec/issues">Challenge a scenario. Help build the boundary. ↗</a></footer>
<script id="action-data" type="application/json">{"schema":"controlspec.action-demo.v1","mode":"recorded_reference_outputs","static":true,"non_authoritative":true,"may_authorize_external_effect":false,"external_actions_executed":false,"real_llm_run":false,"production_evidence":false,"reference_time":"2026-08-20T12:00:00.000000Z","source_commit":"e30ac3657bdc75e2ec268b88429d762a7b4b70a8","provenance":{"harness_sha256":"sha256:59cae93a5ebcdb588f1f7c1ea74b60e23531a90cad85b69f4fc6c3536cf34c0c","template_sha256":"sha256:7d6ea841f57fb777daf802fb97d29715883e8293339731b05eb73c25647decd9","observer_sha256":"sha256:732bc7a252bd8b1a50f70aa9840a5c85a45787bb5670298d625dea58d0f9de6e","source_commit_note":"Base Git commit; explicit hashes identify demo working files.","reference_inputs_sha256":{"examples/controlspec/personal-agent-spending/requests/groceries-142.json":"sha256:83d5b210e9ddb10e20a36d6381f5638987eff7a421436b3aff2b2339a2ce35dd","examples/controlspec/personal-agent-spending/requests/groceries-42-changed-intent.json":"sha256:482b8d05c088c453dc44890064917d6df67aa47e25d374b77a486d06e5fda510","examples/controlspec/personal-agent-spending/requests/groceries-42.json":"sha256:2f3af3e062d43ba28728504661e8d1eef1f7f2d520a8e3ba0f4e8ad9065b4dd6","examples/controlspec/personal-agent-spending/requests/recurring-999.json":"sha256:eeceddbbaf99a328eea016c7a7873c032873435abfb106a91bc9d4899752f77a","examples/controlspec/personal-agent-spending/scenarios.json":"sha256:b50a3f4b51618cad64c7b28a2c7330b1b5af3b383b81d52eead2e49607fa16ae","examples/controlspec/smb-sales-controls/requests/discount-15.json":"sha256:1515589b2f067afa303eb9b55335e94047add62a5b35bb42512fc3860fb3d235","examples/controlspec/smb-sales-controls/requests/discount-8.json":"sha256:8fce043ddeccf6e4b4614bc0f9c19b6aee2a58e9e79ec4fd4bcfaa1b4853889c","examples/controlspec/smb-sales-controls/requests/draft.json":"sha256:35e2e13e2b930d22de235342f088e572a2136b6d18177f101178d9bef16fa47e","examples/controlspec/smb-sales-controls/requests/smb-discount-15-direct-self-approval.json":"sha256:425256c9c57f680f202836a42a2cda7034a2b7f1f3dc61379b9eb00b9be7651f","examples/controlspec/smb-sales-controls/scenarios.json":"sha256:82aaa7c15d015cece46a6a8fed9e165545b344812224789c7011af4ff7feaccd"}},"scope":"Scripted intents; real reference decisions; simulated targets; recorded playback.","domains":[{"domain":"personal","release_id":"v0.1.1","catalog_digest":"sha256:07e00e11176752146d402c31269d3c89dbe1f8ae200c98a91f7e4f34f7888322","scenarios":[{"scenario_id":"groceries-42","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","pack_catalog_id":"personal.agent.spending:spending-baseline@0.1.0","verdict":"allow","route_kind":"continue","route_id":"continue","recheck_valid":true,"changed_recheck_valid":false,"receipt_status":"incomplete","missing_evidence_count":1,"verified_evidence_count":0,"assessment_basis":"caller_report_only","stored":false,"durable":false,"route_substitution_rejected":true},{"scenario_id":"groceries-142","intent_digest":"sha256:5b0a007d31cec073c4a6c8731e192c15cc7de7e0a0c4d96b64d4b23210afd1c0","pack_catalog_id":"personal.agent.spending:spending-baseline@0.1.0","verdict":"require_approval","route_kind":"ask_user","route_id":"ask-before-purchase","recheck_valid":true,"changed_recheck_valid":null,"receipt_status":"failed","missing_evidence_count":0,"verified_evidence_count":0,"assessment_basis":"caller_report_only","stored":false,"durable":false,"route_substitution_rejected":true},{"scenario_id":"recurring-999","intent_digest":"sha256:bc82299648aa586ad4cb8da960d413c5cfbeaca046e58912a359714b7d0ec801","pack_catalog_id":"personal.agent.spending:spending-baseline@0.1.0","verdict":"require_approval","route_kind":"ask_user","route_id":"ask-before-recurring-purchase","recheck_valid":true,"changed_recheck_valid":null,"receipt_status":"failed","missing_evidence_count":0,"verified_evidence_count":0,"assessment_basis":"caller_report_only","stored":false,"durable":false,"route_substitution_rejected":true}],"machine_summary":{"status":"ok","scope":"local_reference_examples","domain":"personal","release_id":"v0.1.1","catalog_digest":"sha256:07e00e11176752146d402c31269d3c89dbe1f8ae200c98a91f7e4f34f7888322","observed":[{"id":"groceries-42","verdict":"allow","recheck_valid":true,"receipt_status":"incomplete","non_authoritative":true,"deterministic_repeat":true,"route_substitution_rejected":true},{"id":"groceries-142","verdict":"require_approval","recheck_valid":true,"receipt_status":"failed","non_authoritative":true,"deterministic_repeat":true,"route_substitution_rejected":true},{"id":"recurring-999","verdict":"require_approval","recheck_valid":true,"receipt_status":"failed","non_authoritative":true,"deterministic_repeat":true,"route_substitution_rejected":true}],"scenario_count":3,"probe_count":0,"operations":["GET packs","GET packs/{id}","GET controls","GET controls/{id}","POST decide","POST recheck","POST receipts"],"external_actions_executed":false,"receipts_stored":false}},{"domain":"smb","release_id":"v0.1.1","catalog_digest":"sha256:07e00e11176752146d402c31269d3c89dbe1f8ae200c98a91f7e4f34f7888322","scenarios":[{"scenario_id":"draft","intent_digest":"sha256:c97b00a3ce7f1e71a27f90bab783f4490f1fe09286f137abaa5cf2cf2882b64d","pack_catalog_id":"smb.sales.controls:sales-baseline@0.1.0","verdict":"allow","route_kind":"continue","route_id":"continue-draft","recheck_valid":true,"changed_recheck_valid":null,"receipt_status":"failed","missing_evidence_count":0,"verified_evidence_count":0,"assessment_basis":"caller_report_only","stored":false,"durable":false,"route_substitution_rejected":true},{"scenario_id":"discount-8","intent_digest":"sha256:be0d497159b6110a72d0a6bea0c2db21f82202f40e6217ef586ae1f51bbac7d0","pack_catalog_id":"smb.sales.controls:sales-baseline@0.1.0","verdict":"allow_with_conditions","route_kind":"continue","route_id":"continue-within-limit","recheck_valid":true,"changed_recheck_valid":null,"receipt_status":"failed","missing_evidence_count":0,"verified_evidence_count":0,"assessment_basis":"caller_report_only","stored":false,"durable":false,"route_substitution_rejected":true},{"scenario_id":"discount-15","intent_digest":"sha256:ec4f4dee20b67ee8dd0b264dcbf60f185eda92d48fa48bbf2ed54f0ff090e5d4","pack_catalog_id":"smb.sales.controls:sales-baseline@0.1.0","verdict":"require_approval","route_kind":"continue","route_id":"continue","recheck_valid":true,"changed_recheck_valid":null,"receipt_status":"failed","missing_evidence_count":0,"verified_evidence_count":0,"assessment_basis":"caller_report_only","stored":false,"durable":false,"route_substitution_rejected":true},{"scenario_id":"smb-discount-15-direct-self-approval","intent_digest":"sha256:c28c5920136a243b8256f8baaa59709217a8f7043e95dcec06013aaee3d1bf1a","pack_catalog_id":"smb.sales.controls:sales-baseline@0.1.0","verdict":"block","route_kind":"block","route_id":"fail-closed-block","recheck_valid":true,"changed_recheck_valid":null,"receipt_status":"failed","missing_evidence_count":0,"verified_evidence_count":0,"assessment_basis":"caller_report_only","stored":false,"durable":false,"route_substitution_rejected":true}],"machine_summary":{"status":"ok","scope":"local_reference_examples","domain":"smb","release_id":"v0.1.1","catalog_digest":"sha256:07e00e11176752146d402c31269d3c89dbe1f8ae200c98a91f7e4f34f7888322","observed":[{"id":"draft","verdict":"allow","recheck_valid":true,"receipt_status":"failed","non_authoritative":true,"deterministic_repeat":true,"route_substitution_rejected":true},{"id":"discount-8","verdict":"allow_with_conditions","recheck_valid":true,"receipt_status":"failed","non_authoritative":true,"deterministic_repeat":true,"route_substitution_rejected":true},{"id":"discount-15","verdict":"require_approval","recheck_valid":true,"receipt_status":"failed","non_authoritative":true,"deterministic_repeat":true,"route_substitution_rejected":true},{"id":"smb-discount-15-direct-self-approval","verdict":"block","recheck_valid":true,"receipt_status":"failed","non_authoritative":true,"deterministic_repeat":true,"route_substitution_rejected":true}],"scenario_count":4,"probe_count":0,"operations":["GET packs","GET packs/{id}","GET controls","GET controls/{id}","POST decide","POST recheck","POST receipts"],"external_actions_executed":false,"receipts_stored":false}}],"scenes":[{"id":"overspend","title":"The $142 purchase","description":"A purchase exceeds the example spending limit.","domain":"personal","scenario_id":"groceries-142","changed":false,"evidence_available":true,"observation":{"scenario_id":"groceries-142","intent_digest":"sha256:5b0a007d31cec073c4a6c8731e192c15cc7de7e0a0c4d96b64d4b23210afd1c0","pack_catalog_id":"personal.agent.spending:spending-baseline@0.1.0","verdict":"require_approval","route_kind":"ask_user","route_id":"ask-before-purchase","recheck_valid":true,"changed_recheck_valid":null,"receipt_status":"failed","missing_evidence_count":0,"verified_evidence_count":0,"assessment_basis":"caller_report_only","stored":false,"durable":false,"route_substitution_rejected":true},"original_intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":14200},"context_digest":"sha256:7d8d852b72578640619bd7115084a64be00c80b24467a31b01623cb61ec95621","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-142","intent_digest":"sha256:5b0a007d31cec073c4a6c8731e192c15cc7de7e0a0c4d96b64d4b23210afd1c0","intent_id":"groceries-142","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"proposed_intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":14200},"context_digest":"sha256:7d8d852b72578640619bd7115084a64be00c80b24467a31b01623cb61ec95621","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-142","intent_digest":"sha256:5b0a007d31cec073c4a6c8731e192c15cc7de7e0a0c4d96b64d4b23210afd1c0","intent_id":"groceries-142","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"source":{"request":"examples/controlspec/personal-agent-spending/requests/groceries-142.json","reference_test":{"path":"backend/tests/api/test_controlspec_reference_api_examples.py","revision":"a6d0c2685a62eb9e21eef49355ed20687bdf9563","symbol":"test_personal_agent_examples_execute_portably_through_http"},"selected_pack":{"catalog_id":"personal.agent.spending:spending-baseline@0.1.0","kind":"pack","semantic_digest":"sha256:682c677a946588ed7c7313ed0e36c77af8213d77dd82b9979d7d7b8454d29291"},"explanation_codes":["controlspec.core.approval.required","personal.spending.approval_required"],"explanation_basis":"reviewed fixture; observe validates exact API match"},"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"lanes":{"without":{"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"final_state":{"balance_minor_units":35800,"quote_total_minor_units":100000,"discount_basis_points":0},"intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":14200},"context_digest":"sha256:7d8d852b72578640619bd7115084a64be00c80b24467a31b01623cb61ec95621","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-142","intent_digest":"sha256:5b0a007d31cec073c4a6c8731e192c15cc7de7e0a0c4d96b64d4b23210afd1c0","intent_id":"groceries-142","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"events":[{"step":0,"kind":"proposed","message":"Identical scripted intent received by an isolated fake target lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":1,"kind":"dispatch","message":"Comparison lane dispatches directly; this control layer is absent.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":2,"kind":"recheck","message":"No ControlSpec binding recheck in this comparison lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":3,"kind":"target","message":"Fake target changed. No external action occurred.","state":{"balance_minor_units":35800,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":4,"kind":"receipt","message":"Sandbox action observed.","state":{"balance_minor_units":35800,"quote_total_minor_units":100000,"discount_basis_points":0}}],"mutated":true,"target_evidence":[{"kind":"sandbox_target_event","scope":"fake_target_only","intent_digest":"sha256:5b0a007d31cec073c4a6c8731e192c15cc7de7e0a0c4d96b64d4b23210afd1c0","before":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"after":{"balance_minor_units":35800,"quote_total_minor_units":100000,"discount_basis_points":0},"production_evidence":false}],"completion":"Sandbox action observed."},"controlled":{"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"final_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":14200},"context_digest":"sha256:7d8d852b72578640619bd7115084a64be00c80b24467a31b01623cb61ec95621","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-142","intent_digest":"sha256:5b0a007d31cec073c4a6c8731e192c15cc7de7e0a0c4d96b64d4b23210afd1c0","intent_id":"groceries-142","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"events":[{"step":0,"kind":"proposed","message":"Identical scripted intent received by an isolated fake target lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":1,"kind":"decision","message":"Real reference decision: require_approval.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":2,"kind":"recheck","message":"Binding valid for proposed action: true.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":3,"kind":"target","message":"Dispatch held; fake target unchanged.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":4,"kind":"receipt","message":"Reference receipt: failed; verified evidence: 0. Sandbox events do not upgrade this receipt.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}}],"mutated":false,"target_evidence":[],"completion":"Action held; fake target unchanged."}}},{"id":"discount","title":"The 15% discount","description":"A sales agent proposes an offer needing approval.","domain":"smb","scenario_id":"discount-15","changed":false,"evidence_available":true,"observation":{"scenario_id":"discount-15","intent_digest":"sha256:ec4f4dee20b67ee8dd0b264dcbf60f185eda92d48fa48bbf2ed54f0ff090e5d4","pack_catalog_id":"smb.sales.controls:sales-baseline@0.1.0","verdict":"require_approval","route_kind":"continue","route_id":"continue","recheck_valid":true,"changed_recheck_valid":null,"receipt_status":"failed","missing_evidence_count":0,"verified_evidence_count":0,"assessment_basis":"caller_report_only","stored":false,"durable":false,"route_substitution_rejected":true},"original_intent":{"action":{"domain_action":"smb.sales.offer_discount","requested_effect":{"smb.sales.controls.effect":"smb.sales.offer_discount"},"type":"communicate"},"actor":{"actor_id":"smb.sales.controls-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"smb.sales.controls","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"smb.sales.discount_basis_points":1500},"context_digest":"sha256:9ef70d85099b9abaf8649f6cfb0f943daff79d62e71c9b33321fa56ccfa09982","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"discount-15","intent_digest":"sha256:ec4f4dee20b67ee8dd0b264dcbf60f185eda92d48fa48bbf2ed54f0ff090e5d4","intent_id":"discount-15","namespace":"smb.sales.controls","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"smb.sales.controls","resource_id":"smb.sales.controls-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"smb.customer_email","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"proposed_intent":{"action":{"domain_action":"smb.sales.offer_discount","requested_effect":{"smb.sales.controls.effect":"smb.sales.offer_discount"},"type":"communicate"},"actor":{"actor_id":"smb.sales.controls-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"smb.sales.controls","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"smb.sales.discount_basis_points":1500},"context_digest":"sha256:9ef70d85099b9abaf8649f6cfb0f943daff79d62e71c9b33321fa56ccfa09982","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"discount-15","intent_digest":"sha256:ec4f4dee20b67ee8dd0b264dcbf60f185eda92d48fa48bbf2ed54f0ff090e5d4","intent_id":"discount-15","namespace":"smb.sales.controls","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"smb.sales.controls","resource_id":"smb.sales.controls-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"smb.customer_email","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"source":{"request":"examples/controlspec/smb-sales-controls/requests/discount-15.json","reference_test":{"path":"backend/tests/api/test_controlspec_reference_api_examples.py","revision":"a6d0c2685a62eb9e21eef49355ed20687bdf9563","symbol":"test_smb_sales_examples_execute_portably_through_http"},"selected_pack":{"catalog_id":"smb.sales.controls:sales-baseline@0.1.0","kind":"pack","semantic_digest":"sha256:2dac49ef9705353c556d200cf908a4d4405bdf8a36c68f2f8926628cdfc346bd"},"explanation_codes":["controlspec.core.approval.required","smb.sales.discount_controlled","smb.sales.manager_required"],"explanation_basis":"reviewed fixture; observe validates exact API match"},"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"lanes":{"without":{"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"final_state":{"balance_minor_units":50000,"quote_total_minor_units":85000,"discount_basis_points":1500},"intent":{"action":{"domain_action":"smb.sales.offer_discount","requested_effect":{"smb.sales.controls.effect":"smb.sales.offer_discount"},"type":"communicate"},"actor":{"actor_id":"smb.sales.controls-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"smb.sales.controls","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"smb.sales.discount_basis_points":1500},"context_digest":"sha256:9ef70d85099b9abaf8649f6cfb0f943daff79d62e71c9b33321fa56ccfa09982","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"discount-15","intent_digest":"sha256:ec4f4dee20b67ee8dd0b264dcbf60f185eda92d48fa48bbf2ed54f0ff090e5d4","intent_id":"discount-15","namespace":"smb.sales.controls","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"smb.sales.controls","resource_id":"smb.sales.controls-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"smb.customer_email","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"events":[{"step":0,"kind":"proposed","message":"Identical scripted intent received by an isolated fake target lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":1,"kind":"dispatch","message":"Comparison lane dispatches directly; this control layer is absent.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":2,"kind":"recheck","message":"No ControlSpec binding recheck in this comparison lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":3,"kind":"target","message":"Fake target changed. No external action occurred.","state":{"balance_minor_units":50000,"quote_total_minor_units":85000,"discount_basis_points":1500}},{"step":4,"kind":"receipt","message":"Sandbox action observed.","state":{"balance_minor_units":50000,"quote_total_minor_units":85000,"discount_basis_points":1500}}],"mutated":true,"target_evidence":[{"kind":"sandbox_target_event","scope":"fake_target_only","intent_digest":"sha256:ec4f4dee20b67ee8dd0b264dcbf60f185eda92d48fa48bbf2ed54f0ff090e5d4","before":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"after":{"balance_minor_units":50000,"quote_total_minor_units":85000,"discount_basis_points":1500},"production_evidence":false}],"completion":"Sandbox action observed."},"controlled":{"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"final_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"intent":{"action":{"domain_action":"smb.sales.offer_discount","requested_effect":{"smb.sales.controls.effect":"smb.sales.offer_discount"},"type":"communicate"},"actor":{"actor_id":"smb.sales.controls-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"smb.sales.controls","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"smb.sales.discount_basis_points":1500},"context_digest":"sha256:9ef70d85099b9abaf8649f6cfb0f943daff79d62e71c9b33321fa56ccfa09982","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"discount-15","intent_digest":"sha256:ec4f4dee20b67ee8dd0b264dcbf60f185eda92d48fa48bbf2ed54f0ff090e5d4","intent_id":"discount-15","namespace":"smb.sales.controls","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"smb.sales.controls","resource_id":"smb.sales.controls-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"smb.customer_email","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"events":[{"step":0,"kind":"proposed","message":"Identical scripted intent received by an isolated fake target lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":1,"kind":"decision","message":"Real reference decision: require_approval.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":2,"kind":"recheck","message":"Binding valid for proposed action: true.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":3,"kind":"target","message":"Dispatch held; fake target unchanged.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":4,"kind":"receipt","message":"Reference receipt: failed; verified evidence: 0. Sandbox events do not upgrade this receipt.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}}],"mutated":false,"target_evidence":[],"completion":"Action held; fake target unchanged."}}},{"id":"self-approval","title":"The agent approves itself","description":"The same proposed 15% offer includes direct self-approval.","domain":"smb","scenario_id":"smb-discount-15-direct-self-approval","changed":false,"evidence_available":true,"observation":{"scenario_id":"smb-discount-15-direct-self-approval","intent_digest":"sha256:c28c5920136a243b8256f8baaa59709217a8f7043e95dcec06013aaee3d1bf1a","pack_catalog_id":"smb.sales.controls:sales-baseline@0.1.0","verdict":"block","route_kind":"block","route_id":"fail-closed-block","recheck_valid":true,"changed_recheck_valid":null,"receipt_status":"failed","missing_evidence_count":0,"verified_evidence_count":0,"assessment_basis":"caller_report_only","stored":false,"durable":false,"route_substitution_rejected":true},"original_intent":{"action":{"domain_action":"smb.sales.offer_discount","requested_effect":{"smb.sales.controls.effect":"smb.sales.offer_discount"},"type":"communicate"},"actor":{"actor_id":"smb.sales.controls-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"smb.sales.controls","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"smb.sales.discount_basis_points":1500},"context_digest":"sha256:9ef70d85099b9abaf8649f6cfb0f943daff79d62e71c9b33321fa56ccfa09982","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"discount-self-approval","intent_digest":"sha256:c28c5920136a243b8256f8baaa59709217a8f7043e95dcec06013aaee3d1bf1a","intent_id":"discount-self-approval","namespace":"smb.sales.controls","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"smb.sales.controls","resource_id":"smb.sales.controls-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"smb.customer_email","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"proposed_intent":{"action":{"domain_action":"smb.sales.offer_discount","requested_effect":{"smb.sales.controls.effect":"smb.sales.offer_discount"},"type":"communicate"},"actor":{"actor_id":"smb.sales.controls-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"smb.sales.controls","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"smb.sales.discount_basis_points":1500},"context_digest":"sha256:9ef70d85099b9abaf8649f6cfb0f943daff79d62e71c9b33321fa56ccfa09982","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"discount-self-approval","intent_digest":"sha256:c28c5920136a243b8256f8baaa59709217a8f7043e95dcec06013aaee3d1bf1a","intent_id":"discount-self-approval","namespace":"smb.sales.controls","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"smb.sales.controls","resource_id":"smb.sales.controls-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"smb.customer_email","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"source":{"request":"examples/controlspec/smb-sales-controls/requests/smb-discount-15-direct-self-approval.json","reference_test":{"path":"backend/src/assurance/controlspec/reference_catalog_data/v0_1_1/scenarios/smb-discount-15-direct-self-approval.json","revision":"a6d0c2685a62eb9e21eef49355ed20687bdf9563","symbol":"intent/selection/reference_time"},"selected_pack":{"catalog_id":"smb.sales.controls:sales-baseline@0.1.0","kind":"pack","semantic_digest":"sha256:2dac49ef9705353c556d200cf908a4d4405bdf8a36c68f2f8926628cdfc346bd"},"explanation_codes":["controlspec.core.approval.independence_failed","smb.sales.discount_controlled","smb.sales.manager_required"],"explanation_basis":"reviewed fixture; observe validates exact API match"},"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"lanes":{"without":{"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"final_state":{"balance_minor_units":50000,"quote_total_minor_units":85000,"discount_basis_points":1500},"intent":{"action":{"domain_action":"smb.sales.offer_discount","requested_effect":{"smb.sales.controls.effect":"smb.sales.offer_discount"},"type":"communicate"},"actor":{"actor_id":"smb.sales.controls-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"smb.sales.controls","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"smb.sales.discount_basis_points":1500},"context_digest":"sha256:9ef70d85099b9abaf8649f6cfb0f943daff79d62e71c9b33321fa56ccfa09982","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"discount-self-approval","intent_digest":"sha256:c28c5920136a243b8256f8baaa59709217a8f7043e95dcec06013aaee3d1bf1a","intent_id":"discount-self-approval","namespace":"smb.sales.controls","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"smb.sales.controls","resource_id":"smb.sales.controls-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"smb.customer_email","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"events":[{"step":0,"kind":"proposed","message":"Identical scripted intent received by an isolated fake target lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":1,"kind":"dispatch","message":"Comparison lane dispatches directly; this control layer is absent.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":2,"kind":"recheck","message":"No ControlSpec binding recheck in this comparison lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":3,"kind":"target","message":"Fake target changed. No external action occurred.","state":{"balance_minor_units":50000,"quote_total_minor_units":85000,"discount_basis_points":1500}},{"step":4,"kind":"receipt","message":"Sandbox action observed.","state":{"balance_minor_units":50000,"quote_total_minor_units":85000,"discount_basis_points":1500}}],"mutated":true,"target_evidence":[{"kind":"sandbox_target_event","scope":"fake_target_only","intent_digest":"sha256:c28c5920136a243b8256f8baaa59709217a8f7043e95dcec06013aaee3d1bf1a","before":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"after":{"balance_minor_units":50000,"quote_total_minor_units":85000,"discount_basis_points":1500},"production_evidence":false}],"completion":"Sandbox action observed."},"controlled":{"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"final_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"intent":{"action":{"domain_action":"smb.sales.offer_discount","requested_effect":{"smb.sales.controls.effect":"smb.sales.offer_discount"},"type":"communicate"},"actor":{"actor_id":"smb.sales.controls-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"smb.sales.controls","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"smb.sales.discount_basis_points":1500},"context_digest":"sha256:9ef70d85099b9abaf8649f6cfb0f943daff79d62e71c9b33321fa56ccfa09982","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"discount-self-approval","intent_digest":"sha256:c28c5920136a243b8256f8baaa59709217a8f7043e95dcec06013aaee3d1bf1a","intent_id":"discount-self-approval","namespace":"smb.sales.controls","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"smb.sales.controls","resource_id":"smb.sales.controls-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"smb.customer_email","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"events":[{"step":0,"kind":"proposed","message":"Identical scripted intent received by an isolated fake target lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":1,"kind":"decision","message":"Real reference decision: block.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":2,"kind":"recheck","message":"Binding valid for proposed action: true.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":3,"kind":"target","message":"Dispatch held; fake target unchanged.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":4,"kind":"receipt","message":"Reference receipt: failed; verified evidence: 0. Sandbox events do not upgrade this receipt.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}}],"mutated":false,"target_evidence":[],"completion":"Action held; fake target unchanged."}}},{"id":"changed-binding","title":"$42 becomes $43","description":"The exact action changes after its $42 decision. Reusing that decision fails.","domain":"personal","scenario_id":"groceries-42","changed":true,"evidence_available":true,"observation":{"scenario_id":"groceries-42","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","pack_catalog_id":"personal.agent.spending:spending-baseline@0.1.0","verdict":"allow","route_kind":"continue","route_id":"continue","recheck_valid":true,"changed_recheck_valid":false,"receipt_status":"incomplete","missing_evidence_count":1,"verified_evidence_count":0,"assessment_basis":"caller_report_only","stored":false,"durable":false,"route_substitution_rejected":true},"original_intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":4200},"context_digest":"sha256:dfa417e39a090e49ef9b50cda7e6396ef951cde9696490f7ff5bb28961cc72cb","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-42","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","intent_id":"groceries-42","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"proposed_intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":4300},"context_digest":"sha256:8dff65808208414a1e0918b6d2549c75decee5ea0dfce4e28a1594df2a1b845f","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-42","intent_digest":"sha256:251fff20bf91e75d47b48b2bdce71bb8e41d14f9d5eda519d06d035f694d8d89","intent_id":"groceries-42","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"source":{"request":"examples/controlspec/personal-agent-spending/requests/groceries-42.json","reference_test":{"path":"backend/tests/api/test_controlspec_reference_api_examples.py","revision":"a6d0c2685a62eb9e21eef49355ed20687bdf9563","symbol":"test_personal_agent_examples_execute_portably_through_http"},"selected_pack":{"catalog_id":"personal.agent.spending:spending-baseline@0.1.0","kind":"pack","semantic_digest":"sha256:682c677a946588ed7c7313ed0e36c77af8213d77dd82b9979d7d7b8454d29291"},"explanation_codes":["controlspec.core.allow","personal.spending.within_boundary"],"explanation_basis":"reviewed fixture; observe validates exact API match"},"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"lanes":{"without":{"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"final_state":{"balance_minor_units":45700,"quote_total_minor_units":100000,"discount_basis_points":0},"intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":4300},"context_digest":"sha256:8dff65808208414a1e0918b6d2549c75decee5ea0dfce4e28a1594df2a1b845f","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-42","intent_digest":"sha256:251fff20bf91e75d47b48b2bdce71bb8e41d14f9d5eda519d06d035f694d8d89","intent_id":"groceries-42","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"events":[{"step":0,"kind":"proposed","message":"Identical scripted intent received by an isolated fake target lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":1,"kind":"dispatch","message":"Comparison lane dispatches directly; this control layer is absent.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":2,"kind":"recheck","message":"No ControlSpec binding recheck in this comparison lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":3,"kind":"target","message":"Fake target changed. No external action occurred.","state":{"balance_minor_units":45700,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":4,"kind":"receipt","message":"Sandbox action observed.","state":{"balance_minor_units":45700,"quote_total_minor_units":100000,"discount_basis_points":0}}],"mutated":true,"target_evidence":[{"kind":"sandbox_target_event","scope":"fake_target_only","intent_digest":"sha256:251fff20bf91e75d47b48b2bdce71bb8e41d14f9d5eda519d06d035f694d8d89","before":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"after":{"balance_minor_units":45700,"quote_total_minor_units":100000,"discount_basis_points":0},"production_evidence":false}],"completion":"Sandbox action observed."},"controlled":{"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"final_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":4300},"context_digest":"sha256:8dff65808208414a1e0918b6d2549c75decee5ea0dfce4e28a1594df2a1b845f","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-42","intent_digest":"sha256:251fff20bf91e75d47b48b2bdce71bb8e41d14f9d5eda519d06d035f694d8d89","intent_id":"groceries-42","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"events":[{"step":0,"kind":"proposed","message":"Identical scripted intent received by an isolated fake target lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":1,"kind":"decision","message":"Real reference decision: allow.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":2,"kind":"recheck","message":"Binding valid for proposed action: false.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":3,"kind":"target","message":"Dispatch held; fake target unchanged.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":4,"kind":"receipt","message":"Reference receipt: incomplete; verified evidence: 0. Sandbox events do not upgrade this receipt.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}}],"mutated":false,"target_evidence":[],"completion":"Action held; fake target unchanged."}}},{"id":"missing-proof","title":"Done is only a claim","description":"A fake purchase runs, but target evidence is withheld from both lanes.","domain":"personal","scenario_id":"groceries-42","changed":false,"evidence_available":false,"observation":{"scenario_id":"groceries-42","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","pack_catalog_id":"personal.agent.spending:spending-baseline@0.1.0","verdict":"allow","route_kind":"continue","route_id":"continue","recheck_valid":true,"changed_recheck_valid":false,"receipt_status":"incomplete","missing_evidence_count":1,"verified_evidence_count":0,"assessment_basis":"caller_report_only","stored":false,"durable":false,"route_substitution_rejected":true},"original_intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":4200},"context_digest":"sha256:dfa417e39a090e49ef9b50cda7e6396ef951cde9696490f7ff5bb28961cc72cb","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-42","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","intent_id":"groceries-42","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"proposed_intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":4200},"context_digest":"sha256:dfa417e39a090e49ef9b50cda7e6396ef951cde9696490f7ff5bb28961cc72cb","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-42","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","intent_id":"groceries-42","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"source":{"request":"examples/controlspec/personal-agent-spending/requests/groceries-42.json","reference_test":{"path":"backend/tests/api/test_controlspec_reference_api_examples.py","revision":"a6d0c2685a62eb9e21eef49355ed20687bdf9563","symbol":"test_personal_agent_examples_execute_portably_through_http"},"selected_pack":{"catalog_id":"personal.agent.spending:spending-baseline@0.1.0","kind":"pack","semantic_digest":"sha256:682c677a946588ed7c7313ed0e36c77af8213d77dd82b9979d7d7b8454d29291"},"explanation_codes":["controlspec.core.allow","personal.spending.within_boundary"],"explanation_basis":"reviewed fixture; observe validates exact API match"},"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"lanes":{"without":{"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"final_state":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0},"intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":4200},"context_digest":"sha256:dfa417e39a090e49ef9b50cda7e6396ef951cde9696490f7ff5bb28961cc72cb","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-42","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","intent_id":"groceries-42","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"events":[{"step":0,"kind":"proposed","message":"Identical scripted intent received by an isolated fake target lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":1,"kind":"dispatch","message":"Comparison lane dispatches directly; this control layer is absent.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":2,"kind":"recheck","message":"No ControlSpec binding recheck in this comparison lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":3,"kind":"target","message":"Fake target changed. No external action occurred.","state":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":4,"kind":"receipt","message":"Caller reports done; target proof is absent.","state":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0}}],"mutated":true,"target_evidence":[],"completion":"Caller reports done; target proof is absent."},"controlled":{"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"final_state":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0},"intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":4200},"context_digest":"sha256:dfa417e39a090e49ef9b50cda7e6396ef951cde9696490f7ff5bb28961cc72cb","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-42","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","intent_id":"groceries-42","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"events":[{"step":0,"kind":"proposed","message":"Identical scripted intent received by an isolated fake target lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":1,"kind":"decision","message":"Real reference decision: allow.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":2,"kind":"recheck","message":"Binding valid for proposed action: true.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":3,"kind":"target","message":"Fake target changed. No external action occurred.","state":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":4,"kind":"receipt","message":"Reference receipt: incomplete; verified evidence: 0. Sandbox events do not upgrade this receipt.","state":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0}}],"mutated":true,"target_evidence":[],"completion":"Completion unverified; no sandbox target evidence received."}}},{"id":"allowed","title":"The $42 purchase proceeds","description":"An allowed, unchanged action reaches the fake target. Sandbox evidence is visible.","domain":"personal","scenario_id":"groceries-42","changed":false,"evidence_available":true,"observation":{"scenario_id":"groceries-42","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","pack_catalog_id":"personal.agent.spending:spending-baseline@0.1.0","verdict":"allow","route_kind":"continue","route_id":"continue","recheck_valid":true,"changed_recheck_valid":false,"receipt_status":"incomplete","missing_evidence_count":1,"verified_evidence_count":0,"assessment_basis":"caller_report_only","stored":false,"durable":false,"route_substitution_rejected":true},"original_intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":4200},"context_digest":"sha256:dfa417e39a090e49ef9b50cda7e6396ef951cde9696490f7ff5bb28961cc72cb","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-42","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","intent_id":"groceries-42","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"proposed_intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":4200},"context_digest":"sha256:dfa417e39a090e49ef9b50cda7e6396ef951cde9696490f7ff5bb28961cc72cb","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-42","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","intent_id":"groceries-42","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"source":{"request":"examples/controlspec/personal-agent-spending/requests/groceries-42.json","reference_test":{"path":"backend/tests/api/test_controlspec_reference_api_examples.py","revision":"a6d0c2685a62eb9e21eef49355ed20687bdf9563","symbol":"test_personal_agent_examples_execute_portably_through_http"},"selected_pack":{"catalog_id":"personal.agent.spending:spending-baseline@0.1.0","kind":"pack","semantic_digest":"sha256:682c677a946588ed7c7313ed0e36c77af8213d77dd82b9979d7d7b8454d29291"},"explanation_codes":["controlspec.core.allow","personal.spending.within_boundary"],"explanation_basis":"reviewed fixture; observe validates exact API match"},"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"lanes":{"without":{"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"final_state":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0},"intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":4200},"context_digest":"sha256:dfa417e39a090e49ef9b50cda7e6396ef951cde9696490f7ff5bb28961cc72cb","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-42","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","intent_id":"groceries-42","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"events":[{"step":0,"kind":"proposed","message":"Identical scripted intent received by an isolated fake target lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":1,"kind":"dispatch","message":"Comparison lane dispatches directly; this control layer is absent.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":2,"kind":"recheck","message":"No ControlSpec binding recheck in this comparison lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":3,"kind":"target","message":"Fake target changed. No external action occurred.","state":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":4,"kind":"receipt","message":"Sandbox action observed.","state":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0}}],"mutated":true,"target_evidence":[{"kind":"sandbox_target_event","scope":"fake_target_only","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","before":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"after":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0},"production_evidence":false}],"completion":"Sandbox action observed."},"controlled":{"initial_state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"final_state":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0},"intent":{"action":{"domain_action":"personal.purchase","requested_effect":{"personal.agent.spending.effect":"personal.purchase"},"type":"commit"},"actor":{"actor_id":"personal.agent.spending-agent","attributes":{},"extensions":{},"lineage_refs":[],"namespace":"personal.agent.spending","owner_ref":null,"schema":"controlspec/v0/actor","schema_version":"0.1.0","type":"agent","version":"1"},"context":{"personal.spending.recurring":false,"personal.spending.total_minor_units":4200},"context_digest":"sha256:dfa417e39a090e49ef9b50cda7e6396ef951cde9696490f7ff5bb28961cc72cb","cost":null,"evidence_refs":[],"extensions":{},"idempotency_key":"groceries-42","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","intent_id":"groceries-42","namespace":"personal.agent.spending","requested_at":"2026-08-20T12:00:00.000000Z","requested_route":null,"resource":{"attributes":{},"business_id":null,"display_name":null,"extensions":{},"namespace":"personal.agent.spending","resource_id":"personal.agent.spending-resource","schema":"controlspec/v0/resource","schema_version":"0.1.0","type":"personal.cart","version":"1"},"retry_count":0,"schema":"controlspec/v0/action-intent","schema_version":"0.1.0"},"events":[{"step":0,"kind":"proposed","message":"Identical scripted intent received by an isolated fake target lane.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":1,"kind":"decision","message":"Real reference decision: allow.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":2,"kind":"recheck","message":"Binding valid for proposed action: true.","state":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":3,"kind":"target","message":"Fake target changed. No external action occurred.","state":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0}},{"step":4,"kind":"receipt","message":"Reference receipt: incomplete; verified evidence: 0. Sandbox events do not upgrade this receipt.","state":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0}}],"mutated":true,"target_evidence":[{"kind":"sandbox_target_event","scope":"fake_target_only","intent_digest":"sha256:eae71621e734dcf7b654a778562900935637da3b62384ac8a06802ede2d1c16d","before":{"balance_minor_units":50000,"quote_total_minor_units":100000,"discount_basis_points":0},"after":{"balance_minor_units":45800,"quote_total_minor_units":100000,"discount_basis_points":0},"production_evidence":false}],"completion":"Sandbox action observed; reference completion remains unverified."}}}]}</script>
<script>
'use strict';
const data=JSON.parse(document.getElementById('action-data').textContent);
const scenes=data.scenes;
let current=0,phase=0,timer=null;
const labels=['Overspend','Discount','Self-approval','Changed action','Missing proof','Allowed action'];
const lessons=['A spending limit changes the route before the simulated purchase.','A legitimate sale can still require someone else’s approval.','The agent cannot become its own independent approver.','Permission for the original action does not cover a changed action.','“Done” is a report. Verified completion requires the right evidence.','Useful autonomy includes letting permitted actions proceed.'];
const $=id=>document.getElementById(id);
const money=n=>new Intl.NumberFormat('en-US',{style:'currency',currency:'USD'}).format(n/100);
const names={allow:'ALLOW',allow_with_conditions:'CONDITIONS REQUIRED',require_approval:'APPROVAL REQUIRED',block:'BLOCKED'};
scenes.forEach((s,i)=>{const b=document.createElement('button');b.type='button';b.textContent=String(i+1).padStart(2,'0')+' '+labels[i];b.addEventListener('click',()=>{pause();current=i;phase=0;render()});$('scenes').append(b)});
function pause(){if(timer!==null)clearInterval(timer);timer=null;$('play').textContent='▶ Resume comparison'}
function advance(){if(phase<3){phase++}else if(current<scenes.length-1){current++;phase=0}else{pause();render();return}render()}
function render(){
const s=scenes[current],isQuote=s.domain==='smb';
$('title').textContent=s.title;$('description').textContent=s.description;$('domain').textContent=isQuote?'Sales agent / sandbox quote':'Personal agent / sandbox account';$('counter').textContent=String(current+1).padStart(2,'0')+' / '+String(scenes.length).padStart(2,'0');
[...$('scenes').children].forEach((b,i)=>b.setAttribute('aria-pressed',String(i===current)));
document.querySelectorAll('.phases span').forEach((p,i)=>{p.classList.toggle('active',i<=phase);if(i===phase)p.setAttribute('aria-current','step');else p.removeAttribute('aria-current')});
for(const key of ['without','controlled']){
const el=$(key),lane=s.lanes[key],after=phase>=2,state=after?lane.final_state:lane.initial_state;
el.querySelector('.state-label').textContent=isQuote?'Simulated quote total':'Simulated account balance';
el.querySelector('.value').textContent=money(isQuote?state.quote_total_minor_units:state.balance_minor_units);
el.querySelector('.state-caption').textContent=isQuote?'Discount: '+(state.discount_basis_points/100)+'%':after?(lane.mutated?'Sandbox debit recorded':'No sandbox debit'):'Same starting balance in both lanes';
const badge=el.querySelector('.status');badge.classList.toggle('done',phase>=1);
badge.textContent=phase===0?'INTENT RECEIVED':key==='without'?(phase<2?'DIRECT DISPATCH':lane.mutated?'SANDBOX TARGET CHANGED':'NO TARGET CHANGE'):phase===1?(names[s.observation.verdict]||s.observation.verdict):lane.mutated?'SANDBOX ACTION PERMITTED':'HELD · TARGET UNCHANGED';
if(key==='controlled'&&s.id==='changed-binding'&&phase>=2&&s.observation.changed_recheck_valid===false)badge.textContent='BINDING RECHECK FAILED';
if(key==='controlled'&&phase===3&&lane.mutated&&lane.target_evidence.length===0)badge.textContent='COMPLETION UNVERIFIED';
const log=el.querySelector('.events');log.replaceChildren();
const lines=phase===0?['Scripted proposal received. Inspect the trace for exact input.']:phase===1?(key==='without'?['ControlSpec is absent from this simulated dispatch path.','No ControlSpec binding recheck in this lane.']:['Reference verdict: '+s.observation.verdict,'Exact binding recheck: '+String(s.id==='changed-binding'?s.observation.changed_recheck_valid:s.observation.recheck_valid)]):lane.events.filter(e=>e.step>0&&e.step<=(phase===2?3:4)).reverse().map(e=>e.message);
lines.forEach(line=>{const p=document.createElement('p');p.textContent='› '+line;log.append(p)});
const evidence=el.querySelector('.evidence');evidence.textContent=phase<3?'Evidence assessment appears at the final step.':key==='controlled'?'Sandbox target events: '+lane.target_evidence.length+'. Reference receipt: '+s.observation.receipt_status+'. Verified reference evidence: '+s.observation.verified_evidence_count+'.':typeof lane.completion==='string'?'Sandbox completion: '+lane.completion:JSON.stringify(lane.completion);
}
$('rule').textContent=['Example rule: purchases over $75 require approval.','Example rule: discounts over 10% need independent manager approval.','Example rule: the approver must be separate from the actor and proposer.','Binding rule: recheck the exact action before dispatch.','Evidence rule: a caller report cannot replace required purchase evidence.','Example rule: non-recurring purchases up to $75 may proceed; purchase evidence is still required.'][current];
$('lesson').textContent=lessons[current];$('trace').textContent=JSON.stringify(s,null,2);$('provenance').textContent='Source commit: '+data.source_commit+' · Mode: '+data.mode+' · Full build provenance is included in the downloadable trace.';
const ended=current===scenes.length-1&&phase===3;$('step').disabled=ended;
$('timing').textContent='Scene '+(current+1)+' of '+scenes.length+' · Step '+(phase+1)+' of 4'+(ended?' · Replay complete':'');
if(ended&&timer!==null)pause();if(timer===null)$('play').textContent=ended?'↺ Replay comparison':current===0&&phase===0?'▶ Run the comparison':'▶ Resume comparison';
$('announce').textContent=s.title+'. '+['Intent received','Decision shown','Sandbox target outcome shown','Evidence assessment shown'][phase]+'.';
}
$('play').addEventListener('click',()=>{if(timer!==null){pause();return}if(current===scenes.length-1&&phase===3){current=0;phase=0}timer=setInterval(advance,2500);render();$('play').textContent='Ⅱ Pause comparison'});
$('step').addEventListener('click',()=>{pause();advance()});$('reset').addEventListener('click',()=>{pause();current=0;phase=0;render()});render();
</script>
</body></html>