{
  "head": "fc43f1d522a7accd7416b22d29f09caca51b5c85",
  "base": "1451e7cb23034d29774338608368a15d8845df36",
  "platform": "headless Linux, actual dev server and Chromium at 1280x800",
  "state": "isolated synthetic projects and threads; no developer data written",
  "before": "actual base runtime: terminal provider failure only logged; no requester notification",
  "after": [
    "manual header failure gives fixed safe message",
    "sidebar single failure gives fixed safe message",
    "bulk two failures produce one count-two notification",
    "actual RPC socket closed during gated generation, replacement socket opened without document reload, failure notification delivered",
    "manual rename clears durable failure",
    "failure followed directly by successful regeneration clears durable failure and marker"
  ],
  "reconnect": {
    "documentId": "dc88ebc9-f1d4-4e54-b08a-236d1e8bf277",
    "closedSocketReadyState": 3,
    "replacementSocketOpened": true,
    "documentReloaded": false,
    "notificationVisible": true
  },
  "safeMessage": "The thread title could not be generated.",
  "providerProof": [
    "synthetic CLI nonzero exit includes private-cli-output-sentinel in stderr; no raw sentinel in persisted failure or notification",
    "actual Codex CLI 0.163.0 with deliberately missing model provider fails through real server and shows safe notification; external backend outage not exercised"
  ],
  "limitations": [
    "macOS, Windows, Electron, iOS and Android not run",
    "relay/tunnel and physical remote network not run",
    "live remote provider authentication, account and backend failures not exercised",
    "MCP thread-read mapping covered by source review and focused tests, not live HTTP MCP",
    "reconnect beyond five minute observer window retains durable outcome but does not toast"
  ]
}
