{
 "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 home all exited 0 with turn-complete. Four distinct valid sessions were saved, with every tool_use paired on the wire messages. All 5 snapshot files match their sha256, and the final inventory.js, extra.test.js and USAGE.md match each session's last recorded version, so no writes were lost. No temp or lock files remain.",
   "notes": "d4's npm test failed 5/5 and settled as failed with exit 1, which is correct because the seed's tests fail by design. My own node --test now shows 11 tests, 4 pass, 7 fail: the 5 seeded failures plus 2 of the model's 6 new lowStock edge tests. That is seed and model behaviour. learned/patterns.json shows npm test 4 runs, 0 successes, 0 broken, consistent with failing runs. The patterns file has no cross-process lock, which is accepted and known. Cost recompute diff 0, cache read ratio 0.915, leftovers empty."
  },
  {
   "id": "h2-burst-12",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "All 12 sessions sharing one home completed in about 14 s total (4.3-8.7 s each), exit 0. Twelve valid sessions were saved, one per project namespace with the correct cwd, and each pN/notes.txt has 3 lines.",
   "notes": "No 429 or 529, no reply-restart and no retry status appeared, so rate-limit handling was not exercised. A text grep for 429 or 529 only hit digits inside UUIDs. p9 and p11 made extra calls by model choice. Cost diff 0, cache read ratio 0.951, leftovers empty, locks folder empty."
  },
  {
   "id": "h3-same-home-8-medium",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "All 8 sessions completed, exit 0. I ran node --test in each project: 14, 18, 7, 20, 34, 17, 19 and 23 tests, all passing. Each session is saved under its own project namespace with the correct cwd, and no log mentions another session's project path.",
   "notes": "The single failed Bash in m5 and in m8 is the model's chained `git status` in a non-repo, exiting 1, and is reported correctly. Learned patterns match their commands: `node --test 2>&1` counts as a success, while `| tail` or a later `;` counts the run with unknown status (0 successes). There is no session index file to check; sessions are per-project files. Cost diff 0, cache read ratio 0.910, leftovers empty."
  },
  {
   "id": "h4-resume-race",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "r1 won the session lock, resumed the session and added the comment to remove(), exit 0. r2 was refused after 91 ms with exit 1 and 'Session ea372dc7-... is open in another G-Code process (pid 23572). Close it there first, or start a new chat.' The saved session is valid with all 4 messages in order and usage covers 4 requests, so no data was lost.",
   "notes": "The refusal is by design and clear. r2's message was never processed and add() has no new comment, as expected for the loser. Cost diff 0, leftovers empty."
  },
  {
   "id": "h5-rapid-messages",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Five messages sent in the same millisecond ran as 5 ordered turns, each with turn-complete, after the controls frame. Final bytes are a.txt='1!', b.txt='2', c.txt='3', and the saved session holds all 5 user messages in order.",
   "notes": "Sequential queue confirmed by frame timestamps, with no interleaving. Cost diff 0, cache read ratio 0.984, leftovers empty."
  },
  {
   "id": "e1-subagents-audit",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Three parallel sub-agents ran and returned text plus [Sub-agent run] blocks to the parent, and REVIEW.md (18 KB) was written. usageTotals of 25 requests equals 7 parent replies plus 5, 7 and 6 sub-agent replies. All calls settled complete, with no approvals in bypass.",
   "notes": "One sub-agent's invalid FileRead appears in Failed calls as 'FileRead (src/components/Layout.tsx): Not run: invalid input for \"FileRead\": limit: Number must be greater than 0': relative path, reason kept, under the cap. Progress frames and 'Still thinking' heartbeats appeared; identical elapsed values come from parallel children. The 100-reply and 400-call limits were not approached. I confirmed REVIEW.md exists but did not audit each finding. Cost diff 0 with 2 long-prompt requests priced on the long card, cache read ratio 0.672 (sub-agents start fresh prompts and reasoning was heavy), leftovers empty."
  },
  {
   "id": "e2-subagents-write",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Two parallel sub-agents wrote separate files with no conflict, and index.js re-exports both modules. My node --test gives 92 tests, 92 pass. Changes lists all 6 files with an absent baseline, each last version matches the file on disk, and all 6 snapshots match their sha256.",
   "notes": "writes.jsonl records distinct writer ids for parent and each child in one session. Bypass was inherited, with 0 approvals. usageTotals of 14 requests equals 6 parent plus 3 and 5 sub-agent replies. There were no Failed calls, so D20-2 was not exercised here. npm test followed by `; echo` is recorded as 1 run, 0 successes (unknown status), as designed. Cost diff 0, leftovers empty."
  },
  {
   "id": "e3-workflow",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Project-level workflows.enabled was refused as designed. A system frame says only ~/.gcode/settings.json can turn it on, Workflow is absent from the 31 request tools, and ToolSearch returns it as unavailable with the same reason. The model explained this and ran node --test (0 tests).",
   "notes": "The model stopped and offered options rather than doing the edits by hand, which is an acceptable reading of 'otherwise explain why', so no JSDoc or tests were added. One failed Bash came from the model's own `ls` of missing folders, exit 1, reported correctly. Workflow frames, agent approvals and background downgrade were not exercised because the tool is off. Cost diff 0, leftovers empty."
  },
  {
   "id": "f1-screenshots",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "All 33 FileReads of PNGs returned image blocks. NOTES.md cites real content: I opened home-desktop.png and products-desktop.png and confirmed the jute-bag reuse, pale upper headline, Ladera Dorada process wrap, empty third grid column and clipped honey glow. about-desktop and home-mobile claims were not checked against the images.",
   "notes": "fitImages ran 3 times, removing 5, 7 and 5 images, which matches excess plus 4 extra at 21, 23 and 21 images. The saved order is the oldest 17 dropped and the newest 16 kept, and no unseen image was dropped. There is no per-request log, so 'at most 20 images per request' is derived from the batch sequence and the code; no provider error occurred. cacheInvalidations is 3, exactly the three removals, and the cache read ratio is 0.791, above round 18's 0.669. Three removal events against 13 images past the cap is the intended improvement. The model's repeated crops were its own choice. The 31 _crops files it removed with rm -rf are correctly recorded as deleted in Changes. tmpMoved 'crops' is an empty /tmp folder the model made. Cost diff 0, leftovers empty."
  },
  {
   "id": "f2-big-image",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "FileRead of the 48 MB PNG failed with 'Image is 45.8 MiB, over the 5 MiB inline limit. Resize or compress the image.' No crash and no API 400 occurred. The model got 4000x4000 through sips, made a 1000x1000 preview, and FileRead returned it as an image; its description as uniform colour noise is correct for the seed.",
   "notes": "The refusal happens inside the tool call and settles as failed, with a clear message. Cost diff 0, cache read ratio 0.955, leftovers empty."
  },
  {
   "id": "f3-image-to-html",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "index.html and styles.css were built and two BrowserVerify runs passed (5/5 assertions, 6/6 checks). '#hero-title' with two <br> and a span read 'Grown in the mist, shipped green.' as expected. The model then listed its expected differences, including the blocked fonts.",
   "notes": "The model did not rewrite its page to satisfy a check; its FileEdits between the runs were visual fixes after comparing screenshots. Google Fonts appears in blockedRequests and errors is [] in both reports. The subfolder entry, a bad server.path and a 404 URL were not exercised. Chromium launched without a timeout. Early sips confusion was sips centring its crops, not stale FileRead data. tmpCollisions 'ref': /tmp/ref already existed from Nov 4 and the model wrote into it, so that is an environment note. I did not visually judge final fidelity. Cost diff 0, cache read ratio 0.939, leftovers empty, verification ports free."
  },
  {
   "id": "i1-headless-p",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Headless -p exit 0 with a JSON result on stdout. fizzbuzz.js prints 30 correct-looking lines when I ran it, the session was saved with 3 requests and paired calls, and stderr holds only the provider line.",
   "notes": "The saved-key fallback worked. A count-only scan for key-shaped strings found none in the run, excluding settings.json. No permission denials occurred, so that behaviour was not exercised. Cost diff 0, leftovers empty."
  },
  {
   "id": "i2-headless-bg-left",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Headless -p exit 0. The background server started and curl got 200 'ok'. After exit, port 8950 was free and no process was left, and it was still free when I checked.",
   "notes": "The tool result and the model both state that the one-shot run stops background tasks at exit. The exact SIGTERM timing (about 1.5 s) is not recorded in the evidence, so only the end state is verified. Cost diff 0, leftovers empty."
  }
 ]
}