{
  "model": "claude-haiku-5-5",
  "category": "stress+agents-vision-cli",
  "scenarios": [
    {
      "id": "h1-same-project-4x",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "Four concurrent drivers on one project and one home: 4 distinct valid sessions, all exit 0. JSDoc added to src/inventory.js with code unchanged against the seed (comment-stripped diff empty), test/extra.test.js and docs/USAGE.md written. I ran node --test: 13 tests, the 8 new extra tests pass, the 5 failures are the seed's deliberate inventory.test.js failures.",
      "notes": "All 3 output versions match their sha256 snapshots and the files on disk; no lost write, since each session wrote its own file. Saved tool_use/tool_result pairs complete (wire content), mode 600, no lock or temp file left, cache reads >0 in every session. Cost recomputed from usageTotals equals result.json ($0.012153565). learned/patterns.json is valid with no lost count: npm test runs 4 across 3 sessions matches the 4 commands, all piped so 0 successes as designed. d3 wrote a scratch file in /tmp, its own choice."
    },
    {
      "id": "h2-burst-12",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "12 of 12 drivers completed in 12 s with one shared home; each pN/notes.txt holds three lines and each session read it back; 12 valid sessions in 12 project folders.",
      "notes": "No 429 or 529 occurred: errors [] in all summaries and no retry or overload status. A raw grep for 429/529 hit only inside sha256 strings. Each session's paths stay in its own pN or are relative, so no cross-talk. Cost recompute equals $0.0094498. p1, p7 and p12 took an extra request or two by model choice."
    },
    {
      "id": "h3-same-home-8-medium",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "8 of 8 drivers finished their different modules. I ran node --test in each project: 17, 14, 8, 15, 17, 16, 14 and 24 tests, all passing.",
      "notes": "No cross-talk: every session's tool frames name only its own mN, and the 8 sessions match the summaries. m5's one failed Bash was a real test failure (exit status from node --test), which the model fixed and re-ran. Learned patterns match the commands: 10 runs in total, 6 successes from the 6 unpiped passing runs, piped and failing runs not counted as worked, broken 0, one store per project. Cost recompute equals $0.030912155."
    },
    {
      "id": "h4-resume-race",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "r1 won the session lock and added its comment above remove(), exit 0. r2 was refused in 90 ms with exit 1 and 'Fatal: Session 607fab02-... is open in another G-Code process (pid 977). Close it there first, or start a new chat.'",
      "notes": "No data loss or clobbering: the saved session has the first turn plus r1's turn only, 4 requests summed, cost recompute equals $0.001152145. The diff against the seed is exactly r1's 3 comment lines. r2 spent no model request and changed nothing; no .lock file remains. The driver's 'turns: 1' for r2 is the driver's own count."
    },
    {
      "id": "h5-rapid-messages",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "Five messages sent within 1 ms ran as 5 queued turns in order, each with turn-complete. Files read a.txt='1!', b.txt='2', c.txt='3'; the last turn listed them correctly.",
      "notes": "The saved messages hold all five user messages in sending order, none lost or merged. controls frame shows bypass, 0 approvals. 11 requests, cost recompute equals $0.00258533."
    },
    {
      "id": "e1-subagents-audit",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "Three parallel Agent calls returned 20, 36 and 19 tool calls in 6, 8 and 5 replies, and the parent wrote a prioritized REVIEW.md (17,774 bytes, 54 items) after re-checking some claims.",
      "notes": "Usage includes the children: 27 requests = 8 parent + 19 sub-agent replies, unreportedRequests 0, cost recompute equals $0.112891815. The round-11 limits were not reached. The a11y agent's two failed Greps were its own paths under a node_modules folder that does not exist; they are listed under Failed calls, and the 160-character cap cuts the long path's rg error before its reason ('IO error f…'), which is the designed cap and cosmetic here. Only REVIEW.md changed. The driver log omits tool-state frames, so sub-agent progress display could not be judged from this log. High reasoning output (102,994 of 135,099 tokens) is model behaviour."
    },
    {
      "id": "e2-subagents-write",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "Two parallel sub-agents wrote strings.js and dates.js with tests, and the parent added index.js and package.json. I ran node --test: 55 of 55 pass; index.js re-exports all 5 functions.",
      "notes": "Changes data is right: all 6 outputs have an absent baseline, version counts match the calls (strings.js 2, strings.test.js 3, dates.js 1, dates.test.js 2), the last version equals the disk file and snapshots verify. 'Files changed' lists are correct, there were no conflicting writes, and bypass was inherited with 0 approvals. 23 requests = 7 parent + 9 + 7, cost recompute equals $0.02650731. npm test | tail counted as a run with unknown status, as designed."
    },
    {
      "id": "e3-workflow",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "Workflow stayed off: a system frame and stderr line say the project setting is ignored and only ~/.gcode/settings.json can turn it on; ToolSearch returned available:false with the same reason. The model explained this and reported that npm test has no package.json; no files were changed.",
      "notes": "Workflow is absent from the 31 request tools, the catalog holds the 6 bundled skills, and no Bash touched ~/.gcode. Learned pattern npm test shows runs 1, broken 1, which is the designed reading of 'Could not read package.json'. The task was left undone because the user prompt allowed explaining why, which is correct. Cost recompute equals $0.00142283."
    },
    {
      "id": "f1-screenshots",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "39 images read as image blocks (4 screenshots, re-reads and crops); NOTES.md written. I opened home-desktop.png and products-desktop.png: the checked notes match, including the pale headline over mist, faint testimonial dots, the Miel de Niebla and Ladera Dorada orange blur, the La Cumbre wisp, repeated bean art, two wrapped spec values and the empty third grid slot.",
      "notes": "fitImages ran 11 times and removed 19 images (2+3+2+3+1+1+2+1+1+2+1), and the saved session holds exactly 20 images plus 19 notes, so 39 in all, newest kept, with no API error. Downscale notes have correct sizes and factors. The 'already holds N' count in a parallel batch can read low (20, 21, 20), which is cosmetic because the note stays true and the removed count is right. Each removal rewrites history, so with one-at-a-time eviction cacheRead ratio fell to 0.669 ($0.083669125, recompute equal); that is the current design and a possible optimization, not a defect. The model kept making crops in /tmp past the limit and re-read dropped images, its own choice, and left /tmp/crops and /tmp/g-review behind. I did not open home-mobile.png or about-desktop.png."
    },
    {
      "id": "f2-big-image",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "The 48 MB, 4000x4000 noise PNG was refused with 'Error: Image is 45.8 MiB, over the 5 MiB inline limit. Resize or compress the image.' The model got the dimensions with file and sips, viewed a 1024x1024 preview, and described grey colour noise, which fits the os.urandom seed.",
      "notes": "No crash and no API 400; the failed FileRead is state failed with a single Error prefix. The preview in /tmp is the model's choice and it said so; the project is unchanged. Cost recompute equals $0.001750355."
    },
    {
      "id": "f3-image-to-html",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "index.html and styles.css recreate the hero. Five BrowserVerify runs passed, the last with 6/6 checks (headline, lede, CTA, no overflow). I opened the final screenshot beside the reference: layout, type and colours are close, with the differences the model listed.",
      "notes": "The first BrowserPlan had invalid input and settled as refused with a per-issue message and no tool-use frame by design, which explains 59 uses against 60 results. Text checks passed first time, including the lede and headline with <br>, and the model never rewrote the page to satisfy a check; its later edits were visual. A subfolder entry was exercised (.gcode/verification/fontcheck/index.html); a bad server.path rejection and a 404 URL were not. The Google Fonts stylesheet appears under blockedRequests with errors [] in the first run; later runs used a temporary local-font copy, which the model deleted. All 32 outputs match disk and snapshots, browser and server closed, no listeners. Cost recompute equals $0.094846435. /tmp scratch and npm pack of fonts were the model's choice."
    },
    {
      "id": "i1-headless-p",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "Headless -p exit 0, signal null; fizzbuzz.js written and run. I re-ran it: correct output for 1..30. stdout is one result frame and stderr only the provider line.",
      "notes": "No key in stdout or stderr. The session is saved with valid usage, 2 requests, cache reads >0, cost recompute equals $0.000715685. Leftovers empty, port free. node fizzbuzz.js is correctly not recorded as a learned check."
    },
    {
      "id": "i2-headless-bg-left",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "Headless -p exit 0: the server started as background task bg-ed7291cb, curl returned 200 ok, and the reply said the run would stop it. After exit, result.json shows port free and no leftovers, and I found no listener on 8950 and no server process.",
      "notes": "The model used run_in_background, a separate curl and TaskOutput, all complete. Exactly when within the exit window the process stopped is not recorded, only that it was gone at the runner's check. Cost recompute equals $0.0009947."
    }
  ]
}
