{
 "model": "claude-haiku-5-5",
 "category": "context",
 "scenarios": [
  {
   "id": "c1-handoff",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Two handoffs across 3 sessions, then ARCHITECTURE.md was written with all 11 modules, data flow and 3 risks. All 71 backticked identifiers exist in engine/. All sessions exited 0; 31 tool calls settled complete and all pairs match. Cost recompute matches: $0.046434365, 16 requests.",
   "notes": "Both handoffs sent the read-before-handoff request (status frame, engine note in the last tool-result message). Neither reply ran a tool: no refused states. Caps by code were min(96000, room-256), about 12,451 and 17,166; the replies used 7,233 and 5,917 output tokens, neither cut off. Saved interrupted text has '\\n\\n## Handoff…', not glued. The writer gets lastReply+1 past the results and neither handoff file has the unseen heading. Stalls were 1 then 2, with Progress check paragraphs of 1 and 2 and no sub-agent text. Binding rule leads each continuation and the handoff files. <request> is the original in the chain. First two sessions saved interrupted, with the handoff path in metadata and 0 orphaned pairs. Partial repeat of the 10h behaviour, model choice: session 2 re-read queryEngine L198-459, which the seed said to treat as known, and session 3 re-read the two spans the seed listed as trimmed. Finished files were not re-read and the seed was accurate about what was trimmed. 'Cleared 3 old tool results' (48,912→31,164) kept pairing; the model then re-read a cleared range. Cache read ratio 0.627, lower because one-shot writers are uncached by design. No skill block in continuations."
  },
  {
   "id": "c2-compact",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Asked once (contextFull 1), compacted 3 times mid-turn with no API error. ARCHITECTURE.md covers all 11 files, data flow and risks; all 80 identifiers exist in the source. 35 tool calls complete. Cost recompute matches: $0.034954985, 21 requests.",
   "notes": "Saved context keeps the user request verbatim, plus a summary block with the 'reference data' framing. compaction_count and contextStatus.compactions are both 3. Also cleared 6 old results (44,629→28,314) with pairing intact. The model re-read queryEngine ranges after the first compaction and re-verified its document by Grep, which raised requests; model choice. Cache read ratio 0.718; 4 cacheInvalidations, explained by 3 compactions and 1 clear."
  },
  {
   "id": "c3-stop-then-continue",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "'stop' ended turn 1 with a clear 93% message (47,387+9,000 of 60,000) and saved it as interrupted. /compact succeeded (47,387→17,437) and the continuation finished ARCHITECTURE.md with all 11 modules; all 151 identifiers exist in the source. No 400. Cost recompute matches: $0.01775449, 8 requests.",
   "notes": "Saved compacted text shows 'Part 1 of 3', 'Part 2 of 3' and 'Part 3 (of 3)', each quoting the real request, not the '[The user stopped…]' marker. Results are named by file with line ranges and the file names survive the long paths (describeCall keeps the tail). hooks.ts was cut mid-block: part 2 says it continues in the next part, part 3 picks up at line 187, which fits CONTINUES_NOTE. The wire prompts themselves are not saved, so the note is inferred from the replies and the code. Originals are in compactArchives. The continuation read only the unread queryEngine L515+ and checked hooks.ts line count. Model slip with no effect: part 1 said its reads should be treated as issued, not completed, although the part prompt says not to claim anything outside the part was undone; parts 2 and 3 carry the results. No killed-process path involved. The error in the summary is the intended stop message, and the outcome 'error' is the driver's label for it."
  },
  {
   "id": "c4-handoff-chain",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Four handoffs in 4 sessions, with no loop. SUMMARIES.md has 12 distinct, non-duplicated entries (11 engine/, 1 engine2/), growing across sessions and matching the last handoff's account. All 34 calls complete. Cost recompute matches: $0.042027875, 40 requests.",
   "notes": "The task is unfinished (10 engine2 files remain) only because driver10b.ts stops following at 3 hops; the fourth handoff was saved correctly with accurate open work. Not a G-Code cause. All 4 handoffs sent the read-before request and no reply ran a tool or was cut off (caps by code about 10,800-11,500). Saved notes start after a blank line; no unseen heading in any handoff file. Stalls chain is correct: s1 and s2 changed files (no stalls field), s3 read only (stalls 1), s4's continuation carries 'Progress check: 1 session', no sub-agent text below 3, s4 wrote files so count returned to 0. Binding rule leads each continuation, and <request> is the ORIGINAL user text in all three despite the frame's request field holding the earlier continuation. No skill block. A speculation.ts read just before handoff 1 was summarised in s2 from the notes without a re-read. 'Cleared 2 old tool results' kept pairing. Cache read ratio 0.823."
  },
  {
   "id": "c5-huge-log",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "REPORT.md is correct, checked independently with awk/sort/grep: W20 69,326, W10 46,455, E404 18,730, E500 11,674, E200 6,908; E500 first 00:00:15, last 20:26:37 in file order. Context peaked near 17.6K of 1M. Cost recompute matches: $0.00341192, 6 requests.",
   "notes": "The model never read app.log whole; it used grep/awk with cut, and outputs stayed under 700 characters. So G-Code's truncation/paging path was not exercised in this run. It also correctly noted the timestamps wrap at line 86,401. Cache read ratio 0.937."
  },
  {
   "id": "c6-many-files",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "INDEX.md lists all 150 notes exactly once, each under its correct Topic (note number mod 7; verified by script). 8 calls complete, no context pressure. Cost recompute matches: $0.005341405, 7 requests.",
   "notes": "Model used one Grep over notes/ plus 3 sample FileReads instead of 150 reads: all content was seen, and the many-small-calls path was not exercised. Its check wrote /tmp/idx.txt in bypass mode; model choice. Cache read ratio 0.887."
  },
  {
   "id": "c7-multi-turn-cache",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Four turns all completed; JSDoc and count() added, plus a test. My node --test run: count test passes, 5 seeded tests fail, and the model reported exactly that 1 passed and 5 failed. Cost recompute matches: $0.00542299, 11 requests.",
   "notes": "Cache read ratio 0.945, 177,099 of 187,425 input tokens, cacheInvalidations none; last request read 21,623 of 22,063. Per-request cache values are not logged, so the rise from the second request is inferred from totals and lastUsage. Total cache writes (10,296) are below the final prompt size, so part of the prefix was probably already cached from earlier runs. The learned pattern 'npm test' has runs 3, successes 0, correct for commands piped to tail or grep."
  },
  {
   "id": "j6-long-session",
   "status": "pass",
   "product_defects": [],
   "task_outcome": "Six user turns plus one continuation, 7 turn-completes, one handoff at turn 5. All tests pass: my npm test gave 44/44. The final summary knows both this session's fixes and the earlier work via the seed. Cost recompute matches: $0.048043255, 30 requests.",
   "notes": "Read-before request was sent with no tools and no cut-off, and the saved note follows a blank line. Stalls 0 (files changed), so no Progress check. Binding rule leads and <request> quotes the turn being worked on, as the code defines. The goal section also records the earlier requests, and the seed was accurate about the 4 failing tests and the fix plan. The next queued message reached the new session in order. Learned pattern 'npm test' has runs 6, sessions 2, successes 0, correct: all piped, and the cd to the project was dropped from the key. No 'Learned' section appeared, correct below confidence. Cache read ratio 0.891; no cacheInvalidations reported. Across all eight scenarios: leftovers empty, driver.err empty, 31 tools with 6 catalog skills, no DSH, no key-shaped strings, no DiagnosticReports, log show, sandbox-exec or unexplained-kill markers. Round 19's four fixes and Guillotine Mode were not exercised in this category."
  }
 ]
}