{
  "checker": {
    "claims": [
      {
        "claim": "The demo exercises the pipeline with two free stand-in agents and demonstrates the known fix passes while doing nothing fails.",
        "command": "<guest-path> demo --html <guest-path>",
        "evidence": "agent-bench demo</title><style>\n:root{color-scheme:light dark;--bg:#fcfcfb;--card:#f4f3f0;--fg:#0b0b0b;--muted:#52514e;--line:#e2e1dc;--success:#2a78d6;--fail:#eb6834;--bar:#2a78d6;--ring:#fcfcfb}\n@media(prefers-color-scheme:dark){:root{--bg:#1a1a19;--card:#242423;--fg:#ffffff;--muted:#c3c2b7;--line:#383835;--success:#3987e5;--fail:#d95926;--bar:#3987e5;--ring:#1a1a19}}\n*{box-sizing:border-box}\nbody{margin:0;background:var(--bg);color:var(--fg);font:16px/1.55 system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif}\nmain{max-width:980px;margin:0 auto;padding:20px 16px 64px}\nh1{font-size:1.7rem;lin",
        "expected": "stub-solver passes and stub-lazy fails",
        "input": "toy task, stub-solver and stub-lazy",
        "kind": "claim",
        "outcome": "Real input produced the expected result: agent-bench demo",
        "returncode": 0,
        "source": "They cost nothing and use no model, so they test the plumbing, not any agent.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Inspected README entry points and CLI: agentbench demo is a one-shot operation; the product has no scheduler, recurring loop, webhook or cycle trigger.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Inspected README entry points and CLI: agentbench demo is a one-shot operation; the product has no scheduler, recurring loop, webhook or cycle trigger.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>",
        "demo",
        "--html",
        "<guest-path>"
      ],
      "expected_file": "<guest-path>",
      "file_checked": true,
      "file_excerpt": "agent-bench demo</title><style>\n:root{color-scheme:light dark;--bg:#fcfcfb;--card:#f4f3f0;--fg:#0b0b0b;--muted:#52514e;--line:#e2e1dc;--success:#2a78d6;--fail:#eb6834;--bar:#2a78d6;--ring:#fcfcfb}\n@media(prefers-color-scheme:dark){:root{--bg:#1a1a19;--card:#242423;--fg:#ffffff;--muted:#c3c2b7;--line:#383835;--success:#3987e5;--fail:#d95926;--bar:#3987e5;--ring:#1a1a19}}\n*{box-sizing:border-box}\nbody{margin:0;background:var(--bg);color:var(--fg);font:16px/1.55 system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif}\nmain{max-width:980px;margin:0 auto;padding:20px 16px 64px}\nh1{font-size:1.7rem;line-height:1.2;margin:.2em 0 .3em}\nh2{font-size:1.25rem;margin:2.2em 0 .5em;padding-top:.4em;border-top:1px solid var(--line)}\nh3{font-size:1.02rem;margin:1.6em 0 .4em}\np,li{max-width:70ch}\n.sub,.note,figcaption{color:var(--muted);font-size:.92rem}\n.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:18px 0}\n.tile{background:var(--card);border-radius:10px;padding:12px 14px}\n.tile b{display:block;font-size:1.7rem;line-height:1.1;font-variant-numeric:tabular-nums}\n.tile span{color:var(--muted);font-size:.85rem}\n.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:10px 0}\ntable{border-collapse:collapse;width:100%;font-size:.9rem;font-variant-numeric:tabular-nums}\nth,td{padding:7px 10px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}\nth:first-child,td:first-child,th.l,td.l{text-align:left}\nth{font-weight:600;color:var(--muted);font-size:.8rem;border-bottom:2px solid var(--line)}\ntd.wrap{white-space:normal;min-width:260px}\n.pass{color:var(--success);font-weight:600}.fail{color:var(--fail);font-weight:600}\nsvg{display:block;width:100%;height:auto}\nsvg text{fill:var(--fg);font:12px system-ui,sans-serif}svg .m{fill:var(--muted)}\nsvg .grid{stroke:var(--line);stroke-width:1}\n.dot{fill:var(--success);stroke:var(--ring);stroke-width:2}\n.x{stroke:var(--fail);stroke-width:2.4;stroke-linecap:round}\n.legend{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.88rem;margin:6px 0}\n.legend i{display:inline-block;vertical-align:-2px;margin-right:6px}\n.bars .row{margin:10px 0}.bars .top{display:flex;justify-content:space-between;gap:8px;font-size:.9rem}\n.track{height:10px;background:var(--card);border-radius:5px;margin-top:4px}\n.fill{height:10px;background:var(--bar);border-radius:0 5px 5px 0}\n.fill.none{background:var(--fail);width:3px!important}\ndetails{background:var(--card);border-radius:8px;padding:8px 12px;margin:8px 0}summary{cursor:pointer;font-weight:600}\ndl{margin:.5em 0}dt{font-weight:600;margin-top:.5em}dd{margin:0;color:var(--muted)}\ncode{font-size:.88em}\n@media(max-width:560px){body{font-size:15px}h1{font-size:1.4rem}th,td{padding:6px 7px}}\n</style></head><body><main><h1>agent-bench demo</h1><p class=\"sub\">2 coding-agent setups (model + CLI) on 1 checkable tasks. Dollar figures are dollar-equivalents at list price (2026-10-09 table) from subscription runs. Read \u201cMethodology and limits\u201d before quoting any number.</p><div class=\"tiles\"><div class=\"tile\"><b>2</b><span>runs recorded</span></div><div class=\"tile\"><b>1</b><span>passed the hidden check</span></div><div class=\"tile\"><b>0</b><span>killed at a cap</span></div><div class=\"tile\"><b>$0.00</b><span>dollar-equivalent, all runs</span></div></div><h2>Conclusion</h2><p class='note'>No conclusion text supplied.</p><h2>Leaderboards</h2><p class=\"note\"><b>Passed</b> = finished inside every cap and passed the hidden check. <b>Work passes check</b> = the hidden check passed on what the run had written, even when it was killed at a cap. Ranked by share of runs passed, then dollars per solved run (all spend, failures included, divided by passes), then wall time. Runs held to different caps are ranked separately; the task sets differ too (the M4 rerun covers only the three harder tasks), so the two boards are not comparable with each other.</p><h3>Your runs: cap on fresh tokens, dollars and minutes (see the Cap profile column)</h3><div class=\"scroll\"><table><thead><tr><th class=\"l\">#</th><th class=\"l\">Contestant</th><th class=\"\">Passed</th><th class=\"\">Work passes check</th><th class=\"\">Tasks all-pass</th><th class=\"\">$ spent</th><th class=\"\">$ per solved run</th><th class=\"\">Mean wall s</th><th class=\"\">Mean total tokens</th><th class=\"\">Mean fresh tokens</th><th class=\"\">Workers</th><th class=\"\">Capped</th><th class=\"\">Finished or capped</th></tr></thead><tbody><tr><td class=\"l\">1</td><td class=\"l\">stub-solver</td><td class=\"\"><span class=\"pass\">1/1</span></td><td class=\"\">1/1</td><td class=\"\">1/1</td><td class=\"\">$0.000</td><td class=\"\">$0.000</td><td class=\"\">0</td><td class=\"\">1,060</td><td class=\"\">1,060</td><td class=\"\"></td><td class=\"\"></td><td class=\"\">1 finished / 0 capped</td></tr><tr><td class=\"l\">2</td><td class=\"l\">stub-lazy</td><td class=\"\"><span class=\"fail\">0/1</span></td><td class=\"\">0/1</td><td class=\"\">0/1</td><td class=\"\">$0.000</td><td class=\"\">n/a</td><td class=\"\">0</td><td class=\"\">1,060</td><td class=\"\">1,060</td><td class=\"\"></td><td class=\"\"></td><td class=\"\">1 finished / 0 capped</td></tr></tbody></table></div><h2>Cost against outcome</h2><figure style=\"margin:0\"><div class=\"legend\"><span><i><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" style=\"display:inline\"><circle class=\"dot\" cx=\"7\" cy=\"7\" r=\"4.5\"/></svg></i>passed</span><span><i><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" style=\"display:inline\"><path class=\"x\" d=\"M3 3L11 11M11 3L3 11\"/></svg></i>failed or capped</span></div><svg viewBox=\"0 0 420 154\" role=\"img\" aria-label=\"Cost of each run on a log scale; filled circle passed, cross failed or capped\"><line class=\"grid\" x1=\"94.1\" x2=\"94.1\" y1=\"8\" y2=\"130\"/><text class=\"m\" x=\"94.1\" y=\"146\" text-anchor=\"middle\">$0.01</text><line class=\"grid\" x1=\"251.0\" x2=\"251.0\" y1=\"8\" y2=\"130\"/><text class=\"m\" x=\"251.0\" y=\"146\" text-anchor=\"middle\">$0.1</text><line class=\"grid\" x1=\"408.0\" x2=\"408.0\" y1=\"8\" y2=\"130\"/><text class=\"m\" x=\"408.0\" y=\"146\" text-anchor=\"middle\">$1</text><text x=\"12\" y=\"21\">stub-solver</text><circle class=\"dot\" cx=\"12.0\" cy=\"32\" r=\"4.5\"><title>toy-null-total (byo): pass, $0.000, 0 s</title></circle><text x=\"12\" y=\"79\">stub-lazy</text><g><title>toy-null-total (byo): fail, $0.000, 0 s</title><path class=\"x\" d=\"M8.0 86L16.0 94M16.0 86L8.0 94\"/></g></svg><figcaption>One mark per run, log-scale dollar-equivalent. Within a row the vertical slot is the task, top to bottom: toy-null-total. Hover or long-press a mark for its numbers.</figcaption></figure><h3>Cost per solved run</h3><div class=\"bars\"><div class=\"row\"><div class=\"top\"><span>stub-solver</span><span>$0.000 \u00b7 1/1 passed</span></div><div class=\"track\"><div class=\"fill\" style=\"width:1.5%\"></div></div></div><div class=\"row\"><div class=\"top\"><span>stub-lazy</span><span>no solved run</span></div><div class=\"track\"><div class=\"fill none\"></div></div></div></div><p class=\"note\">All spend on a contestant (failed and capped runs included) divided by its passes. Linear scale.</p><h2>Per task</h2><h3>toy-null-total</h3><p class='note'>total() crashes on an empty cart</p><div class=\"scroll\"><table><thead><tr><th class=\"l\">Contestant</th><th class=\"\">Cap profile</th><th class=\"\">Passed</th><th class=\"\">Work passes check</th><th class=\"\">Mean $</th><th class=\"\">$ range</th><th class=\"\">Mean wall s</th><th class=\"\">Wall range</th><th class=\"\">Mean total tokens</th><th class=\"\">Mean fresh tokens</th><th class=\"\">Workers</th><th class=\"\">Capped</th><th class=\"\">Finished or capped</th></tr></thead><tbody><tr><td class=\"l\">stub-solver</td><td class=\"\">byo</td><td class=\"\"><span class=\"pass\">1/1</span></td><td class=\"\">1/1</td><td class=\"\">$0.000</td><td class=\"\"></td><td class=\"\">0</td><td class=\"\"></td><td class=\"\">1,060</td><td class=\"\">1,060</td><td class=\"\"></td><td class=\"\"></td><td class=\"\">1 finished / 0 capped</td></tr><tr><td class=\"l\">stub-lazy</td><td class=\"\">byo</td><td class=\"\"><span class=\"fail\">0/1</span></td><td class=\"\">0/1</td><td class=\"\">$0.000</td><td class=\"\"></td><td class=\"\">0</td><td class=\"\"></td><td class=\"\">1,060</td><td class=\"\">1,060</td><td class=\"\"></td><td class=\"\"></td><td class=\"\">1 finished / 0 capped</td></tr></tbody></table></div><h2>Variance between repeats</h2><p>Every cell is a single run, so there is no variance estimate.</p><h2>Failed and capped runs</h2><div class=\"scroll\"><table><thead><tr><th class=\"l\">Task</th><th class=\"l\">Contestant</th><th class=\"l\">Cap profile</th><th class=\"\">Result</th><th class=\"\">Finished or capped</th><th class=\"\">What the output looked like</th></tr></thead><tbody><tr><td class=\"l\">toy-null-total</td><td class=\"l\">stub-lazy</td><td class=\"l\">byo</td><td class=\"\"><span class=\"fail\">fail</span></td><td class=\"\">finished</td><td class=\"wrap l\">finished and stopped, but the hidden check failed (0 files edited (+0/-0)): FAILED (errors=1)</td></tr></tbody></table></div><h2>Passing diffs against the real fix</h2><p class=\"note\">Source lines changed (added + removed, tests excluded) by each passing run, against the upstream pull request. A size comparison, not a quality verdict; test files, docs and change logs, lockfiles an install wrote, and files a task manifest lists as unrelated to the fix (three type-annotation files in the taskiq pull request) are left out. Data tasks have no code fix to compare.</p><div class=\"scroll\"><table><thead><tr><th class=\"l\">Task</th><th class=\"l\">Contestant</th><th class=\"l\">Cap profile</th><th class=\"\">Run lines</th><th class=\"\">Fix lines</th><th class=\"\">Ratio</th><th class=\"\">Fix files touched</th><th class=\"\">Verdict</th></tr></thead><tbody><tr><td class=\"l\">toy-null-total</td><td class=\"l\">stub-solver</td><td class=\"l\">byo</td><td class=\"\">4</td><td class=\"\">4</td><td class=\"\">1.0\u00d7</td><td class=\"\">1/1</td><td class=\"\">near the real fix</td></tr></tbody></table></div><h2>All runs</h2><div class=\"scroll\"><table><thead><tr><th class=\"l\">Task</th><th class=\"l\">Contestant</th><th class=\"l\">Cap profile</th><th class=\"\">Result</th><th class=\"\">Wall s</th><th class=\"\">Total tokens</th><th class=\"\">Fresh tokens</th><th class=\"\">$ equiv</th><th class=\"\">Workers</th><th class=\"\">Effort seen</th><th class=\"\">Capped</th><th class=\"\">Finished or capped</th></tr></thead><tbody><tr><td class=\"l\">toy-null-total</td><td class=\"l\">stub-lazy</td><td class=\"l\">byo: 100k fresh tokens, 2 min, $0.01</td><td class=\"\"><span class=\"fail\">fail</span></td><td class=\"\">0</td><td class=\"\">1,060</td><td class=\"\">1,060</td><td class=\"\">$0.0000</td><td class=\"\"></td><td class=\"\">?</td><td class=\"\">no</td><td class=\"\">finished</td></tr><tr><td class=\"l\">toy-null-total</td><td class=\"l\">stub-solver</td><td class=\"l\">byo: 100k fresh tokens, 2 min, $0.01</td><td class=\"\"><span class=\"pass\">pass</span></td><td class=\"\">0</td><td class=\"\">1,060</td><td class=\"\">1,060</td><td class=\"\">$0.0000</td><td class=\"\"></td><td class=\"\">?</td><td class=\"\">no</td><td class=\"\">finished</td></tr></tbody></table></div><h2>Workflow-match check</h2><p class='note'>Five descriptive questions per task document whether it resembles real work. These questions are not a scoring gate.</p><h2>Methodology and limits</h2><ul><li><b>The unit is model + CLI, not the model alone.</b> Each column bundles a model with that vendor\u2019s agent harness and any config files you listed for it.</li><li><b>Small sample.</b> 1 task(s) of your own, 1 run per cell. A pass means the run worked once, not that the contestant is reliable. Treat this as a first look at your own work, not a ranking.</li><li><b>Settings held equal:</b> the same effort level for every contestant unless you set otherwise, connectors off, a fresh checkout and a clean HOME per run, the same prompt, one process at a time. Per-run caps on fresh tokens, dollars and minutes are enforced; a run that hits one is killed, marked <i>capped</i> and counts as not passed.</li><li><b>Pass</b> means the run finished inside every cap and the hidden check passed. The hidden check is copied in only after the run. It is",
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "1/3  Building a toy task: a small repo, a bug, and a hidden test that proves it is fixed ...\n2/3  Running two free stand-in agents on it (no model, no network, $0) ...\n3/3  Results:\n\nContestant   Result  Time  Tokens  $ equiv\n-----------  ------  ----  ------  -------\nstub-solver  pass    0.1s   1,060  $0.0000\nstub-lazy    FAIL    0.0s   1,060  $0.0000\n\nFull report: <guest-path>\nstub-solver copies the known fix and stub-lazy changes nothing: they test the pipeline, not any model. Run `agentbench start` to compare real agents on your own code.\nNext: agentbench doctor, then agentbench start",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "README quickstart demo",
        "command": "<guest-path> demo --html <guest-path>",
        "deferred": false,
        "evidence": "agent runs as your own user, so a determined agent could look for it. Runs whose transcript shows that (the <i>peeked</i> flag) are left out of every table.</li><li><b>Dollars are dollar-equivalents.</b> Tokens \u00d7 the dated public list prices (2026-10-09); a subscription is not billed per token but uses plan limits. It is not an invoice.</li><li><b>Privacy.</b> Contestant CLIs send the files they read to their vendors. The runner has no telemetry or uploads. Explicit task preparation downloads pinned public sources; task setup and checks may download dependencies.</li></ul></main></body></html>",
        "expected": "stub-solver passes, stub-lazy fails and HTML report is written",
        "input": "demo --html fresh file",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md / Quickstart: three commands, no login, no cost",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "System pip install was attempted and rejected by PEP 668; installation succeeded in the README-recommended virtual environment."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Run the documented agentbench demo",
  "operation_scope": "Quickstart install and free demo on Python 3.14.8 in a project virtual environment",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "Created .venv with /opt/homebrew/bin/python3",
    "Installed the checkout with .venv/bin/python -m pip install .",
    "Ran .venv/bin/agentbench demo --html results.html",
    "Replayed the demo and README claim with the coldpass checker"
  ],
  "stuck_step": null,
  "suggested_fix": null
}
