{
  "date": "2026-10-07",
  "evidenceKind": "offline_fault_reproduction",
  "scope": "Synthetic HTTP fixtures and OpenCode CLI pointed only at a loopback fault server. No production model, tool task or settled charge. Retry example does not establish gateway forwarding or actual service rules.",
  "rateLimit": {
    "transport": "httpx.MockTransport; no network or real wait",
    "cases": [
      {
        "case": "temporary-rate-limit",
        "httpStatus": 429,
        "syntheticHeaders": {
          "Retry-After": "12",
          "request-id": "offline-request-1"
        },
        "syntheticBody": {
          "type": "error",
          "error": {
            "type": "rate_limit_error",
            "message": "Synthetic per-minute limit"
          }
        },
        "exampleAttemptIndex": 0,
        "decision": {
          "action": "wait",
          "minimumSeconds": 12.0,
          "reason": "response_retry_after"
        },
        "result": "passed"
      },
      {
        "case": "spend-cap",
        "httpStatus": 429,
        "syntheticHeaders": {},
        "syntheticBody": {
          "type": "error",
          "error": {
            "type": "rate_limit_error",
            "message": "Synthetic spend cap",
            "details": {
              "error_code": "enforced_spend_limit_reached"
            }
          }
        },
        "exampleAttemptIndex": 0,
        "decision": {
          "action": "stop",
          "reason": "spend_cap_requires_resolution"
        },
        "result": "passed"
      },
      {
        "case": "no-wait-header",
        "httpStatus": 429,
        "syntheticHeaders": {},
        "syntheticBody": {
          "error": {
            "type": "rate_limit_error",
            "message": "Synthetic temporary limit; inspect origin"
          }
        },
        "exampleAttemptIndex": 2,
        "decision": {
          "action": "inspect_then_bounded_retry",
          "exampleDelaySeconds": 4,
          "jitterRangeSeconds": [
            0,
            1
          ],
          "reason": "no_valid_wait_header; confirm temporary limit first"
        },
        "result": "passed"
      },
      {
        "case": "retry-budget-exhausted",
        "httpStatus": 429,
        "syntheticHeaders": {},
        "syntheticBody": {
          "error": {
            "type": "rate_limit_error",
            "message": "Synthetic temporary limit"
          }
        },
        "exampleAttemptIndex": 3,
        "decision": {
          "action": "stop",
          "reason": "retry_budget_exhausted"
        },
        "result": "passed"
      },
      {
        "case": "authentication-is-not-429",
        "httpStatus": 401,
        "syntheticHeaders": {},
        "syntheticBody": {
          "error": {
            "type": "authentication_error",
            "message": "Synthetic invalid test token"
          }
        },
        "exampleAttemptIndex": 0,
        "decision": {
          "action": "stop",
          "reason": "not_a_rate_limit"
        },
        "result": "passed"
      }
    ]
  },
  "opencode": {
    "date": "2026-10-07",
    "client": "OpenCode",
    "version": "1.2.15",
    "scope": "isolated XDG paths, no user credentials, loopback fault server; not a production call or coding task",
    "command": "opencode run --model apizt/local-test --format json \"Only reply OK\"",
    "exitCode": 0,
    "timedOut": false,
    "localRequests": [
      {
        "method": "POST",
        "path": "/v1/chat/completions",
        "model": "local-test",
        "stream": true,
        "status": 401,
        "kind": "local synthetic HTTP fixture"
      },
      {
        "method": "POST",
        "path": "/v1/chat/completions",
        "model": "local-test",
        "stream": true,
        "status": 401,
        "kind": "local synthetic HTTP fixture"
      }
    ],
    "errorOutput": [
      "{\"type\":\"error\",\"timestamp\":1791347543399,\"sessionID\":\"[LOCAL_SESSION_REDACTED]\",\"error\":{\"name\":\"APIError\",\"data\":{\"message\":\"Local simulated authentication failure\",\"statusCode\":401,\"isRetryable\":false,\"responseHeaders\":{\"content-type\":\"application/json\",\"date\":\"Wed, 07 Oct 2026 04:32:23 GMT\",\"server\":\"BaseHTTP/0.6 Python/3.14.3\"},\"responseBody\":\"{\\\"error\\\": {\\\"message\\\": \\\"Local simulated authentication failure\\\", \\\"type\\\": \\\"authentication_error\\\"}}\",\"metadata\":{\"url\":\"http://127.0.0.1:64995/v1/chat/completions\"}}}}"
    ],
    "paidModelCalls": 0
  },
  "paidModelCalls": 0,
  "settledCharge": null,
  "sources": [
    "https://platform.claude.com/docs/en/api/rate-limits",
    "https://platform.claude.com/docs/en/api/errors",
    "https://opencode.ai/docs/providers/",
    "https://opencode.ai/docs/cli/",
    "https://opencode.ai/docs/troubleshooting/"
  ]
}