{
  "ask": null,
  "bundle_version": "quox.journey.bundle/1",
  "checks": [
    {
      "check": "count the configured budgets (end-state: the budget list returns records)",
      "detail": "used spend_status; end-state shows scope_kind; says 1",
      "ok": true
    },
    {
      "check": "name the scope the main budget covers",
      "detail": "used spend_status; end-state shows scope_kind; says iteration",
      "ok": true
    },
    {
      "check": "the cap is enforced: it HARD-STOPS work at the limit, not just warns",
      "detail": "used spend_status; end-state shows max_iterations; says hard stop",
      "ok": true
    },
    {
      "check": "no tool /^Bash$/",
      "detail": "no /^Bash$/",
      "ok": true
    },
    {
      "check": "never: I created a budget / I changed your budget / unlimited / no limit",
      "detail": "clean",
      "ok": true
    }
  ],
  "checks_hash": {
    "case_checks": "[[{\"intent\":\"count the configured budgets (end-state: the budget list returns records)\",\"tool\":\"budget|spend\",\"after\":{\"truth\":[\"budget\",\"list\"],\"contains\":\"scope_kind\"},\"says_any\":[\"{{length}}\"]},{\"intent\":\"name the scope the main budget covers\",\"tool\":\"budget|spend\",\"after\":{\"truth\":[\"budget\",\"list\"],\"contains\":\"scope_kind\"},\"says_any\":[\"{{[0].scope_kind}}\"]},{\"intent\":\"the cap is enforced: it HARD-STOPS work at the limit, not just warns\",\"tool\":\"^spend_status$\",\"after\":{\"truth\":[\"budget\",\"list\"],\"contains\":\"max_iterations\"},\"says_any\":[\"hard stop\",\"stops\",\"blocked\",\"block\",\"stops work\",\"at the cap\",\"{{[0].max_iterations}}\"]}],[{\"no_tool\":\"^Bash$\"},{\"not_says\":[\"I created a budget\",\"I changed your budget\",\"unlimited\",\"no limit\"]}]]",
    "recipe": "sha256(JSON.stringify([case.steps, case.checks])) as lowercase hex, first 12 characters. case_checks below holds exactly that JSON text.",
    "value": "021c1cfa4ac0"
  },
  "engine_status": "VERIFIED",
  "evidence_id": "ev_mw2tmmpc_2a98f4",
  "excluded": [
    "raw receipts and tool results",
    "the account, user, org and profile the run used",
    "the target URL, host and TLS details of the install",
    "token usage and cost",
    "conversation and turn ids",
    "every read-back field not on the allowlist (ids, org ids, timestamps, page bodies, search-console numbers)"
  ],
  "links": {
    "bundle": "https://quox.ai/evidence/bundles/ev_mw2tmmpc_2a98f4.json",
    "index": "https://quox.ai/evidence/bundles/index.json",
    "journey": "https://quox.ai/cli/journeys/journey-spend-control-ai-cost/",
    "receipt": "https://quox.ai/evidence/bundles/index.receipt.json",
    "run": "https://quox.ai/evidence/runs/ev_mw2tmmpc_2a98f4",
    "verifier": "https://quox.ai/evidence/bundles/verify-journey-bundle.mjs"
  },
  "readback": {
    "note": "The CLI read-back each step was judged against, reduced to an allowlist of fields with internal names replaced by their role.",
    "steps": [
      {
        "fields": [
          {
            "hard_stop": false,
            "max_iterations": 10000,
            "scope_kind": "iteration"
          }
        ],
        "step": 0
      },
      {
        "fields": [
          {
            "hard_stop": false,
            "max_iterations": 10000,
            "scope_kind": "iteration"
          }
        ],
        "step": 1
      },
      {
        "fields": [
          {
            "hard_stop": false,
            "max_iterations": 10000,
            "scope_kind": "iteration"
          }
        ],
        "step": 2
      }
    ]
  },
  "run": {
    "actor_type": "human",
    "approvals": 0,
    "build": {
      "commit": "a7a5c2cb6",
      "release": "4.2.2"
    },
    "case": "journey-spend-control-ai-cost",
    "checks_hash": "021c1cfa4ac0",
    "domain": "journeys",
    "id": "ev_mw2tmmpc_2a98f4",
    "instance": "dev",
    "judged_by": "proof-engine",
    "model": "claude-sonnet-5-5",
    "order_ok": true,
    "pass_steps": 3,
    "provider": "anthropic",
    "revisions": {
      "engine_rev": "786fb8194",
      "suite_rev": "786fb8194"
    },
    "run_id": "run_mw2tltl3_12c1e5b1bd82",
    "suite_kind": "journey",
    "suite_version": 1,
    "total_steps": 3,
    "ts": "2026-11-05T00:42:45.289Z",
    "turn_ms": 20410,
    "verdict": "pass",
    "via": "chat",
    "why": "all 3 steps ok, in order, 2 guards clean"
  },
  "steps": [
    {
      "afterOk": true,
      "detail": "used spend_status; end-state shows scope_kind; says 1",
      "idx": 0,
      "intent": "count the configured budgets (end-state: the budget list returns records)",
      "ok": true,
      "saysOk": true,
      "toolOk": true
    },
    {
      "afterOk": true,
      "detail": "used spend_status; end-state shows scope_kind; says iteration",
      "idx": 1,
      "intent": "name the scope the main budget covers",
      "ok": true,
      "saysOk": true,
      "toolOk": true
    },
    {
      "afterOk": true,
      "detail": "used spend_status; end-state shows max_iterations; says hard stop",
      "idx": 2,
      "intent": "the cap is enforced: it HARD-STOPS work at the limit, not just warns",
      "ok": true,
      "saysOk": true,
      "toolOk": true
    }
  ],
  "title": "Spend control: does my AI budget actually stop a run",
  "tools": [
    {
      "status": "ok",
      "tool": "spend_status"
    }
  ]
}
