{
 "model": "claude-haiku-5-5",
 "category": "build",
 "scenarios": [
  {
   "id": "a1-static-site",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Five-page bakery site built. On a scratch copy node --test passed 22/22, and every local href/src resolves. Log shows all pages and data/menu.json returned 200, and server bg-2dcd542e was stopped by TaskStop (exit 143, status stopped).",
   "notes": "47 tool calls in one turn, exit 0, driver.err empty, turn-complete, leftovers empty, port 8700 free. All 47 tool_use are paired with an adjacent tool_result in the saved session (3 refused calls have a result frame and no tool-use frame, by design). Cost recomputes to $0.05836712, matching result.json; cache read ratio 0.938. All 49 outputs have baseline absent:true, snapshots exist, latest versions match disk. Haiku's three parallel BrowserPlan calls with flat selector/kind/equals keys settled refused with clear per-step issues, and it corrected them next reply. Two BrowserVerify runs settled failed (a real #lightbox visibility finding and a strict-mode selector); reports agree (1/1/11 and 2/1/6). Heartbeats at 20-80 s in one reply, none after tool-argument output began. Model mistakes only. No GPCI, DSH or Guillotine effects."
  },
  {
   "id": "a2-vite-react",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Vite React TS app scaffolded and installed. Heading changed and confirmed in curl of /src/App.tsx. On a scratch copy npm run build succeeded and App.tsx holds 'Hello from G-Code'.",
   "notes": "Last tasks frame shows the dev server running at turn end, as requested. result.json leftovers empty and port 8705 free now. The runner checks about 5 s after exit, so the ~3 s figure in the check text is bounded only to about 5 s. Exit 0, 10/10 paired, cost matches $0.00338509. Scaffold files have absent:true baselines because Bash created them in this session."
  },
  {
   "id": "a3-vite-build-preview",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Vanilla-ts app scaffolded, coffee origins section added, and npm run build passes on a scratch copy. Log shows index.html and the JS asset served with 200 and server bg-7aa03615 stopped by TaskStop (exit 143); the model confirmed the port closed.",
   "notes": "The scenario text expects a baseline holding the scaffold, but the scaffold was created by Bash in the same session, so baseline absent:true is correct. versions[0] of index.html (357 bytes) and src/style.css (5060 bytes) holds the original scaffold and versions[1] the edit, which satisfies the intent; treated as stale check text. dist/ is left out of outputs by design as a gitignored folder (outputs.ts gitignoredFolders). tmpMoved app.js and idx.html are the model's own curl outputs in /tmp. Cost matches $0.00522703."
  },
  {
   "id": "a4-canvas-game",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Snake game built with index.html, game.js and logic.js. On a scratch copy npm test passed 81/81 and syntax checks passed. Game not run in a browser by me; the saved BrowserVerify report shows 35/35 checks passed.",
   "notes": "The failure guard did not interfere with the test-edit-retest loop; the only failed call was one FileEdit with wrong whitespace, whose error named lines 554-566, and the next edit succeeded. Skill browser-verify loaded with no approval and state complete. Heartbeats appeared at 20-50 s and stopped with output. Model's /tmp/snake-mut mutation copy is gone. Cost matches $0.05812821; 22/22 paired."
  },
  {
   "id": "a5-md-docs",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Zero-dependency build.mjs and tests written. On a scratch copy npm test passed 40/40 and node build.mjs built 6 pages. All 25 outputs are present, the only project files outside outputs are the 6 unchanged seed content/*.md, and latest versions match disk.",
   "notes": "Harness issue: the seed's printf ate the backticks, so content/*.md have a repeated heading and no code block; this caused the model's two strict-mode BrowserVerify failures (settled failed, reports consistent). One BrowserPlan with invalid input settled refused. Scenario config says medium effort, while the run used High as the brief states. Heartbeats ran to 1m 35s in one reasoning reply and stopped when output arrived. Cost matches $0.04034177; 21/21 paired."
  },
  {
   "id": "a6-express-api",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Express notes API and public/index.html built. Log shows create, list, get, update, delete and 404 cases all exercised and server bg-db2d26c9 stopped by TaskStop. On a scratch copy I ran POST, LIST, PUT, DELETE, a 404 and GET / with expected statuses, then stopped my server and confirmed the port free.",
   "notes": "Exit 0, 10/10 paired, leftovers empty, cost matches $0.00538853. package.json has 2 versions from Bash after npm init and the model's script edit, as expected."
  },
  {
   "id": "a7-chinese-site",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Four-page Chinese site with menu.json in CNY. On a scratch copy check.mjs passed 4 files with 0 failures and exit 0. The saved BrowserVerify report on the menu page passed 8/8 checks.",
   "notes": "Zero U+FFFD in the log and zero mojibake markers or U+FFFD in the saved session; Chinese is intact in frames, files, check output and the final summary. One BrowserVerify strict-mode selector failure was a model plan error and settled failed; the second plan passed. Cost matches $0.01241093; 17/17 paired."
  },
  {
   "id": "j1-todo-fullstack",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Full-stack todo app built. On a scratch copy npm test passed 54/54. Log shows curl of main endpoints on 8955 and server bg-3c06aee4 stopped by TaskStop (exit 143); the final BrowserVerify report passed 51/51 checks.",
   "notes": "BrowserPlan with entry index.html (real path public/index.html) settled refused, and the saved result reads 'Not run: BrowserPlan call refused: ...', as round 19 requires. The first BrowserVerify ran and settled failed on a setChecked timeout from the model's plan, with report 30/1/20 consistent. The model rm'd .gcode/browser-tests/todo-ui-v2.json via Bash, and outputs records it deleted:true, tool Bash, with its version kept. Learned pattern npm test: runs 2, successes 0, correct for piped commands. Cost matches $0.0509884; 33/33 paired."
  },
  {
   "id": "j2-cli-tool",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "csvstat.mjs, sample generator and tests written. On a scratch copy npm test passed 36/36 and the tool reports 2000 data rows and 9 columns on sample.csv.",
   "notes": "wc -l shows 2214 lines because some quoted fields contain newlines; the model's Python csv cross-check found 2000 records and no ragged rows. Learned patterns correctly record nothing, because npm run sample precedes the check. One heartbeat at 20 s. Cost matches $0.01390005; 9/9 paired."
  },
  {
   "id": "j7-sonnet-sanity",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "TABLE.md lists the 8 planets with diameter and moons. On a scratch copy verify-table.js reports 8 rows and exit 0.",
   "notes": "Small baseline: 5 requests, 4 tools, cache read ratio 0.954, cost matches $0.00230721. Tools array has 31 entries, Skill catalog has 6 lines, no mcp or DeferredToolCall. Scenario config says medium effort, while the run used High as the brief states. Glob on a missing file returned 'No results' as success, which is correct because the folder exists."
  }
 ]
}