{
 "model": "claude-haiku-5-5",
 "category": "build",
 "scenarios": [
  {
   "id": "a1-static-site",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "The agent built the 5-page Panaderia Sol site with shared css/js, the lightbox (Esc and arrow keys), the validate.js ES module and the fetch-driven menu. I reran node --test: 16/16 pass. Every local href/src exists (the only miss is the data:, favicon) and menu.json parses. The agent's curl got 200 for all pages and menu.json. The http.server on 8700 was stopped with TaskStop (tasks frame shows stopped, exit 143) and 8700 is free.",
   "notes": "31 tool calls in one turn, all complete. 31/31 tool-use/result pairs in log and wire. Exit 0, one turn-complete, empty .err. Cost recompute from usageTotals is $0.04914658, equal to result.json. Cache read ratio 0.91. The promptSnapshot has 31 tools including TeamMemoryWrite, the 6-skill catalog, no AskUserQuestion, MCP or DeferredToolCall. 5 'Still thinking' heartbeats, all before output arrived. All 34 outputs have absent:true baselines. Two BrowserVerify runs passed. Nothing GPCI-related. No learned patterns.json, because the VERIFY regex in memory/learnedPatterns.ts does not match `node --test`. That is a coverage gap in a best-effort feature, not a defect."
  },
  {
   "id": "a2-vite-react",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "The agent scaffolded Vite react-ts, ran npm install and started the dev server on 8705 with --strictPort in the background. curl got 200. The heading was changed to 'Hello from G-Code' and the served /src/App.tsx contained it. The dev server was left running as asked: all three tasks frames show it running. After the CLI exited, background-tasks.jsonl shows it stopped (exit 143, endedWithProcess). result.json has no leftovers and 8705 is free.",
   "notes": "10 calls, all complete. Pairs match, exit 0, turn-complete. Cost $0.00349256 matches. npm was on PATH. No heartbeats."
  },
  {
   "id": "a3-vite-build-preview",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "The agent scaffolded vanilla-ts, added an origins section and ran npm run build. My rebuild produces the same index-uUP5Ekhd.js. dist/ was served on 8710 in the background, curl got index.html and the JS asset, then TaskStop stopped it (exit 143) and the agent confirmed nothing was listening.",
   "notes": "Baselines: npm create made the scaffold files during this turn, so they are correctly baseline absent:true. versions[0] of main.ts and style.css holds the original scaffold (verified: no origins text, sha256 matches) and versions[1] the edit, which matches the current file. learned/patterns.json records the npm run build command (1/1). Cost $0.005521705 matches. The model wrote a temp file to /tmp/g8710_index.html, outside the project, under bypass mode."
  },
  {
   "id": "a4-canvas-game",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "The agent built index.html, game.js (ES module importing logic.js) and logic.js with an injectable RNG, plus test/logic.test.js. I reran npm test: 48/48 pass. BrowserVerify passed 10/10 assertions.",
   "notes": "The first npm test failed with `node --test test/` (cannot find module on Node 26). Because it was piped to tail, the call counted as a success. The model fixed the script and reran; the failure guard did not interfere. One BrowserPlan with invalid input (unknown key selector) settled as 'refused' in toolHistory, with a 'Not run: invalid input' result and, by design, no tool-use frame. The saved wire pairs all 18 calls. 4 heartbeats, none after output. A 'gpci' grep hit is inside base64 image/signature data, not GPCI. Cost $0.03931339 matches."
  },
  {
   "id": "a5-md-docs",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "The agent wrote a zero-dependency build.mjs (headings, emphasis, links, fenced code, lists, nav, TOC) and test/build.test.mjs. I reran npm test: 39/39 pass. My rerun of npm run build produced byte-identical site/*.html (6 pages).",
   "notes": "Outputs list has 21 entries: build.mjs, package.json, the test file (FileWrite then FileEdit, 2 versions), 6 Bash-created site pages, 2 BrowserPlan plans and the BrowserVerify artifacts, all with absent:true baselines, so Changes data is complete. One Bash call settled 'failed' with 'Exit code: 1'. That is correct: the final `grep '^# (tests|pass|fail)'` matched nothing. One BrowserPlan with invalid input settled 'refused'. One BrowserVerify ran and failed (Playwright strict-mode violation, two 'article h1' elements), settled 'failed' with a single 'Error:' prefix. The corrected plan then passed 5/5. Harness issue, not G-Code: the seed printf's backticks were eaten by the shell, so each content/*.md has a duplicated '# name' heading and an empty %s, which is why the page has two h1s. Config effort was high (scenarios.json says medium, but driver.config.json says high, and the controls frame and session say high). Cost $0.03659294 matches."
  },
  {
   "id": "a6-express-api",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "The agent ran npm init and installed express. server.js has in-memory /api/notes CRUD, and public/index.html lists and adds notes with fetch. The server was started on 8725 in the background, the agent curled create/list/update/delete/404, then TaskStop stopped it (exit 143). I briefly reran it myself: POST 201 body, GET list, PUT updates, DELETE 204, GET of the deleted note 404, / 200. I stopped it and 8725 is free.",
   "notes": "One BrowserPlan with invalid input settled 'refused'. The second plan passed 4/4 assertions against its own isolated server. Pairs match, exit 0, turn-complete. Cost $0.00862908 matches."
  },
  {
   "id": "a7-chinese-site",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "The agent built the 4-page 川味小馆 site: every page is lang=\"zh-CN\" with a <title> and links the shared styles.css, and the menu page renders menu.json with ¥ prices. I reran check.mjs: 4/4 pass, exit 0. The final summary is in Chinese.",
   "notes": "Zero U+FFFD and zero mojibake patterns in log.jsonl, the saved session and every project file. One BrowserVerify ran and failed (strict-mode, 4 elements matched) and settled 'failed'. The v3 plan then passed 6/6. The message does not match the browser-verify skill trigger, and no skill block appeared. Cost $0.0147388 matches."
  },
  {
   "id": "j1-todo-fullstack",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "The agent built a Node http server with a JSON file store, REST endpoints and a vanilla JS frontend (add/toggle/delete/filter). I reran npm test: 54/54 pass, with tests on an ephemeral port. The app was started on 8955 in the background, the agent curled the endpoints, then TaskStop stopped it (exit 143) and 8955 was confirmed free.",
   "notes": "It went through a test-edit-retest loop (test-path fix, 413 probe, test edit) without the failure guard interfering. One BrowserPlan with schema-invalid input settled 'refused'. One BrowserPlan whose entry 'index.html' did not exist settled 'failed' with a single 'Error:' prefix. That is correct per the code: the entry check runs in call() via inspectBrowserPlan (browser/validation.ts:16), so the call ran and failed; it is not an input refusal. BrowserVerify passed. The model wrote /tmp/probe413.mjs outside the project under bypass (now gone). learned/patterns.json records the 3 npm test commands. Cost $0.04314956 matches."
  },
  {
   "id": "j2-cli-tool",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "The agent wrote csvstat.mjs (quoted fields, commas inside quotes), scripts/gen-sample.mjs and tests. I reran node --test: 35/35 pass. My run on sample.csv reports 2000 data rows and 10 columns with count, distinct and numeric min/max. The 2186 physical lines are 2001 quote-aware records, so the multi-line quoted fields are handled.",
   "notes": "The first Bash call settled 'failed' with Exit code 1 because `cat package.json` was missing in an empty folder. Correct state. Cost $0.014909585 matches. `node --test` is not learned, the same VERIFY-regex gap as a1."
  },
  {
   "id": "j7-sonnet-sanity",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "TABLE.md has 8 planet rows with diameter and moons. I reran verify-table.js: 'PASS: table has 8 rows'.",
   "notes": "Baseline: 3 requests, 5 calls, 11 s, $0.001835835 (matches the recompute), cache read ratio 0.92. Frames are clean, pairs match, one turn-complete. Config effort was high, not the medium in scenarios.json."
  }
 ]
}