{
 "model": "claude-haiku-5-5",
 "category": "build",
 "scenarios": [
  {
   "id": "a1-static-site",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Five-page site built. I reran node --test on a copy (21/21, exit 0); no broken local links; menu.json parses; lightbox Esc/arrow handling and the validate.js import are present. BrowserVerify report: passed, 54 checks, 30 assertions.",
   "notes": "31 tool calls in one turn, all paired 31/31 in frames and saved session. TaskStop stopped the server (exit 143, tasks frame 'stopped'); leftovers empty and port 8700 free now. 27 outputs all have baseline absent:true, and the latest version sha matches disk; only .gcode/verification/.gitignore is unlisted. The model loaded browser-verify with Skill (state complete, 6-skill catalog); no trigger block. Heartbeats at 20s to 1m20s, 15 s apart, stopped once output arrived. Learned: `node --test` runs 1, successes 0, which is correct after `| tail; echo`. Exit 0, empty .err, turn-complete. Cost recompute matches ($0.0480708, max diff 0 across all 58)."
  },
  {
   "id": "a2-vite-react",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Vite React TS app scaffolded and served; heading changed and confirmed via /src/App.tsx (agent's curl HTTP 200 with new text). I reran npm run build on a copy: exit 0.",
   "notes": "The last tasks frame and TaskOutput show the dev server running at turn end, as asked. result.json leftovers are empty and the port is free now, but the runner checks 5 s after exit, so the ~3 s bound was not measured directly. 19 outputs match disk, all baseline absent. 10/10 paired. No learned file: npm create, npm install and npx vite are not checks. The model left /tmp/g-index.html outside the project (model behaviour)."
  },
  {
   "id": "a3-vite-build-preview",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Vanilla-ts app with a three-origin section. I reran npm run build on a copy: exit 0, same asset hash. Agent's curl got 200 for index.html and the JS asset. Server stopped; agent's follow-up curl failed to connect.",
   "notes": "Baseline check: the scaffold was created in this turn, so src/main.ts has baseline absent:true. versions[0] (2464 bytes) is the scaffold and versions[1] (2845) the edit. The scenario's 'baseline holds scaffold' wording is stale; the content is preserved in versions. dist/ is gitignored and not in outputs. Learned: `npm run build` runs 1, successes 0, correct after `| tail; echo`. 11/11 paired, leftovers empty. Model left temp files in /tmp."
  },
  {
   "id": "a4-canvas-game",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Snake game with pure logic.js and an injectable RNG. I reran npm test on a copy: 69/69, exit 0. No broken links. BrowserVerify report: passed, 25 checks, 14 assertions.",
   "notes": "Test-edit-retest loop ran with no failure-guard stop. The one failed Bash was the model's probe (`...; cat package.json` with no file, exit 1), correctly 'failed' with the exit code shown. Learned: `npm test` runs 4, successes 0, matching the four `npm test | ...` calls; firstSeen and lastSeen match the first and last run. 22/22 paired; 14 outputs fine. One heartbeat at 20s, then stopped. BrowserVerify's own server is gone; leftovers empty."
  },
  {
   "id": "a5-md-docs",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Zero-dependency build.mjs, tests and site. I reran npm test on a copy (44/44, exit 0) and npm run build (6 pages). No broken local links in site/.",
   "notes": "9 outputs are complete: all but the 6 unchanged seed files on disk. Harness issue as known: a5's seed lost its backticks to the shell, so each content/*.md has a repeated, mangled body; not G-Code. Learned: `npm test` runs 3 and `npm run build` runs 1, all successes 0. `npm run build 2>&1 && ls && echo && cat | sed` counts as unknown because of the trailing pipe. That is conservative undercounting per verificationOf, not a misread. The /tmp probe (`cd /tmp && ...`) is correctly not recorded. Scenario lists medium effort, but this run used high (driver config and session), matching the brief. Heartbeats went 'Still waiting' then 'Still thinking' and stopped on output. 22/22 paired; leftovers empty."
  },
  {
   "id": "a6-express-api",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Express 5 notes API with public/index.html. Agent's curl covered create, list, update, delete and 404 cases with the expected statuses in the frames. I reran node --check server.js on a copy: exit 0.",
   "notes": "TaskStop stopped `PORT=8725 node server.js` (exit 143); agent's follow-up curl got connection refused; leftovers empty. 4 outputs match disk (node_modules excluded). 9/9 paired. No check command run, so no learned file. I did not restart the server myself; the API check rests on the agent's recorded curl results."
  },
  {
   "id": "a7-chinese-site",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Four-page Chinese site with menu.json in CNY. I reran node check.mjs on a copy: 4 files pass, exit 0. No broken links; menu.json parses; the Chinese text is intact on disk.",
   "notes": "No U+FFFD in the log or saved session; the final summary is clean Chinese. One BrowserVerify ran and failed on the model's plan (`value` assertion on <html>). It stayed 'failed' with a single 'Error:' prefix and a saved failed report; the corrected plan passed (8 checks, 7 assertions). Both BrowserVerify runs produced their own output sets; outputs match disk. 17/17 paired. No learned file: `node check.mjs` is not a check, by design. Negative test used /tmp and cleaned up. Leftovers empty."
  },
  {
   "id": "j1-todo-fullstack",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Node http todo app with JSON store and vanilla frontend. I reran npm test on a copy: 66/66, exit 0. Agent's curl covered the main endpoints. BrowserVerify report: passed, 28 checks, 16 assertions.",
   "notes": "First BrowserPlan was refused for invalid input ('Not run', state refused), with a result frame and no use frame as designed; the saved session pairs 24/24. Second BrowserPlan returned 'Error: Entry must be a project HTML file...' from inside call() and settled 'failed'. It ran, returned an error and saved nothing, so this fits 'ran and failed stays failed', but it is close to an input refusal. No 'denied' anywhere. TaskStop stopped the server (143); port closed; leftovers empty. data/todos.json is gitignored by the project, so it is absent from outputs. Learned: `npm test` runs 1, successes 0, correct: the `cd` to the project is dropped from the key and `| tail` makes the status unknown. Heartbeats stopped on output. The /style.css and /app.js root-relative links are served by the app's server."
  },
  {
   "id": "j2-cli-tool",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "csvstat.mjs with generated sample.csv. I reran npm test on a copy (30/30, exit 0). Running the tool gave 2000 data rows and 8 columns, matching the agent's reported table. 2163 physical lines come from quoted newlines in records.",
   "notes": "10/10 paired. 5 outputs match disk. Learned: `npm test` runs 2, successes 0, correct after `| tail`; `npm run sample` is correctly not a check. Heartbeats at 20s and 35s, then stopped. Leftovers empty."
  },
  {
   "id": "j7-sonnet-sanity",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "TABLE.md has 8 planet rows. I reran node verify-table.js on a copy: PASS, exit 0.",
   "notes": "Small baseline: 3 requests, 4 tool calls paired, cache read 38,037 of 41,279, cost $0.00193542, recompute exact. Model id is claude-haiku-5-5; the scenario name is historical. Scenario lists medium effort, but this run used high, as the brief says. No learned file, because `node verify-table.js` is not a check. Common to all 10 build scenarios: exit 0, empty .err, turn-complete, 31 tools including TeamMemoryWrite and a 6-skill Skill catalog, no mcp__/DeferredToolCall/GPCI/DSH traces, no ~/.gcode/auth or dsh folder. No listeners or processes remain on these ports; my scratch copies are removed."
  }
 ]
}