{
  "model": "claude-haiku-5-5",
  "category": "background",
  "scenarios": [
    {
      "id": "d1-two-servers",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "Started ports 8810/8811, verified both, stopped only the first, and reported stopped/running TaskOutput states; independent HTTP smoke returned A/B and all servers were cleaned up.",
      "notes": "High confidence. log.jsonl:23,29,34,42-43 corroborates selective stop. Saved/protocol pairing, exit 0, bypass approvals, 30 tools with the six-skill catalog, DSH absence and current process/group/listener cleanup passed. Recomputed cost $0.001838375 matches; cache-read ratio 96.33%. Evidence: review-background-audit.json, review-background-smoke.json and review-background-final-cleanup.json."
    },
    {
      "id": "d2-bad-bg-command",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "Both background failures were reported without hanging: command-not-found exit 127 and starting/crashed output with exit 3; TaskOutput and tasks frames retained the correct failed states.",
      "notes": "High confidence. log.jsonl:11,19,25-26; both executed Bash calls are saved as failed. Repeated exit-code text is the documented behavior. Saved/protocol pairing, exit 0, clean stderr, catalog/DSH checks and independent cleanup passed. Recomputed cost $0.001085575 matches; cache-read ratio 96.47%. No generated project tests apply. Evidence: review-background-audit.json."
    },
    {
      "id": "d3-unicode-bg",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "The six Chinese/emoji progress lines and ANSI sequences were preserved exactly in completed TaskOutput and incremental running task tails; UTF-8 byte counts matched and no replacement characters occurred.",
      "notes": "High confidence. The model used only one TaskOutput after completion, instead of the requested two; the running Bash result already contained four lines and running tasks frames supplied incremental output. This is model behavior, not an engine defect. Saved/protocol pairing, exit 0, catalog/DSH checks and cleanup passed. Recomputed cost $0.00132517 matches; cache-read ratio 94.98%. Evidence: review-background-audit.json and review-background-unicode.json."
    },
    {
      "id": "d4-watcher-left-running",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "The watcher served ok, reloaded to updated, and remained running at turn end; its process group/listener disappeared after CLI exit. Independent bundled-Node24 watcher smoke returned updated and was stopped.",
      "notes": "High confidence. log.jsonl:19,29,35 records both responses and the running watcher/restart output. Original leftovers and independently checked recorded groups, run working directories and ports were empty. Saved/protocol pairing, exit 0, catalog/DSH checks and clean stderr passed. Recomputed cost $0.00146182 matches; cache-read ratio 96.38%. Evidence: review-background-audit.json and review-background-smoke.json."
    },
    {
      "id": "d5-max-bg",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "Eight sleeps ran concurrently; attempt nine failed with the explicit eight-task cap and attempt ten was refused by the repeat guard. The model stopped eight, retried the remaining two, stopped both, and TaskList showed ten stopped shells.",
      "notes": "High confidence. log.jsonl:40-41 and saved toolHistory distinguish failed from refused correctly; the refusal-only protocol result is expected and its saved tool_use/result pair is complete. All ten task groups are gone. Exit 0, clean stderr, catalog/DSH checks and independent cleanup passed. Recomputed cost $0.00331438 matches; cache-read ratio 93.15%. Evidence: review-background-audit.json."
    },
    {
      "id": "d6-interrupt-resume",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "SIGINT saved an interrupted partial turn with paired results, cancelled TaskStop once, and removed the old server. The same session resumed without repeating setup, added /time, verified both routes and stopped the server; independent HTTP smoke passed both endpoints.",
      "notes": "High confidence. log.jsonl:43-50,60,79,85,89; both CLI exits are 0 and the sole error is Stopped before this turn finished. The interrupted TaskStop has one result and cancelled state. Express 5.3.0 was already installed; review used bundled Node v24.22.0 with a fresh HOME and installed nothing. package.json has only the npm default no-test placeholder, so endpoint smoke verified the artifact. Catalog/DSH checks and cleanup passed. Recomputed cost $0.003293305 matches; cache-read ratio 96.32%. Evidence: review-background-audit.json and review-background-smoke.json."
    },
    {
      "id": "d7-sigkill-orphan",
      "status": "pass",
      "product_defects": [],
      "task_outcome": "The background server returned HTTP 200 before foreground sleep; SIGKILL produced expected exit 137, and the recorded listener disappearance was 1081 ms. Saved interrupted context includes a synthetic result for the unfinished sleep; no original or current orphan remained.",
      "notes": "High confidence. log.jsonl:9-21 and result.json sigkill corroborate the expected exception: no terminal frame and no live protocol result for the killed sleep; all saved tool calls remain paired. Reviewed runner kill/timing logic and snapshot10t/src/utils/watchdog.ts. Independent artifact smoke returned ok and its owned group was stopped; historical 1081 ms timing was verified from saved evidence, not rerun. Catalog/DSH and current process/group/listener checks passed. Recomputed cost $0.0008247 matches; cache-read ratio 96.01%. Evidence: review-background-audit.json and review-background-smoke.json."
    }
  ]
}
