{
  "generatedAt": "2026-10-26T12:29:06.131Z",
  "runtime": "v24.21.0",
  "runSuccess": false,
  "runErrors": [],
  "versions": {
    "ffetch": "5.7.1",
    "ky": "2.2.0",
    "fetch-retry": "6.0.0",
    "ofetch": "1.5.1",
    "wretch": "3.0.9",
    "resilient-fetch-client": "0.3.0",
    "fetch-smartly": "1.0.2",
    "@resili/fetch": "0.2.0-beta.1",
    "fetch-resilience": "0.1.0",
    "flowshield": "1.0.4",
    "ts-retry-circuit": "2.1.1"
  },
  "counts": {
    "pass": 122,
    "fail": 25,
    "skipped": 0,
    "not-run": 0,
    "not-tested": 0,
    "not-applicable": 84
  },
  "rows": [
    {
      "id": "retry-recovery",
      "title": "Retry recovery",
      "description": "Two 503 responses followed by a successful third attempt.",
      "cells": [
        {
          "scenarioId": "retry-recovery",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-recovery",
            "libraryId": "ffetch",
            "configuration": "GET; two 503 responses then 200; 2 retries; delay 20ms",
            "expected": "200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers",
            "traceFile": "ffetch-retry-recovery.json"
          },
          "durationMs": 18.618824000000018
        },
        {
          "scenarioId": "retry-recovery",
          "libraryId": "ky",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-recovery",
            "libraryId": "ky",
            "configuration": "GET; two 503 responses then 200; 2 retries; delay 20ms",
            "expected": "200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers",
            "traceFile": "ky-retry-recovery.json"
          },
          "durationMs": 11.043652000000009
        },
        {
          "scenarioId": "retry-recovery",
          "libraryId": "fetch-retry",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-recovery",
            "libraryId": "fetch-retry",
            "configuration": "GET; two 503 responses then 200; 2 retries; delay 20ms",
            "expected": "200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers",
            "traceFile": "fetch-retry-retry-recovery.json"
          },
          "durationMs": 2.127791000000002
        },
        {
          "scenarioId": "retry-recovery",
          "libraryId": "ofetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-recovery",
            "libraryId": "ofetch",
            "configuration": "GET; two 503 responses then 200; 2 retries; delay 20ms",
            "expected": "200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers",
            "traceFile": "ofetch-retry-recovery.json"
          },
          "durationMs": 2.778047000000015
        },
        {
          "scenarioId": "retry-recovery",
          "libraryId": "wretch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-recovery",
            "libraryId": "wretch",
            "configuration": "GET; two 503 responses then 200; 2 retries; delay 20ms; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget",
            "expected": "200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers",
            "traceFile": "wretch-retry-recovery.json"
          },
          "durationMs": 3.587342000000035
        },
        {
          "scenarioId": "retry-recovery",
          "libraryId": "resilient-fetch-client",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-recovery",
            "libraryId": "resilient-fetch-client",
            "configuration": "GET; two 503 responses then 200; 2 retries; delay 20ms; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers",
            "traceFile": "resilient-fetch-client-retry-recovery.json"
          },
          "durationMs": 7.057905000000005
        },
        {
          "scenarioId": "retry-recovery",
          "libraryId": "fetch-smartly",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-recovery",
            "libraryId": "fetch-smartly",
            "configuration": "GET; two 503 responses then 200; 2 retries; delay 20ms; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers",
            "traceFile": "fetch-smartly-retry-recovery.json"
          },
          "durationMs": 18.083432000000016
        },
        {
          "scenarioId": "retry-recovery",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-recovery",
            "libraryId": "@resili/fetch",
            "configuration": "GET; two 503 responses then 200; 2 retries; delay 20ms; maxAttempts=retries+1; circuit outside hedge",
            "expected": "200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers",
            "traceFile": "-resili-fetch-retry-recovery.json"
          },
          "durationMs": 7.078532999999993
        },
        {
          "scenarioId": "retry-recovery",
          "libraryId": "fetch-resilience",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-recovery",
            "libraryId": "fetch-resilience",
            "configuration": "GET; two 503 responses then 200; 2 retries; delay 20ms",
            "expected": "200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers",
            "traceFile": "fetch-resilience-retry-recovery.json"
          },
          "durationMs": 1.8924910000000068
        },
        {
          "scenarioId": "retry-recovery",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-recovery",
            "libraryId": "flowshield",
            "configuration": "GET; two 503 responses then 200; 2 retries; delay 20ms; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers",
            "traceFile": "flowshield-retry-recovery.json"
          },
          "durationMs": 1.7764329999999973
        },
        {
          "scenarioId": "retry-recovery",
          "libraryId": "ts-retry-circuit",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-recovery",
            "libraryId": "ts-retry-circuit",
            "configuration": "GET; two 503 responses then 200; 2 retries; delay 20ms; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests",
            "expected": "200; body ready; exactly 3 attempts; no late attempts, active attempts or transport timers",
            "traceFile": "ts-retry-circuit-retry-recovery.json"
          },
          "durationMs": 2.7260009999999966
        }
      ]
    },
    {
      "id": "retry-exhaustion",
      "title": "Retry exhaustion",
      "description": "Repeated 503 responses exhaust the retry budget.",
      "cells": [
        {
          "scenarioId": "retry-exhaustion",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-exhaustion",
            "libraryId": "ffetch",
            "configuration": "GET; three 503 responses; 2 retries; delay 20ms",
            "expected": "Exact HttpError; cause is a 503 Response with the original body; exactly 3 attempts; no transport timers",
            "traceFile": "ffetch-retry-exhaustion.json"
          },
          "durationMs": 5.805160999999998
        },
        {
          "scenarioId": "retry-exhaustion",
          "libraryId": "ky",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-exhaustion",
            "libraryId": "ky",
            "configuration": "GET; three 503 responses; 2 retries; delay 20ms",
            "expected": "Exact HTTPError; response.status is 503; exactly 3 attempts; no transport timers",
            "traceFile": "ky-retry-exhaustion.json"
          },
          "durationMs": 5.965751000000012
        },
        {
          "scenarioId": "retry-exhaustion",
          "libraryId": "fetch-retry",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-exhaustion",
            "libraryId": "fetch-retry",
            "configuration": "GET; three 503 responses; 2 retries; delay 20ms",
            "expected": "Return the final 503 Response with the original body; exactly 3 attempts; no transport timers",
            "traceFile": "fetch-retry-retry-exhaustion.json"
          },
          "durationMs": 1.3972229999999968
        },
        {
          "scenarioId": "retry-exhaustion",
          "libraryId": "ofetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-exhaustion",
            "libraryId": "ofetch",
            "configuration": "GET; three 503 responses; 2 retries; delay 20ms",
            "expected": "Exact FetchError; status is 503; exactly 3 attempts; no transport timers",
            "traceFile": "ofetch-retry-exhaustion.json"
          },
          "durationMs": 1.906646999999964
        },
        {
          "scenarioId": "retry-exhaustion",
          "libraryId": "wretch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-exhaustion",
            "libraryId": "wretch",
            "configuration": "GET; three 503 responses; 2 retries; delay 20ms; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget",
            "expected": "Exact WretchError constructor; status 503; exactly 3 attempts; no transport timers",
            "traceFile": "wretch-retry-exhaustion.json"
          },
          "durationMs": 10.147033999999962
        },
        {
          "scenarioId": "retry-exhaustion",
          "libraryId": "resilient-fetch-client",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-exhaustion",
            "libraryId": "resilient-fetch-client",
            "configuration": "GET; three 503 responses; 2 retries; delay 20ms; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "Exact HttpError; cause responseStatus; details.status 503; exactly 3 attempts; no transport timers",
            "traceFile": "resilient-fetch-client-retry-exhaustion.json"
          },
          "durationMs": 10.12591500000002
        },
        {
          "scenarioId": "retry-exhaustion",
          "libraryId": "fetch-smartly",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-exhaustion",
            "libraryId": "fetch-smartly",
            "configuration": "GET; three 503 responses; 2 retries; delay 20ms; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "Exact HttpError; status 503 and original error body; exactly 3 attempts; no transport timers",
            "traceFile": "fetch-smartly-retry-exhaustion.json"
          },
          "durationMs": 1.5685639999999808
        },
        {
          "scenarioId": "retry-exhaustion",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-exhaustion",
            "libraryId": "@resili/fetch",
            "configuration": "GET; three 503 responses; 2 retries; delay 20ms; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Exact RetryExceededError; ERR_RETRY_EXCEEDED; attempts and identical cause/lastError; exactly 3 attempts; no transport timers",
            "traceFile": "-resili-fetch-retry-exhaustion.json"
          },
          "durationMs": 2.1477780000000166
        },
        {
          "scenarioId": "retry-exhaustion",
          "libraryId": "fetch-resilience",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-exhaustion",
            "libraryId": "fetch-resilience",
            "configuration": "GET; three 503 responses; 2 retries; delay 20ms",
            "expected": "Return the final 503 Response with the original body; exactly 3 attempts; no transport timers",
            "traceFile": "fetch-resilience-retry-exhaustion.json"
          },
          "durationMs": 1.104535999999996
        },
        {
          "scenarioId": "retry-exhaustion",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-exhaustion",
            "libraryId": "flowshield",
            "configuration": "GET; three 503 responses; 2 retries; delay 20ms; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Exact RetryExhaustedError with attempts and HttpStatusError cause carrying response.status 503; with zero retries, exact underlying HttpStatusError; exactly 3 attempts; no transport timers",
            "traceFile": "flowshield-retry-exhaustion.json"
          },
          "durationMs": 1.3435230000000047
        },
        {
          "scenarioId": "retry-exhaustion",
          "libraryId": "ts-retry-circuit",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-exhaustion",
            "libraryId": "ts-retry-circuit",
            "configuration": "GET; three 503 responses; 2 retries; delay 20ms; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests",
            "expected": "Exact Error constructor and HTTP 503 message from createCircuitFetch; exactly 3 attempts; no transport timers",
            "traceFile": "ts-retry-circuit-retry-exhaustion.json"
          },
          "durationMs": 1.6952420000000075
        }
      ]
    },
    {
      "id": "retry-disabled",
      "title": "Zero retries",
      "description": "A zero retry budget permits exactly one attempt.",
      "cells": [
        {
          "scenarioId": "retry-disabled",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-disabled",
            "libraryId": "ffetch",
            "configuration": "GET; one 503; 0 retries",
            "expected": "Exact HttpError; cause is a 503 Response with the original body; exactly 1 attempts; no transport timers",
            "traceFile": "ffetch-zero-retries.json"
          },
          "durationMs": 2.743522999999982
        },
        {
          "scenarioId": "retry-disabled",
          "libraryId": "ky",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-disabled",
            "libraryId": "ky",
            "configuration": "GET; one 503; 0 retries",
            "expected": "Exact HTTPError; response.status is 503; exactly 1 attempts; no transport timers",
            "traceFile": "ky-zero-retries.json"
          },
          "durationMs": 1.7044390000000362
        },
        {
          "scenarioId": "retry-disabled",
          "libraryId": "fetch-retry",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-disabled",
            "libraryId": "fetch-retry",
            "configuration": "GET; one 503; 0 retries",
            "expected": "Return the final 503 Response with the original body; exactly 1 attempts; no transport timers",
            "traceFile": "fetch-retry-zero-retries.json"
          },
          "durationMs": 1.7635589999999866
        },
        {
          "scenarioId": "retry-disabled",
          "libraryId": "ofetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-disabled",
            "libraryId": "ofetch",
            "configuration": "GET; one 503; 0 retries",
            "expected": "Exact FetchError; status is 503; exactly 1 attempts; no transport timers",
            "traceFile": "ofetch-zero-retries.json"
          },
          "durationMs": 0.9867570000000114
        },
        {
          "scenarioId": "retry-disabled",
          "libraryId": "wretch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-disabled",
            "libraryId": "wretch",
            "configuration": "GET; one 503; 0 retries; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget",
            "expected": "Exact WretchError constructor; status 503; exactly 1 attempts; no transport timers",
            "traceFile": "wretch-zero-retries.json"
          },
          "durationMs": 4.494297999999958
        },
        {
          "scenarioId": "retry-disabled",
          "libraryId": "resilient-fetch-client",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-disabled",
            "libraryId": "resilient-fetch-client",
            "configuration": "GET; one 503; 0 retries; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "Exact HttpError; cause responseStatus; details.status 503; exactly 1 attempts; no transport timers",
            "traceFile": "resilient-fetch-client-zero-retries.json"
          },
          "durationMs": 1.217066999999986
        },
        {
          "scenarioId": "retry-disabled",
          "libraryId": "fetch-smartly",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-disabled",
            "libraryId": "fetch-smartly",
            "configuration": "GET; one 503; 0 retries; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "Exact HttpError; status 503 and original error body; exactly 1 attempts; no transport timers",
            "traceFile": "fetch-smartly-zero-retries.json"
          },
          "durationMs": 0.8344109999999887
        },
        {
          "scenarioId": "retry-disabled",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-disabled",
            "libraryId": "@resili/fetch",
            "configuration": "GET; one 503; 0 retries; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Exact RetryExceededError; ERR_RETRY_EXCEEDED; attempts and identical cause/lastError; exactly 1 attempts; no transport timers",
            "traceFile": "-resili-fetch-zero-retries.json"
          },
          "durationMs": 1.5903959999999984
        },
        {
          "scenarioId": "retry-disabled",
          "libraryId": "fetch-resilience",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-disabled",
            "libraryId": "fetch-resilience",
            "configuration": "GET; one 503; 0 retries",
            "expected": "Return the final 503 Response with the original body; exactly 1 attempts; no transport timers",
            "traceFile": "fetch-resilience-zero-retries.json"
          },
          "durationMs": 1.2428549999999632
        },
        {
          "scenarioId": "retry-disabled",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-disabled",
            "libraryId": "flowshield",
            "configuration": "GET; one 503; 0 retries; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Exact RetryExhaustedError with attempts and HttpStatusError cause carrying response.status 503; with zero retries, exact underlying HttpStatusError; exactly 1 attempts; no transport timers",
            "traceFile": "flowshield-zero-retries.json"
          },
          "durationMs": 0.9689420000000268
        },
        {
          "scenarioId": "retry-disabled",
          "libraryId": "ts-retry-circuit",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-disabled",
            "libraryId": "ts-retry-circuit",
            "configuration": "GET; one 503; 0 retries; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests",
            "expected": "Exact Error constructor and HTTP 503 message from createCircuitFetch; exactly 1 attempts; no transport timers",
            "traceFile": "ts-retry-circuit-zero-retries.json"
          },
          "durationMs": 0.7997060000000147
        }
      ]
    },
    {
      "id": "retry-backoff-abort",
      "title": "Retry + abort during backoff",
      "description": "Cancel during backoff, drain timers, then make a healthy request.",
      "cells": [
        {
          "scenarioId": "retry-backoff-abort",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-backoff-abort",
            "libraryId": "ffetch",
            "configuration": "2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up",
            "expected": "Exact AbortError; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "ffetch-retry-abort.json"
          },
          "durationMs": 55.91342800000001
        },
        {
          "scenarioId": "retry-backoff-abort",
          "libraryId": "ky",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-backoff-abort",
            "libraryId": "ky",
            "configuration": "2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up",
            "expected": "Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "ky-retry-backoff-abort.json"
          },
          "durationMs": 17.199690999999973
        },
        {
          "scenarioId": "retry-backoff-abort",
          "libraryId": "fetch-retry",
          "status": "fail",
          "failures": [
            "AssertionError: Cancellation must settle during backoff: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:29:68\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: No dispatch after cancellation: expected 3 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:36:71\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: expected 4 to be 2 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:43:30\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "retry-backoff-abort",
            "libraryId": "fetch-retry",
            "configuration": "2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up",
            "expected": "Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "fetch-retry-retry-backoff-abort.json"
          },
          "durationMs": 14.858858999999995,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/fetch-retry-retry-backoff-abort.json"
        },
        {
          "scenarioId": "retry-backoff-abort",
          "libraryId": "ofetch",
          "status": "fail",
          "failures": [
            "AssertionError: Cancellation must settle during backoff: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:29:68\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: No dispatch after cancellation: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:36:71\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: expected 3 to be 2 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:43:30\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "retry-backoff-abort",
            "libraryId": "ofetch",
            "configuration": "2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up",
            "expected": "Exact FetchError with caller abort reason as cause; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "ofetch-retry-backoff-abort.json"
          },
          "durationMs": 4.2219989999999825,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/ofetch-retry-backoff-abort.json"
        },
        {
          "scenarioId": "retry-backoff-abort",
          "libraryId": "wretch",
          "status": "fail",
          "failures": [
            "AssertionError: Cancellation must settle during backoff: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:29:68\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: No dispatch after cancellation: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:36:71\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: expected 3 to be 2 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:43:30\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "retry-backoff-abort",
            "libraryId": "wretch",
            "configuration": "2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget",
            "expected": "Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "wretch-retry-backoff-abort.json"
          },
          "durationMs": 5.354417999999953,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/wretch-retry-backoff-abort.json"
        },
        {
          "scenarioId": "retry-backoff-abort",
          "libraryId": "resilient-fetch-client",
          "status": "fail",
          "failures": [
            "AssertionError: Cancellation must settle during backoff: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:29:68\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: No dispatch after cancellation: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:36:71\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: expected 3 to be 2 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:43:30\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "retry-backoff-abort",
            "libraryId": "resilient-fetch-client",
            "configuration": "2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "resilient-fetch-client-retry-backoff-abort.json"
          },
          "durationMs": 10.608487999999966,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/resilient-fetch-client-retry-backoff-abort.json"
        },
        {
          "scenarioId": "retry-backoff-abort",
          "libraryId": "fetch-smartly",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-backoff-abort",
            "libraryId": "fetch-smartly",
            "configuration": "2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "fetch-smartly-retry-backoff-abort.json"
          },
          "durationMs": 3.060315000000003
        },
        {
          "scenarioId": "retry-backoff-abort",
          "libraryId": "@resili/fetch",
          "status": "fail",
          "failures": [
            "AssertionError: Cancellation must settle during backoff: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:29:68\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "retry-backoff-abort",
            "libraryId": "@resili/fetch",
            "configuration": "2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Exact DOMException, identical caller abort reason forwarded by the fetch adapter; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "-resili-fetch-retry-backoff-abort.json"
          },
          "durationMs": 8.016678000000013,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/-resili-fetch-retry-backoff-abort.json"
        },
        {
          "scenarioId": "retry-backoff-abort",
          "libraryId": "fetch-resilience",
          "status": "fail",
          "failures": [
            "AssertionError: Cancellation must settle during backoff: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:29:68\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: No dispatch after cancellation: expected 3 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:36:71\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: expected 4 to be 2 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:43:30\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "retry-backoff-abort",
            "libraryId": "fetch-resilience",
            "configuration": "2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up",
            "expected": "Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "fetch-resilience-retry-backoff-abort.json"
          },
          "durationMs": 2.878385000000037,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/fetch-resilience-retry-backoff-abort.json"
        },
        {
          "scenarioId": "retry-backoff-abort",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-backoff-abort",
            "libraryId": "flowshield",
            "configuration": "2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "flowshield-retry-backoff-abort.json"
          },
          "durationMs": 1.778697999999963
        },
        {
          "scenarioId": "retry-backoff-abort",
          "libraryId": "ts-retry-circuit",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-backoff-abort",
            "libraryId": "ts-retry-circuit",
            "configuration": "2 retries; backoff 100ms; caller abort at 20ms; drain timers; healthy follow-up; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests",
            "expected": "Exact CircuitAbortedError, CIRCUIT_ABORTED; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "ts-retry-circuit-retry-backoff-abort.json"
          },
          "durationMs": 2.195577999999955
        }
      ]
    },
    {
      "id": "bulkhead-queued-abort",
      "title": "Bulkhead + queued abort",
      "description": "Cancel a queued request and admit its replacement.",
      "cells": [
        {
          "scenarioId": "bulkhead-queued-abort",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-queued-abort",
            "libraryId": "ffetch",
            "configuration": "Capacity 1; queue 1; first request 100ms; queued caller abort at 20ms; replacement",
            "expected": "Exact AbortError; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "ffetch-bulkhead-abort.json"
          },
          "durationMs": 14.349024999999983
        },
        {
          "scenarioId": "bulkhead-queued-abort",
          "libraryId": "ky",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-queued-abort",
            "libraryId": "ky",
            "configuration": "Not applicable",
            "expected": "No bulkhead queue is offered by this package.",
            "notApplicable": "No bulkhead queue is offered by this package."
          }
        },
        {
          "scenarioId": "bulkhead-queued-abort",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-queued-abort",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No bulkhead queue is offered by this package.",
            "notApplicable": "No bulkhead queue is offered by this package."
          }
        },
        {
          "scenarioId": "bulkhead-queued-abort",
          "libraryId": "ofetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-queued-abort",
            "libraryId": "ofetch",
            "configuration": "Not applicable",
            "expected": "No bulkhead queue is offered by this package.",
            "notApplicable": "No bulkhead queue is offered by this package."
          }
        },
        {
          "scenarioId": "bulkhead-queued-abort",
          "libraryId": "wretch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-queued-abort",
            "libraryId": "wretch",
            "configuration": "Not applicable",
            "expected": "No bulkhead queue is offered by this package.",
            "notApplicable": "No bulkhead queue is offered by this package."
          }
        },
        {
          "scenarioId": "bulkhead-queued-abort",
          "libraryId": "resilient-fetch-client",
          "status": "fail",
          "failures": [
            "AssertionError: Queued cancellation must settle before slot handoff: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:64:82\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Cancelled queue entry must release queue capacity: expected false to be true // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:73:81\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: expected 1 to be 2 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:75:32\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "bulkhead-queued-abort",
            "libraryId": "resilient-fetch-client",
            "configuration": "Capacity 1; queue 1; first request 100ms; queued caller abort at 20ms; replacement; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "resilient-fetch-client-bulkhead-queued-abort.json"
          },
          "durationMs": 3.8090159999999855,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/resilient-fetch-client-bulkhead-queued-abort.json"
        },
        {
          "scenarioId": "bulkhead-queued-abort",
          "libraryId": "fetch-smartly",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-queued-abort",
            "libraryId": "fetch-smartly",
            "configuration": "Not applicable",
            "expected": "No bulkhead queue is offered by this package.",
            "notApplicable": "No bulkhead queue is offered by this package."
          }
        },
        {
          "scenarioId": "bulkhead-queued-abort",
          "libraryId": "@resili/fetch",
          "status": "fail",
          "failures": [
            "AssertionError: Queued cancellation must settle before slot handoff: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:64:82\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Cancelled queue entry must release queue capacity: expected false to be true // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:73:81\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: expected 1 to be 2 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:75:32\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "bulkhead-queued-abort",
            "libraryId": "@resili/fetch",
            "configuration": "Capacity 1; queue 1; first request 100ms; queued caller abort at 20ms; replacement; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Exact DOMException, identical caller abort reason forwarded by the fetch adapter; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "-resili-fetch-bulkhead-queued-abort.json"
          },
          "durationMs": 14.251683000000014,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/-resili-fetch-bulkhead-queued-abort.json"
        },
        {
          "scenarioId": "bulkhead-queued-abort",
          "libraryId": "fetch-resilience",
          "status": "fail",
          "failures": [
            "AssertionError: Queued cancellation must settle before slot handoff: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:64:82\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Cancelled queue entry must release queue capacity: expected false to be true // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:73:81\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: expected [ …(2) ] to not include 'https://example.test/resource/cancell…'\n    at Proxy.<anonymous> (file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/index.C4tKZ0yW.js:2077:15)\n    at Proxy.<anonymous> (file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/index.C4tKZ0yW.js:1944:14)\n    at Proxy.methodWrapper (file:///home/runner/work/http-resilience/http-resilience/node_modules/chai/index.js:1737:25)\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:77:24\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "bulkhead-queued-abort",
            "libraryId": "fetch-resilience",
            "configuration": "Capacity 1; queue 1; first request 100ms; queued caller abort at 20ms; replacement",
            "expected": "Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "fetch-resilience-bulkhead-queued-abort.json"
          },
          "durationMs": 4.259217999999976,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/fetch-resilience-bulkhead-queued-abort.json"
        },
        {
          "scenarioId": "bulkhead-queued-abort",
          "libraryId": "flowshield",
          "status": "fail",
          "failures": [
            "AssertionError: Queued cancellation must settle before slot handoff: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:64:82\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Cancelled queue entry must release queue capacity: expected false to be true // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:73:81\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: expected [ …(2) ] to not include 'https://example.test/resource/cancell…'\n    at Proxy.<anonymous> (file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/index.C4tKZ0yW.js:2077:15)\n    at Proxy.<anonymous> (file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/index.C4tKZ0yW.js:1944:14)\n    at Proxy.methodWrapper (file:///home/runner/work/http-resilience/http-resilience/node_modules/chai/index.js:1737:25)\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/competitor-combinations.test.ts:77:24\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "bulkhead-queued-abort",
            "libraryId": "flowshield",
            "configuration": "Capacity 1; queue 1; first request 100ms; queued caller abort at 20ms; replacement; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Exact DOMException, identical caller abort reason; prompt settlement; cancelled caller never dispatched again; replacement/follow-up succeeds; no leaked transport work",
            "traceFile": "flowshield-bulkhead-queued-abort.json"
          },
          "durationMs": 2.363611999999989,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/flowshield-bulkhead-queued-abort.json"
        },
        {
          "scenarioId": "bulkhead-queued-abort",
          "libraryId": "ts-retry-circuit",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-queued-abort",
            "libraryId": "ts-retry-circuit",
            "configuration": "Not applicable",
            "expected": "Capacity rejects immediately; no queued bulkhead is offered.",
            "notApplicable": "Capacity rejects immediately; no queued bulkhead is offered."
          }
        }
      ]
    },
    {
      "id": "hedge-stream-winner",
      "title": "Hedge + streaming body",
      "description": "The hedge wins while the primary hangs; consume the winning stream.",
      "cells": [
        {
          "scenarioId": "hedge-stream-winner",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-stream-winner",
            "libraryId": "ffetch",
            "configuration": "Primary hangs; hedge after 10ms; winning body chunks at +20ms and +40ms",
            "expected": "Body winner readable to EOF; primary cancelled; exactly 2 attempts; no active attempts, bodies or transport timers",
            "traceFile": "ffetch-hedge-stream.json"
          },
          "durationMs": 8.122986999999995
        },
        {
          "scenarioId": "hedge-stream-winner",
          "libraryId": "ky",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-stream-winner",
            "libraryId": "ky",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "hedge-stream-winner",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-stream-winner",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "hedge-stream-winner",
          "libraryId": "ofetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-stream-winner",
            "libraryId": "ofetch",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "hedge-stream-winner",
          "libraryId": "wretch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-stream-winner",
            "libraryId": "wretch",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "hedge-stream-winner",
          "libraryId": "resilient-fetch-client",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-stream-winner",
            "libraryId": "resilient-fetch-client",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "hedge-stream-winner",
          "libraryId": "fetch-smartly",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-stream-winner",
            "libraryId": "fetch-smartly",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "hedge-stream-winner",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-stream-winner",
            "libraryId": "@resili/fetch",
            "configuration": "Primary hangs; hedge after 10ms; winning body chunks at +20ms and +40ms; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Body winner readable to EOF; primary cancelled; exactly 2 attempts; no active attempts, bodies or transport timers",
            "traceFile": "-resili-fetch-hedge-stream-winner.json"
          },
          "durationMs": 7.062730999999985
        },
        {
          "scenarioId": "hedge-stream-winner",
          "libraryId": "fetch-resilience",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-stream-winner",
            "libraryId": "fetch-resilience",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "hedge-stream-winner",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-stream-winner",
            "libraryId": "flowshield",
            "configuration": "Primary hangs; hedge after 10ms; winning body chunks at +20ms and +40ms; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Body winner readable to EOF; loser result discarded as documented; caller abort cleans up the hanging loser; exactly 2 attempts; no remaining transport work",
            "traceFile": "flowshield-hedge-stream-winner.json"
          },
          "durationMs": 1.7543430000000058
        },
        {
          "scenarioId": "hedge-stream-winner",
          "libraryId": "ts-retry-circuit",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-stream-winner",
            "libraryId": "ts-retry-circuit",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        }
      ]
    },
    {
      "id": "circuit-hedge",
      "title": "Circuit + hedge accounting",
      "description": "A failed primary loses to a healthy hedge; then deliberately trip the circuit.",
      "cells": [
        {
          "scenarioId": "circuit-hedge",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-hedge",
            "libraryId": "ffetch",
            "configuration": "Circuit trips after one logical failure; hedge at 10ms; primary 503 at 15ms; winning hedge at 30ms; unhedged POST failure",
            "expected": "Winner and next request succeed; threshold-crossing POST and subsequent refusal throw exact CircuitOpenError; exactly 4 attempts",
            "traceFile": "ffetch-circuit-hedge.json"
          },
          "durationMs": 7.15396400000003
        },
        {
          "scenarioId": "circuit-hedge",
          "libraryId": "ky",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-hedge",
            "libraryId": "ky",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "circuit-hedge",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-hedge",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "circuit-hedge",
          "libraryId": "ofetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-hedge",
            "libraryId": "ofetch",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "circuit-hedge",
          "libraryId": "wretch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-hedge",
            "libraryId": "wretch",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "circuit-hedge",
          "libraryId": "resilient-fetch-client",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-hedge",
            "libraryId": "resilient-fetch-client",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "circuit-hedge",
          "libraryId": "fetch-smartly",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-hedge",
            "libraryId": "fetch-smartly",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "circuit-hedge",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-hedge",
            "libraryId": "@resili/fetch",
            "configuration": "Circuit trips after one logical failure; hedge at 10ms; primary 503 at 15ms; winning hedge at 30ms; unhedged POST failure; maxAttempts=retries+1; circuit outside hedge; POST hedges too; failed POST uses 2 attempts; same circuit instance throughout",
            "expected": "Winner and follow-up succeed; hedged POST failure throws exact Error with message No acceptable hedged result completed.; next call exact CircuitOpenError; 5 transport attempts",
            "traceFile": "-resili-fetch-circuit-hedge.json"
          },
          "durationMs": 13.26846599999999
        },
        {
          "scenarioId": "circuit-hedge",
          "libraryId": "fetch-resilience",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-hedge",
            "libraryId": "fetch-resilience",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        },
        {
          "scenarioId": "circuit-hedge",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-hedge",
            "libraryId": "flowshield",
            "configuration": "Circuit trips after one logical failure; hedge at 10ms; primary 503 at 15ms; winning hedge at 30ms; unhedged POST failure; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Winner and next request succeed; deliberate failure follows HTTP contract; next call throws exact CircuitOpenError; exactly 4 attempts",
            "traceFile": "flowshield-circuit-hedge.json"
          },
          "durationMs": 1.736707000000024
        },
        {
          "scenarioId": "circuit-hedge",
          "libraryId": "ts-retry-circuit",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-hedge",
            "libraryId": "ts-retry-circuit",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered by this package.",
            "notApplicable": "No hedging policy is offered by this package."
          }
        }
      ]
    },
    {
      "id": "http-retry",
      "title": "Retry over real HTTP",
      "description": "Native fetch receives two 503 responses before recovery.",
      "cells": [
        {
          "scenarioId": "http-retry",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-retry",
            "libraryId": "ffetch",
            "configuration": "Native fetch; loopback HTTP; 2 retries; delay 5ms",
            "expected": "200; body ready; exactly 3 server arrivals"
          },
          "durationMs": 59.017735999999985
        },
        {
          "scenarioId": "http-retry",
          "libraryId": "ky",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-retry",
            "libraryId": "ky",
            "configuration": "Native fetch; loopback HTTP; 2 retries; delay 5ms",
            "expected": "200; body ready; exactly 3 server arrivals"
          },
          "durationMs": 55.336288999999965
        },
        {
          "scenarioId": "http-retry",
          "libraryId": "fetch-retry",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-retry",
            "libraryId": "fetch-retry",
            "configuration": "Native fetch; loopback HTTP; 2 retries; delay 5ms",
            "expected": "200; body ready; exactly 3 server arrivals"
          },
          "durationMs": 18.881264999999985
        },
        {
          "scenarioId": "http-retry",
          "libraryId": "ofetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-retry",
            "libraryId": "ofetch",
            "configuration": "Native fetch; loopback HTTP; 2 retries; delay 5ms",
            "expected": "200; body ready; exactly 3 server arrivals"
          },
          "durationMs": 18.98060099999998
        },
        {
          "scenarioId": "http-retry",
          "libraryId": "wretch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-retry",
            "libraryId": "wretch",
            "configuration": "Native fetch; loopback HTTP; 2 retries; delay 5ms; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget",
            "expected": "200; body ready; exactly 3 server arrivals"
          },
          "durationMs": 16.037384999999972
        },
        {
          "scenarioId": "http-retry",
          "libraryId": "resilient-fetch-client",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-retry",
            "libraryId": "resilient-fetch-client",
            "configuration": "Native fetch; loopback HTTP; 2 retries; delay 5ms; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "200; body ready; exactly 3 server arrivals"
          },
          "durationMs": 11.754853000000026
        },
        {
          "scenarioId": "http-retry",
          "libraryId": "fetch-smartly",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-retry",
            "libraryId": "fetch-smartly",
            "configuration": "Native fetch; loopback HTTP; 2 retries; delay 5ms; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "200; body ready; exactly 3 server arrivals"
          },
          "durationMs": 14.599744999999984
        },
        {
          "scenarioId": "http-retry",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-retry",
            "libraryId": "@resili/fetch",
            "configuration": "Native fetch; loopback HTTP; 2 retries; delay 5ms; maxAttempts=retries+1; circuit outside hedge",
            "expected": "200; body ready; exactly 3 server arrivals"
          },
          "durationMs": 16.61757
        },
        {
          "scenarioId": "http-retry",
          "libraryId": "fetch-resilience",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-retry",
            "libraryId": "fetch-resilience",
            "configuration": "Native fetch; loopback HTTP; 2 retries; delay 5ms",
            "expected": "200; body ready; exactly 3 server arrivals"
          },
          "durationMs": 13.38835899999981
        },
        {
          "scenarioId": "http-retry",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-retry",
            "libraryId": "flowshield",
            "configuration": "Native fetch; loopback HTTP; 2 retries; delay 5ms; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "200; body ready; exactly 3 server arrivals"
          },
          "durationMs": 13.965026999999964
        },
        {
          "scenarioId": "http-retry",
          "libraryId": "ts-retry-circuit",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-retry",
            "libraryId": "ts-retry-circuit",
            "configuration": "Native fetch; loopback HTTP; 2 retries; delay 5ms; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests",
            "expected": "200; body ready; exactly 3 server arrivals"
          },
          "durationMs": 8.203508000000056
        }
      ]
    },
    {
      "id": "http-timeout",
      "title": "Timeout over real HTTP",
      "description": "Headers exceed the deadline; verify the error and healthy follow-up.",
      "cells": [
        {
          "scenarioId": "http-timeout",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-timeout",
            "libraryId": "ffetch",
            "configuration": "Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries",
            "expected": "Exact TimeoutError; healthy follow-up succeeds"
          },
          "durationMs": 114.85281799999998
        },
        {
          "scenarioId": "http-timeout",
          "libraryId": "ky",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-timeout",
            "libraryId": "ky",
            "configuration": "Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries",
            "expected": "Exact TimeoutError; healthy follow-up succeeds"
          },
          "durationMs": 111.108252
        },
        {
          "scenarioId": "http-timeout",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "http-timeout",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No timeout policy is offered; native fetch alone does not supply this deadline.",
            "notApplicable": "No timeout policy is offered; native fetch alone does not supply this deadline."
          }
        },
        {
          "scenarioId": "http-timeout",
          "libraryId": "ofetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-timeout",
            "libraryId": "ofetch",
            "configuration": "Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries",
            "expected": "Exact FetchError; exact Error cause named TimeoutError with code 23; healthy follow-up succeeds"
          },
          "durationMs": 105.43317499999995
        },
        {
          "scenarioId": "http-timeout",
          "libraryId": "wretch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-timeout",
            "libraryId": "wretch",
            "configuration": "Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget",
            "expected": "Exact DOMException named AbortError from AbortAddon.setTimeout; healthy follow-up succeeds"
          },
          "durationMs": 107.09574399999997
        },
        {
          "scenarioId": "http-timeout",
          "libraryId": "resilient-fetch-client",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-timeout",
            "libraryId": "resilient-fetch-client",
            "configuration": "Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "Exact Cockatiel TaskCancelledError identifying timeout; healthy follow-up succeeds"
          },
          "durationMs": 105.31305099999997
        },
        {
          "scenarioId": "http-timeout",
          "libraryId": "fetch-smartly",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-timeout",
            "libraryId": "fetch-smartly",
            "configuration": "Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "Exact TimeoutError with timeout 100; healthy follow-up succeeds"
          },
          "durationMs": 102.95750299999997
        },
        {
          "scenarioId": "http-timeout",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-timeout",
            "libraryId": "@resili/fetch",
            "configuration": "Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Exact RetryExceededError (1 attempt); cause is exact TimeoutError, ERR_TIMEOUT, timeoutMs 100; healthy follow-up succeeds"
          },
          "durationMs": 103.93564400000002
        },
        {
          "scenarioId": "http-timeout",
          "libraryId": "fetch-resilience",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-timeout",
            "libraryId": "fetch-resilience",
            "configuration": "Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries",
            "expected": "Exact TimeoutError; healthy follow-up succeeds"
          },
          "durationMs": 101.88506499999994
        },
        {
          "scenarioId": "http-timeout",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-timeout",
            "libraryId": "flowshield",
            "configuration": "Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Exact TimeoutError; healthy follow-up succeeds"
          },
          "durationMs": 101.97365300000001
        },
        {
          "scenarioId": "http-timeout",
          "libraryId": "ts-retry-circuit",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "http-timeout",
            "libraryId": "ts-retry-circuit",
            "configuration": "Native fetch; loopback HTTP; headers delayed 1000ms; per-request/attempt timeout 100ms; 0 retries; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests",
            "expected": "Exact CircuitTimeoutError, CIRCUIT_TIMEOUT, timeoutMs 100; healthy follow-up succeeds"
          },
          "durationMs": 102.82798899999989
        }
      ]
    },
    {
      "id": "retry-total-timeout",
      "title": "Retry + total timeout",
      "description": "Deadline expires during backoff or the second attempt.",
      "cells": [
        {
          "scenarioId": "retry-total-timeout",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-total-timeout",
            "libraryId": "ffetch",
            "configuration": "100ms overall deadline; 1 retry; backoff 300ms or 80ms with second attempt hanging",
            "expected": "Exact library timeout error; settle at 100ms; original budget preserved; no dispatch after deadline; cooperative work stops; healthy follow-up",
            "traceFile": "ffetch-retry-total-timeout.json"
          },
          "durationMs": 25.248136000000045
        },
        {
          "scenarioId": "retry-total-timeout",
          "libraryId": "ky",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-total-timeout",
            "libraryId": "ky",
            "configuration": "100ms overall deadline; 1 retry; backoff 300ms or 80ms with second attempt hanging",
            "expected": "Exact library timeout error; settle at 100ms; original budget preserved; no dispatch after deadline; cooperative work stops; healthy follow-up",
            "traceFile": "ky-retry-total-timeout.json"
          },
          "durationMs": 14.130716999999947
        },
        {
          "scenarioId": "retry-total-timeout",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "retry-total-timeout",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract.",
            "notApplicable": "No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract."
          }
        },
        {
          "scenarioId": "retry-total-timeout",
          "libraryId": "ofetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "retry-total-timeout",
            "libraryId": "ofetch",
            "configuration": "Not applicable",
            "expected": "No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract.",
            "notApplicable": "No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract."
          }
        },
        {
          "scenarioId": "retry-total-timeout",
          "libraryId": "wretch",
          "status": "fail",
          "failures": [
            "AssertionError: Deadline must cover backoff and subsequent attempts: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:24:86\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: No dispatch after original deadline: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:33:76\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "retry-total-timeout",
            "libraryId": "wretch",
            "configuration": "100ms overall deadline; 1 retry; backoff 300ms or 80ms with second attempt hanging; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget",
            "expected": "Exact library timeout error; settle at 100ms; original budget preserved; no dispatch after deadline; cooperative work stops; healthy follow-up",
            "traceFile": "wretch-retry-total-timeout.json"
          },
          "durationMs": 17.970461,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/wretch-retry-total-timeout.json"
        },
        {
          "scenarioId": "retry-total-timeout",
          "libraryId": "resilient-fetch-client",
          "status": "fail",
          "failures": [
            "AssertionError: No dispatch after original deadline: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:33:76\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "retry-total-timeout",
            "libraryId": "resilient-fetch-client",
            "configuration": "100ms overall deadline; 1 retry; backoff 300ms or 80ms with second attempt hanging; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "Exact library timeout error; settle at 100ms; original budget preserved; no dispatch after deadline; cooperative work stops; healthy follow-up",
            "traceFile": "resilient-fetch-client-retry-total-timeout.json"
          },
          "durationMs": 12.978680999999995,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/resilient-fetch-client-retry-total-timeout.json"
        },
        {
          "scenarioId": "retry-total-timeout",
          "libraryId": "fetch-smartly",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "retry-total-timeout",
            "libraryId": "fetch-smartly",
            "configuration": "Not applicable",
            "expected": "No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract.",
            "notApplicable": "No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract."
          }
        },
        {
          "scenarioId": "retry-total-timeout",
          "libraryId": "@resili/fetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "retry-total-timeout",
            "libraryId": "@resili/fetch",
            "configuration": "Not applicable",
            "expected": "No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract.",
            "notApplicable": "No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract."
          }
        },
        {
          "scenarioId": "retry-total-timeout",
          "libraryId": "fetch-resilience",
          "status": "fail",
          "failures": [
            "AssertionError: No dispatch after original deadline: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:33:76\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Cooperative work must stop: expected 1 to be +0 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:34:73\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "retry-total-timeout",
            "libraryId": "fetch-resilience",
            "configuration": "100ms overall deadline; 1 retry; backoff 300ms or 80ms with second attempt hanging",
            "expected": "Exact library timeout error; settle at 100ms; original budget preserved; no dispatch after deadline; cooperative work stops; healthy follow-up",
            "traceFile": "fetch-resilience-retry-total-timeout.json"
          },
          "durationMs": 6.407297999999969,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/fetch-resilience-retry-total-timeout.json"
        },
        {
          "scenarioId": "retry-total-timeout",
          "libraryId": "flowshield",
          "status": "fail",
          "failures": [
            "AssertionError: No dispatch after original deadline: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:33:76\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Cooperative work must stop: expected 1 to be +0 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-total-timeout.test.ts:34:73\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "retry-total-timeout",
            "libraryId": "flowshield",
            "configuration": "100ms overall deadline; 1 retry; backoff 300ms or 80ms with second attempt hanging; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Exact library timeout error; settle at 100ms; original budget preserved; no dispatch after deadline; cooperative work stops; healthy follow-up",
            "traceFile": "flowshield-retry-total-timeout.json"
          },
          "durationMs": 4.057731000000047,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/flowshield-retry-total-timeout.json"
        },
        {
          "scenarioId": "retry-total-timeout",
          "libraryId": "ts-retry-circuit",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "retry-total-timeout",
            "libraryId": "ts-retry-circuit",
            "configuration": "Not applicable",
            "expected": "No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract.",
            "notApplicable": "No overall deadline encompassing retry/backoff is exposed by this fetch API; per-attempt timeout is a different contract."
          }
        }
      ]
    },
    {
      "id": "retry-body-replay",
      "title": "Retry + body replay",
      "description": "Consume POST payload before returning 503, then retry.",
      "cells": [
        {
          "scenarioId": "retry-body-replay",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-body-replay",
            "libraryId": "ffetch",
            "configuration": "Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503",
            "expected": "Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty",
            "traceFile": "ffetch-retry-body-replay.json"
          },
          "durationMs": 38.88008100000002
        },
        {
          "scenarioId": "retry-body-replay",
          "libraryId": "ky",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-body-replay",
            "libraryId": "ky",
            "configuration": "Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503",
            "expected": "Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty",
            "traceFile": "ky-retry-body-replay.json"
          },
          "durationMs": 18.362573999999995
        },
        {
          "scenarioId": "retry-body-replay",
          "libraryId": "fetch-retry",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-body-replay",
            "libraryId": "fetch-retry",
            "configuration": "Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503",
            "expected": "Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty",
            "traceFile": "fetch-retry-retry-body-replay.json"
          },
          "durationMs": 5.922280000000001
        },
        {
          "scenarioId": "retry-body-replay",
          "libraryId": "ofetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-body-replay",
            "libraryId": "ofetch",
            "configuration": "Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503",
            "expected": "Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty",
            "traceFile": "ofetch-retry-body-replay.json"
          },
          "durationMs": 6.6262270000000285
        },
        {
          "scenarioId": "retry-body-replay",
          "libraryId": "wretch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-body-replay",
            "libraryId": "wretch",
            "configuration": "Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget",
            "expected": "Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty",
            "traceFile": "wretch-retry-body-replay.json"
          },
          "durationMs": 6.207403999999997
        },
        {
          "scenarioId": "retry-body-replay",
          "libraryId": "resilient-fetch-client",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-body-replay",
            "libraryId": "resilient-fetch-client",
            "configuration": "Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty",
            "traceFile": "resilient-fetch-client-retry-body-replay.json"
          },
          "durationMs": 42.46900099999999
        },
        {
          "scenarioId": "retry-body-replay",
          "libraryId": "fetch-smartly",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-body-replay",
            "libraryId": "fetch-smartly",
            "configuration": "Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty",
            "traceFile": "fetch-smartly-retry-body-replay.json"
          },
          "durationMs": 8.111407999999983
        },
        {
          "scenarioId": "retry-body-replay",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-body-replay",
            "libraryId": "@resili/fetch",
            "configuration": "Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty",
            "traceFile": "-resili-fetch-retry-body-replay.json"
          },
          "durationMs": 8.878742000000045
        },
        {
          "scenarioId": "retry-body-replay",
          "libraryId": "fetch-resilience",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-body-replay",
            "libraryId": "fetch-resilience",
            "configuration": "Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503",
            "expected": "Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty",
            "traceFile": "fetch-resilience-retry-body-replay.json"
          },
          "durationMs": 3.680897000000016
        },
        {
          "scenarioId": "retry-body-replay",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-body-replay",
            "libraryId": "flowshield",
            "configuration": "Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty",
            "traceFile": "flowshield-retry-body-replay.json"
          },
          "durationMs": 3.614221999999984
        },
        {
          "scenarioId": "retry-body-replay",
          "libraryId": "ts-retry-circuit",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-body-replay",
            "libraryId": "ts-retry-circuit",
            "configuration": "Explicit POST retries; text, Request and one-shot stream bodies; first attempt consumes payload then returns 503; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests",
            "expected": "Replayable payload identical on every attempt; supported Request/stream cloning works; unsupported replay fails explicitly with exact TypeError or documented wrapper; never silently empty",
            "traceFile": "ts-retry-circuit-retry-body-replay.json"
          },
          "durationMs": 4.487174999999979
        }
      ]
    },
    {
      "id": "retry-after-abort",
      "title": "Retry-After + abort",
      "description": "Seconds/date/malformed/large Retry-After values, then cancellation during the advertised wait.",
      "cells": [
        {
          "scenarioId": "retry-after-abort",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-after-abort",
            "libraryId": "ffetch",
            "configuration": "503 (429 for fetch-smartly); 1 retry; Retry-After seconds/date/invalid/large; documented delay caps; abort at 20ms",
            "expected": "Correct header wait or documented cap/fallback; exact caller abort error; prompt settlement; no subsequent dispatch; no leftover transport timers",
            "traceFile": "ffetch-retry-after-abort.json"
          },
          "durationMs": 22.564746999999983
        },
        {
          "scenarioId": "retry-after-abort",
          "libraryId": "ky",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-after-abort",
            "libraryId": "ky",
            "configuration": "503 (429 for fetch-smartly); 1 retry; Retry-After seconds/date/invalid/large; documented delay caps; abort at 20ms",
            "expected": "Correct header wait or documented cap/fallback; exact caller abort error; prompt settlement; no subsequent dispatch; no leftover transport timers",
            "traceFile": "ky-retry-after-abort.json"
          },
          "durationMs": 16.856246999999996
        },
        {
          "scenarioId": "retry-after-abort",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "retry-after-abort",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No Retry-After handling is offered by this package.",
            "notApplicable": "No Retry-After handling is offered by this package."
          }
        },
        {
          "scenarioId": "retry-after-abort",
          "libraryId": "ofetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "retry-after-abort",
            "libraryId": "ofetch",
            "configuration": "Not applicable",
            "expected": "No Retry-After handling is offered by this package.",
            "notApplicable": "No Retry-After handling is offered by this package."
          }
        },
        {
          "scenarioId": "retry-after-abort",
          "libraryId": "wretch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "retry-after-abort",
            "libraryId": "wretch",
            "configuration": "Not applicable",
            "expected": "No Retry-After handling is offered by this package.",
            "notApplicable": "No Retry-After handling is offered by this package."
          }
        },
        {
          "scenarioId": "retry-after-abort",
          "libraryId": "resilient-fetch-client",
          "status": "fail",
          "failures": [
            "AssertionError: Abort must interrupt header-derived wait: 1: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: No dispatch after header-wait cancellation: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:37:87\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Abort must interrupt header-derived wait: Thu, 01 Jan 1970 00:00:01 GMT: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: No dispatch after header-wait cancellation: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:37:87\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Abort must interrupt header-derived wait: bad: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: No dispatch after header-wait cancellation: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:37:87\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Abort must interrupt header-derived wait: 1000: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: No dispatch after header-wait cancellation: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:37:87\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "retry-after-abort",
            "libraryId": "resilient-fetch-client",
            "configuration": "503 (429 for fetch-smartly); 1 retry; Retry-After seconds/date/invalid/large; documented delay caps; abort at 20ms; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "Correct header wait or documented cap/fallback; exact caller abort error; prompt settlement; no subsequent dispatch; no leftover transport timers",
            "traceFile": "resilient-fetch-client-retry-after-abort.json"
          },
          "durationMs": 38.22231999999997,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/resilient-fetch-client-retry-after-abort.json"
        },
        {
          "scenarioId": "retry-after-abort",
          "libraryId": "fetch-smartly",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-after-abort",
            "libraryId": "fetch-smartly",
            "configuration": "503 (429 for fetch-smartly); 1 retry; Retry-After seconds/date/invalid/large; documented delay caps; abort at 20ms; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "Correct header wait or documented cap/fallback; exact caller abort error; prompt settlement; no subsequent dispatch; no leftover transport timers",
            "traceFile": "fetch-smartly-retry-after-abort.json"
          },
          "durationMs": 5.569707999999991
        },
        {
          "scenarioId": "retry-after-abort",
          "libraryId": "@resili/fetch",
          "status": "fail",
          "failures": [
            "AssertionError: Retry-After must control retry timing: 1: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:40:92\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Abort must interrupt header-derived wait: 1: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Retry-After must control retry timing: Thu, 01 Jan 1970 00:00:01 GMT: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:40:92\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Abort must interrupt header-derived wait: Thu, 01 Jan 1970 00:00:01 GMT: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Abort must interrupt header-derived wait: bad: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Retry-After must control retry timing: 1000: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:40:92\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: Abort must interrupt header-derived wait: 1000: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-after-abort.test.ts:30:85\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "retry-after-abort",
            "libraryId": "@resili/fetch",
            "configuration": "503 (429 for fetch-smartly); 1 retry; Retry-After seconds/date/invalid/large; documented delay caps; abort at 20ms; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Correct header wait or documented cap/fallback; exact caller abort error; prompt settlement; no subsequent dispatch; no leftover transport timers",
            "traceFile": "-resili-fetch-retry-after-abort.json"
          },
          "durationMs": 11.300872999999967,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/-resili-fetch-retry-after-abort.json"
        },
        {
          "scenarioId": "retry-after-abort",
          "libraryId": "fetch-resilience",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "retry-after-abort",
            "libraryId": "fetch-resilience",
            "configuration": "Not applicable",
            "expected": "No Retry-After handling is offered by this package.",
            "notApplicable": "No Retry-After handling is offered by this package."
          }
        },
        {
          "scenarioId": "retry-after-abort",
          "libraryId": "flowshield",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "retry-after-abort",
            "libraryId": "flowshield",
            "configuration": "Not applicable",
            "expected": "No Retry-After handling is offered by this package.",
            "notApplicable": "No Retry-After handling is offered by this package."
          }
        },
        {
          "scenarioId": "retry-after-abort",
          "libraryId": "ts-retry-circuit",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "retry-after-abort",
            "libraryId": "ts-retry-circuit",
            "configuration": "Not applicable",
            "expected": "No Retry-After handling is offered by this package.",
            "notApplicable": "No Retry-After handling is offered by this package."
          }
        }
      ]
    },
    {
      "id": "retry-hook-error",
      "title": "Retry + throwing hooks",
      "description": "Retry predicate, delay or callback throws/rejects a unique sentinel.",
      "cells": [
        {
          "scenarioId": "retry-hook-error",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-hook-error",
            "libraryId": "ffetch",
            "configuration": "503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback",
            "expected": "Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up",
            "traceFile": "ffetch-retry-hook-error.json"
          },
          "durationMs": 22.828670000000045
        },
        {
          "scenarioId": "retry-hook-error",
          "libraryId": "ky",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-hook-error",
            "libraryId": "ky",
            "configuration": "503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback",
            "expected": "Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up",
            "traceFile": "ky-retry-hook-error.json"
          },
          "durationMs": 13.657671999999991
        },
        {
          "scenarioId": "retry-hook-error",
          "libraryId": "fetch-retry",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-hook-error",
            "libraryId": "fetch-retry",
            "configuration": "503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback",
            "expected": "Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up",
            "traceFile": "fetch-retry-retry-hook-error.json"
          },
          "durationMs": 2.7595130000000268
        },
        {
          "scenarioId": "retry-hook-error",
          "libraryId": "ofetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-hook-error",
            "libraryId": "ofetch",
            "configuration": "503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback",
            "expected": "Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up",
            "traceFile": "ofetch-retry-hook-error.json"
          },
          "durationMs": 3.219984000000011
        },
        {
          "scenarioId": "retry-hook-error",
          "libraryId": "wretch",
          "status": "fail",
          "failures": [
            "AssertionError: callback: callback rejection must settle the caller: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-hook-error.test.ts:19:92\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: async-callback: callback rejection must settle the caller: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/retry-hook-error.test.ts:19:92\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "retry-hook-error",
            "libraryId": "wretch",
            "configuration": "503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget",
            "expected": "Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up",
            "traceFile": "wretch-retry-hook-error.json"
          },
          "durationMs": 11.359921000000043,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/wretch-retry-hook-error.json"
        },
        {
          "scenarioId": "retry-hook-error",
          "libraryId": "resilient-fetch-client",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "retry-hook-error",
            "libraryId": "resilient-fetch-client",
            "configuration": "Not applicable",
            "expected": "No configurable retry predicate, delay function or retry callback is exposed.",
            "notApplicable": "No configurable retry predicate, delay function or retry callback is exposed."
          }
        },
        {
          "scenarioId": "retry-hook-error",
          "libraryId": "fetch-smartly",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-hook-error",
            "libraryId": "fetch-smartly",
            "configuration": "503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up",
            "traceFile": "fetch-smartly-retry-hook-error.json"
          },
          "durationMs": 2.7375820000000317
        },
        {
          "scenarioId": "retry-hook-error",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-hook-error",
            "libraryId": "@resili/fetch",
            "configuration": "503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up",
            "traceFile": "-resili-fetch-retry-hook-error.json"
          },
          "durationMs": 3.810719000000006
        },
        {
          "scenarioId": "retry-hook-error",
          "libraryId": "fetch-resilience",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "retry-hook-error",
            "libraryId": "fetch-resilience",
            "configuration": "Not applicable",
            "expected": "No configurable retry predicate, delay function or retry callback is exposed.",
            "notApplicable": "No configurable retry predicate, delay function or retry callback is exposed."
          }
        },
        {
          "scenarioId": "retry-hook-error",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-hook-error",
            "libraryId": "flowshield",
            "configuration": "503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up",
            "traceFile": "flowshield-retry-hook-error.json"
          },
          "durationMs": 1.6256510000000048
        },
        {
          "scenarioId": "retry-hook-error",
          "libraryId": "ts-retry-circuit",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "retry-hook-error",
            "libraryId": "ts-retry-circuit",
            "configuration": "503 then healthy response; 2 retries configured; throw/reject from supported predicate/delay/retry callback; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests",
            "expected": "Sentinel error preserved by identity; one transport attempt; no late retry; same client accepts healthy follow-up",
            "traceFile": "ts-retry-circuit-retry-hook-error.json"
          },
          "durationMs": 2.39734500000003
        }
      ]
    },
    {
      "id": "hedge-all-fail",
      "title": "Hedge + all branches fail",
      "description": "Distinct primary/hedge errors finish in both possible orders.",
      "cells": [
        {
          "scenarioId": "hedge-all-fail",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-all-fail",
            "libraryId": "ffetch",
            "configuration": "Primary and one hedge after 10ms; distinct TypeErrors; completion at 20/60ms or 30/50ms; no retries",
            "expected": "Two attempts; exact terminal error/cause: ffetch last RetryLimitError -> original TypeError, Resili last original error, flowshield primary original error; no leaked work",
            "traceFile": "ffetch-hedge-all-fail.json"
          },
          "durationMs": 17.039799999999957
        },
        {
          "scenarioId": "hedge-all-fail",
          "libraryId": "ky",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-all-fail",
            "libraryId": "ky",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-all-fail",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-all-fail",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-all-fail",
          "libraryId": "ofetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-all-fail",
            "libraryId": "ofetch",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-all-fail",
          "libraryId": "wretch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-all-fail",
            "libraryId": "wretch",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-all-fail",
          "libraryId": "resilient-fetch-client",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-all-fail",
            "libraryId": "resilient-fetch-client",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-all-fail",
          "libraryId": "fetch-smartly",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-all-fail",
            "libraryId": "fetch-smartly",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-all-fail",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-all-fail",
            "libraryId": "@resili/fetch",
            "configuration": "Primary and one hedge after 10ms; distinct TypeErrors; completion at 20/60ms or 30/50ms; no retries; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Two attempts; exact terminal error/cause: ffetch last RetryLimitError -> original TypeError, Resili last original error, flowshield primary original error; no leaked work",
            "traceFile": "-resili-fetch-hedge-all-fail.json"
          },
          "durationMs": 7.090915999999993
        },
        {
          "scenarioId": "hedge-all-fail",
          "libraryId": "fetch-resilience",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-all-fail",
            "libraryId": "fetch-resilience",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-all-fail",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-all-fail",
            "libraryId": "flowshield",
            "configuration": "Primary and one hedge after 10ms; distinct TypeErrors; completion at 20/60ms or 30/50ms; no retries; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Two attempts; exact terminal error/cause: ffetch last RetryLimitError -> original TypeError, Resili last original error, flowshield primary original error; no leaked work",
            "traceFile": "flowshield-hedge-all-fail.json"
          },
          "durationMs": 2.0770860000000084
        },
        {
          "scenarioId": "hedge-all-fail",
          "libraryId": "ts-retry-circuit",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-all-fail",
            "libraryId": "ts-retry-circuit",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        }
      ]
    },
    {
      "id": "hedge-timeout",
      "title": "Hedge + timeout",
      "description": "Both branches hang; timeout before, at or after hedge launch.",
      "cells": [
        {
          "scenarioId": "hedge-timeout",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-timeout",
            "libraryId": "ffetch",
            "configuration": "Hedge delay 10ms; timeout 5/10/11/100ms; primary/hedge hang; no retries; healthy follow-up",
            "expected": "Exact timeout error/wrapper; deadline settlement; no dispatch at/after deadline; cooperative branches stop; no late hedge; same client recovers",
            "traceFile": "ffetch-hedge-timeout.json"
          },
          "durationMs": 23.760032999999993
        },
        {
          "scenarioId": "hedge-timeout",
          "libraryId": "ky",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-timeout",
            "libraryId": "ky",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-timeout",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-timeout",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-timeout",
          "libraryId": "ofetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-timeout",
            "libraryId": "ofetch",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-timeout",
          "libraryId": "wretch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-timeout",
            "libraryId": "wretch",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-timeout",
          "libraryId": "resilient-fetch-client",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-timeout",
            "libraryId": "resilient-fetch-client",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-timeout",
          "libraryId": "fetch-smartly",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-timeout",
            "libraryId": "fetch-smartly",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-timeout",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-timeout",
            "libraryId": "@resili/fetch",
            "configuration": "Hedge delay 10ms; timeout 5/10/11/100ms; primary/hedge hang; no retries; healthy follow-up; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Exact timeout error/wrapper; deadline settlement; no dispatch at/after deadline; cooperative branches stop; no late hedge; same client recovers",
            "traceFile": "-resili-fetch-hedge-timeout.json"
          },
          "durationMs": 19.831461999999988
        },
        {
          "scenarioId": "hedge-timeout",
          "libraryId": "fetch-resilience",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-timeout",
            "libraryId": "fetch-resilience",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        },
        {
          "scenarioId": "hedge-timeout",
          "libraryId": "flowshield",
          "status": "fail",
          "failures": [
            "AssertionError: No late hedge at deadline 5: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:32:79\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: expected false to be true // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:35:82\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: All cooperative branches must stop: expected 1 to be +0 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:36:81\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: No late hedge at deadline 10: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:32:79\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: expected false to be true // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:35:82\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: All cooperative branches must stop: expected 1 to be +0 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:36:81\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: All cooperative branches must stop: expected 2 to be +0 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:36:81\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: All cooperative branches must stop: expected 2 to be +0 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/hedge-timeout.test.ts:36:81\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "hedge-timeout",
            "libraryId": "flowshield",
            "configuration": "Hedge delay 10ms; timeout 5/10/11/100ms; primary/hedge hang; no retries; healthy follow-up; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Exact timeout error/wrapper; deadline settlement; no dispatch at/after deadline; cooperative branches stop; no late hedge; same client recovers",
            "traceFile": "flowshield-hedge-timeout.json"
          },
          "durationMs": 22.057139000000006,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/flowshield-hedge-timeout.json"
        },
        {
          "scenarioId": "hedge-timeout",
          "libraryId": "ts-retry-circuit",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "hedge-timeout",
            "libraryId": "ts-retry-circuit",
            "configuration": "Not applicable",
            "expected": "No hedging policy is offered.",
            "notApplicable": "No hedging policy is offered."
          }
        }
      ]
    },
    {
      "id": "dedupe-retry",
      "title": "Dedupe + retry",
      "description": "Four callers share two failures and a streamed success.",
      "cells": [
        {
          "scenarioId": "dedupe-retry",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-retry",
            "libraryId": "ffetch",
            "configuration": "4 same-key GET callers; dedupe outside retry (Resili public policy order 150); two delayed 503s then streamed ready; 2 retries; delay 20ms; fresh same-key follow-up",
            "expected": "Exactly 3 shared transport attempts; every caller settles with 200 and independently usable body; registry cleans up and follow-up dispatches once",
            "traceFile": "ffetch-dedupe-retry.json"
          },
          "durationMs": 58.41415699999999
        },
        {
          "scenarioId": "dedupe-retry",
          "libraryId": "ky",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-retry",
            "libraryId": "ky",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        },
        {
          "scenarioId": "dedupe-retry",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-retry",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        },
        {
          "scenarioId": "dedupe-retry",
          "libraryId": "ofetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-retry",
            "libraryId": "ofetch",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        },
        {
          "scenarioId": "dedupe-retry",
          "libraryId": "wretch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-retry",
            "libraryId": "wretch",
            "configuration": "4 same-key GET callers; dedupe outside retry (Resili public policy order 150); two delayed 503s then streamed ready; 2 retries; delay 20ms; fresh same-key follow-up; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget",
            "expected": "Exactly 3 shared transport attempts; every caller settles with 200 and independently usable body; registry cleans up and follow-up dispatches once",
            "traceFile": "wretch-dedupe-retry.json"
          },
          "durationMs": 8.040864
        },
        {
          "scenarioId": "dedupe-retry",
          "libraryId": "resilient-fetch-client",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-retry",
            "libraryId": "resilient-fetch-client",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        },
        {
          "scenarioId": "dedupe-retry",
          "libraryId": "fetch-smartly",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-retry",
            "libraryId": "fetch-smartly",
            "configuration": "4 same-key GET callers; dedupe outside retry (Resili public policy order 150); two delayed 503s then streamed ready; 2 retries; delay 20ms; fresh same-key follow-up; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "Exactly 3 shared transport attempts; every caller settles with 200 and independently usable body; registry cleans up and follow-up dispatches once",
            "traceFile": "fetch-smartly-dedupe-retry.json"
          },
          "durationMs": 3.9288099999999986
        },
        {
          "scenarioId": "dedupe-retry",
          "libraryId": "@resili/fetch",
          "status": "fail",
          "failures": [
            "AssertionError: expected { ok: false, …(1) } to deeply equal { ok: true, value: 'ready' }\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/dedupe-retry.test.ts:25:69\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: expected { ok: false, …(1) } to deeply equal { ok: true, value: 'ready' }\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/dedupe-retry.test.ts:25:69\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: expected { ok: false, …(1) } to deeply equal { ok: true, value: 'ready' }\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/dedupe-retry.test.ts:25:69\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "dedupe-retry",
            "libraryId": "@resili/fetch",
            "configuration": "4 same-key GET callers; dedupe outside retry (Resili public policy order 150); two delayed 503s then streamed ready; 2 retries; delay 20ms; fresh same-key follow-up; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Exactly 3 shared transport attempts; every caller settles with 200 and independently usable body; registry cleans up and follow-up dispatches once",
            "traceFile": "-resili-fetch-dedupe-retry.json"
          },
          "durationMs": 16.897714000000008,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/-resili-fetch-dedupe-retry.json"
        },
        {
          "scenarioId": "dedupe-retry",
          "libraryId": "fetch-resilience",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-retry",
            "libraryId": "fetch-resilience",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        },
        {
          "scenarioId": "dedupe-retry",
          "libraryId": "flowshield",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-retry",
            "libraryId": "flowshield",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        },
        {
          "scenarioId": "dedupe-retry",
          "libraryId": "ts-retry-circuit",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-retry",
            "libraryId": "ts-retry-circuit",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        }
      ]
    },
    {
      "id": "dedupe-caller-abort",
      "title": "Dedupe + caller cancellation",
      "description": "Cancel follower, owner or every subscriber.",
      "cells": [
        {
          "scenarioId": "dedupe-caller-abort",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-caller-abort",
            "libraryId": "ffetch",
            "configuration": "Two same-key callers with distinct controllers; cancel follower/owner/all at 20ms; response at 100ms; fresh same-key follow-up",
            "expected": "Exact ownership: ffetch follower detaches but owner abort cancels shared work; Resili subscribers detach independently, preserve the caller DOMException reason, and final detach aborts shared work; wretch/Smart DedupManager share owner's promise and ignore follower signal; no stranded caller; fresh call works",
            "traceFile": "ffetch-dedupe-caller-abort.json"
          },
          "durationMs": 29.973536999999965
        },
        {
          "scenarioId": "dedupe-caller-abort",
          "libraryId": "ky",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-caller-abort",
            "libraryId": "ky",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        },
        {
          "scenarioId": "dedupe-caller-abort",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-caller-abort",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        },
        {
          "scenarioId": "dedupe-caller-abort",
          "libraryId": "ofetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-caller-abort",
            "libraryId": "ofetch",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        },
        {
          "scenarioId": "dedupe-caller-abort",
          "libraryId": "wretch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-caller-abort",
            "libraryId": "wretch",
            "configuration": "Two same-key callers with distinct controllers; cancel follower/owner/all at 20ms; response at 100ms; fresh same-key follow-up; retry middleware resolves final response to Wretch HTTP handling; omit retry middleware for zero budget",
            "expected": "Exact ownership: ffetch follower detaches but owner abort cancels shared work; Resili subscribers detach independently, preserve the caller DOMException reason, and final detach aborts shared work; wretch/Smart DedupManager share owner's promise and ignore follower signal; no stranded caller; fresh call works",
            "traceFile": "wretch-dedupe-caller-abort.json"
          },
          "durationMs": 6.107195999999988
        },
        {
          "scenarioId": "dedupe-caller-abort",
          "libraryId": "resilient-fetch-client",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-caller-abort",
            "libraryId": "resilient-fetch-client",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        },
        {
          "scenarioId": "dedupe-caller-abort",
          "libraryId": "fetch-smartly",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-caller-abort",
            "libraryId": "fetch-smartly",
            "configuration": "Two same-key callers with distinct controllers; cancel follower/owner/all at 20ms; response at 100ms; fresh same-key follow-up; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "Exact ownership: ffetch follower detaches but owner abort cancels shared work; Resili subscribers detach independently, preserve the caller DOMException reason, and final detach aborts shared work; wretch/Smart DedupManager share owner's promise and ignore follower signal; no stranded caller; fresh call works",
            "traceFile": "fetch-smartly-dedupe-caller-abort.json"
          },
          "durationMs": 5.219177000000002
        },
        {
          "scenarioId": "dedupe-caller-abort",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-caller-abort",
            "libraryId": "@resili/fetch",
            "configuration": "Two same-key callers with distinct controllers; cancel follower/owner/all at 20ms; response at 100ms; fresh same-key follow-up; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Exact ownership: ffetch follower detaches but owner abort cancels shared work; Resili subscribers detach independently, preserve the caller DOMException reason, and final detach aborts shared work; wretch/Smart DedupManager share owner's promise and ignore follower signal; no stranded caller; fresh call works",
            "traceFile": "-resili-fetch-dedupe-caller-abort.json"
          },
          "durationMs": 9.62913500000002
        },
        {
          "scenarioId": "dedupe-caller-abort",
          "libraryId": "fetch-resilience",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-caller-abort",
            "libraryId": "fetch-resilience",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        },
        {
          "scenarioId": "dedupe-caller-abort",
          "libraryId": "flowshield",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-caller-abort",
            "libraryId": "flowshield",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        },
        {
          "scenarioId": "dedupe-caller-abort",
          "libraryId": "ts-retry-circuit",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "dedupe-caller-abort",
            "libraryId": "ts-retry-circuit",
            "configuration": "Not applicable",
            "expected": "No request deduplication policy/helper is offered.",
            "notApplicable": "No request deduplication policy/helper is offered."
          }
        }
      ]
    },
    {
      "id": "bulkhead-retry",
      "title": "Bulkhead + retry",
      "description": "A failed request backs off while another caller waits; repeat through exhaustion.",
      "cells": [
        {
          "scenarioId": "bulkhead-retry",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-retry",
            "libraryId": "ffetch",
            "configuration": "Capacity 1; queue 1; one retry; 100ms backoff; concurrent A/B; success and exhaustion; fresh C",
            "expected": "Never exceed one transport attempt at once; ffetch holds the logical-request slot (A,A,B), others release during backoff (A,B,A); exact exhaustion outcome; no deadlock/leaked capacity",
            "traceFile": "ffetch-bulkhead-retry.json"
          },
          "durationMs": 23.531065000000012
        },
        {
          "scenarioId": "bulkhead-retry",
          "libraryId": "ky",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-retry",
            "libraryId": "ky",
            "configuration": "Not applicable",
            "expected": "No queued bulkhead is exposed; immediate capacity rejection is a different contract.",
            "notApplicable": "No queued bulkhead is exposed; immediate capacity rejection is a different contract."
          }
        },
        {
          "scenarioId": "bulkhead-retry",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-retry",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No queued bulkhead is exposed; immediate capacity rejection is a different contract.",
            "notApplicable": "No queued bulkhead is exposed; immediate capacity rejection is a different contract."
          }
        },
        {
          "scenarioId": "bulkhead-retry",
          "libraryId": "ofetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-retry",
            "libraryId": "ofetch",
            "configuration": "Not applicable",
            "expected": "No queued bulkhead is exposed; immediate capacity rejection is a different contract.",
            "notApplicable": "No queued bulkhead is exposed; immediate capacity rejection is a different contract."
          }
        },
        {
          "scenarioId": "bulkhead-retry",
          "libraryId": "wretch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-retry",
            "libraryId": "wretch",
            "configuration": "Not applicable",
            "expected": "No queued bulkhead is exposed; immediate capacity rejection is a different contract.",
            "notApplicable": "No queued bulkhead is exposed; immediate capacity rejection is a different contract."
          }
        },
        {
          "scenarioId": "bulkhead-retry",
          "libraryId": "resilient-fetch-client",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-retry",
            "libraryId": "resilient-fetch-client",
            "configuration": "Capacity 1; queue 1; one retry; 100ms backoff; concurrent A/B; success and exhaustion; fresh C; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "Never exceed one transport attempt at once; ffetch holds the logical-request slot (A,A,B), others release during backoff (A,B,A); exact exhaustion outcome; no deadlock/leaked capacity",
            "traceFile": "resilient-fetch-client-bulkhead-retry.json"
          },
          "durationMs": 13.26636000000002
        },
        {
          "scenarioId": "bulkhead-retry",
          "libraryId": "fetch-smartly",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-retry",
            "libraryId": "fetch-smartly",
            "configuration": "Not applicable",
            "expected": "No queued bulkhead is exposed; immediate capacity rejection is a different contract.",
            "notApplicable": "No queued bulkhead is exposed; immediate capacity rejection is a different contract."
          }
        },
        {
          "scenarioId": "bulkhead-retry",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-retry",
            "libraryId": "@resili/fetch",
            "configuration": "Capacity 1; queue 1; one retry; 100ms backoff; concurrent A/B; success and exhaustion; fresh C; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Never exceed one transport attempt at once; ffetch holds the logical-request slot (A,A,B), others release during backoff (A,B,A); exact exhaustion outcome; no deadlock/leaked capacity",
            "traceFile": "-resili-fetch-bulkhead-retry.json"
          },
          "durationMs": 10.726576000000023
        },
        {
          "scenarioId": "bulkhead-retry",
          "libraryId": "fetch-resilience",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-retry",
            "libraryId": "fetch-resilience",
            "configuration": "Capacity 1; queue 1; one retry; 100ms backoff; concurrent A/B; success and exhaustion; fresh C",
            "expected": "Never exceed one transport attempt at once; ffetch holds the logical-request slot (A,A,B), others release during backoff (A,B,A); exact exhaustion outcome; no deadlock/leaked capacity",
            "traceFile": "fetch-resilience-bulkhead-retry.json"
          },
          "durationMs": 4.037213000000008
        },
        {
          "scenarioId": "bulkhead-retry",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-retry",
            "libraryId": "flowshield",
            "configuration": "Capacity 1; queue 1; one retry; 100ms backoff; concurrent A/B; success and exhaustion; fresh C; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Never exceed one transport attempt at once; ffetch holds the logical-request slot (A,A,B), others release during backoff (A,B,A); exact exhaustion outcome; no deadlock/leaked capacity",
            "traceFile": "flowshield-bulkhead-retry.json"
          },
          "durationMs": 5.351602000000014
        },
        {
          "scenarioId": "bulkhead-retry",
          "libraryId": "ts-retry-circuit",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "bulkhead-retry",
            "libraryId": "ts-retry-circuit",
            "configuration": "Not applicable",
            "expected": "No queued bulkhead is exposed; immediate capacity rejection is a different contract.",
            "notApplicable": "No queued bulkhead is exposed; immediate capacity rejection is a different contract."
          }
        }
      ]
    },
    {
      "id": "circuit-retry-accounting",
      "title": "Circuit + retry accounting",
      "description": "Trip a threshold-two circuit using exhausted retry sequences.",
      "cells": [
        {
          "scenarioId": "circuit-retry-accounting",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-retry-accounting",
            "libraryId": "ffetch",
            "configuration": "Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting",
            "expected": "Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors",
            "traceFile": "ffetch-circuit-retry-accounting.json"
          },
          "durationMs": 19.952331000000015
        },
        {
          "scenarioId": "circuit-retry-accounting",
          "libraryId": "ky",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-retry-accounting",
            "libraryId": "ky",
            "configuration": "Not applicable",
            "expected": "No circuit breaker policy/helper is offered.",
            "notApplicable": "No circuit breaker policy/helper is offered."
          }
        },
        {
          "scenarioId": "circuit-retry-accounting",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-retry-accounting",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No circuit breaker policy/helper is offered.",
            "notApplicable": "No circuit breaker policy/helper is offered."
          }
        },
        {
          "scenarioId": "circuit-retry-accounting",
          "libraryId": "ofetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-retry-accounting",
            "libraryId": "ofetch",
            "configuration": "Not applicable",
            "expected": "No circuit breaker policy/helper is offered.",
            "notApplicable": "No circuit breaker policy/helper is offered."
          }
        },
        {
          "scenarioId": "circuit-retry-accounting",
          "libraryId": "wretch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-retry-accounting",
            "libraryId": "wretch",
            "configuration": "Not applicable",
            "expected": "No circuit breaker policy/helper is offered.",
            "notApplicable": "No circuit breaker policy/helper is offered."
          }
        },
        {
          "scenarioId": "circuit-retry-accounting",
          "libraryId": "resilient-fetch-client",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-retry-accounting",
            "libraryId": "resilient-fetch-client",
            "configuration": "Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors",
            "traceFile": "resilient-fetch-client-circuit-retry-accounting.json"
          },
          "durationMs": 7.247939999999971
        },
        {
          "scenarioId": "circuit-retry-accounting",
          "libraryId": "fetch-smartly",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-retry-accounting",
            "libraryId": "fetch-smartly",
            "configuration": "Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors",
            "traceFile": "fetch-smartly-circuit-retry-accounting.json"
          },
          "durationMs": 4.787747000000024
        },
        {
          "scenarioId": "circuit-retry-accounting",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-retry-accounting",
            "libraryId": "@resili/fetch",
            "configuration": "Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors",
            "traceFile": "-resili-fetch-circuit-retry-accounting.json"
          },
          "durationMs": 7.033969999999954
        },
        {
          "scenarioId": "circuit-retry-accounting",
          "libraryId": "fetch-resilience",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-retry-accounting",
            "libraryId": "fetch-resilience",
            "configuration": "Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting",
            "expected": "Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors",
            "traceFile": "fetch-resilience-circuit-retry-accounting.json"
          },
          "durationMs": 2.8576969999999733
        },
        {
          "scenarioId": "circuit-retry-accounting",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-retry-accounting",
            "libraryId": "flowshield",
            "configuration": "Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors",
            "traceFile": "flowshield-circuit-retry-accounting.json"
          },
          "durationMs": 3.2415849999999864
        },
        {
          "scenarioId": "circuit-retry-accounting",
          "libraryId": "ts-retry-circuit",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-retry-accounting",
            "libraryId": "ts-retry-circuit",
            "configuration": "Circuit threshold 2; 2 retries; repeated 503; explicit circuit outside retry except resilient-fetch-client/Resili native attempt accounting; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests",
            "expected": "Attempt-counting circuits dispatch twice then refuse; logical-counting circuits permit 3 attempts per request and trip after 2 requests; exact trip-point and subsequent refusal errors",
            "traceFile": "ts-retry-circuit-circuit-retry-accounting.json"
          },
          "durationMs": 4.479469999999992
        }
      ]
    },
    {
      "id": "circuit-half-open-concurrency",
      "title": "Circuit + half-open concurrency",
      "description": "Concurrent probes at reset, failed-probe recovery and stale success after reopening.",
      "cells": [
        {
          "scenarioId": "circuit-half-open-concurrency",
          "libraryId": "ffetch",
          "status": "fail",
          "failures": [
            "AssertionError: late success must not close the newer open state: expected false to be true // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:129:59\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "circuit-half-open-concurrency",
            "libraryId": "ffetch",
            "configuration": "Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.",
            "expected": "No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.",
            "traceFile": "ffetch-circuit-half-open-concurrency.json"
          },
          "durationMs": 45.90788900000001,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/ffetch-circuit-half-open-concurrency.json"
        },
        {
          "scenarioId": "circuit-half-open-concurrency",
          "libraryId": "ky",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-half-open-concurrency",
            "libraryId": "ky",
            "configuration": "Not applicable",
            "expected": "No circuit breaker policy/helper is offered.",
            "notApplicable": "No circuit breaker policy/helper is offered."
          }
        },
        {
          "scenarioId": "circuit-half-open-concurrency",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-half-open-concurrency",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No circuit breaker policy/helper is offered.",
            "notApplicable": "No circuit breaker policy/helper is offered."
          }
        },
        {
          "scenarioId": "circuit-half-open-concurrency",
          "libraryId": "ofetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-half-open-concurrency",
            "libraryId": "ofetch",
            "configuration": "Not applicable",
            "expected": "No circuit breaker policy/helper is offered.",
            "notApplicable": "No circuit breaker policy/helper is offered."
          }
        },
        {
          "scenarioId": "circuit-half-open-concurrency",
          "libraryId": "wretch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-half-open-concurrency",
            "libraryId": "wretch",
            "configuration": "Not applicable",
            "expected": "No circuit breaker policy/helper is offered.",
            "notApplicable": "No circuit breaker policy/helper is offered."
          }
        },
        {
          "scenarioId": "circuit-half-open-concurrency",
          "libraryId": "resilient-fetch-client",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-half-open-concurrency",
            "libraryId": "resilient-fetch-client",
            "configuration": "Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.",
            "traceFile": "resilient-fetch-client-circuit-half-open-concurrency.json"
          },
          "durationMs": 13.006553999999994
        },
        {
          "scenarioId": "circuit-half-open-concurrency",
          "libraryId": "fetch-smartly",
          "status": "fail",
          "failures": [
            "AssertionError: late success must not admit during the new cooldown: expected true to be false // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:132:93\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: late success must not consume the recovery response: expected 4 to be 3 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:134:88\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "circuit-half-open-concurrency",
            "libraryId": "fetch-smartly",
            "configuration": "Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.",
            "traceFile": "fetch-smartly-circuit-half-open-concurrency.json"
          },
          "durationMs": 7.252529000000038,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/fetch-smartly-circuit-half-open-concurrency.json"
        },
        {
          "scenarioId": "circuit-half-open-concurrency",
          "libraryId": "@resili/fetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-half-open-concurrency",
            "libraryId": "@resili/fetch",
            "configuration": "Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.; maxAttempts=retries+1; circuit outside hedge",
            "expected": "No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.",
            "traceFile": "-resili-fetch-circuit-half-open-concurrency.json"
          },
          "durationMs": 9.301412000000028
        },
        {
          "scenarioId": "circuit-half-open-concurrency",
          "libraryId": "fetch-resilience",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-half-open-concurrency",
            "libraryId": "fetch-resilience",
            "configuration": "Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.",
            "expected": "No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.",
            "traceFile": "fetch-resilience-circuit-half-open-concurrency.json"
          },
          "durationMs": 4.438234000000023
        },
        {
          "scenarioId": "circuit-half-open-concurrency",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-half-open-concurrency",
            "libraryId": "flowshield",
            "configuration": "Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.",
            "traceFile": "flowshield-circuit-half-open-concurrency.json"
          },
          "durationMs": 13.457116999999982
        },
        {
          "scenarioId": "circuit-half-open-concurrency",
          "libraryId": "ts-retry-circuit",
          "status": "fail",
          "failures": [
            "AssertionError: admit at the exact reset deadline: expected 1 to be 2 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:56:72\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: new cooldown expires at its deadline: expected 2 to be 3 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:87:75\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: stale variant reset boundary: expected 2 to be 3 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:117:65\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: late success must not admit during the new cooldown: expected true to be false // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:132:93\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: late success must not consume the recovery response: expected 4 to be 3 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-half-open-concurrency.test.ts:134:88\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "circuit-half-open-concurrency",
            "libraryId": "ts-retry-circuit",
            "configuration": "Threshold 1; reset 100 ms; zero retries. Single probe, queued followers (Cockatiel), or unrestricted probes per contract. fetch-smartly public circuit helper wraps fetchWithRetry.; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests",
            "expected": "No dispatch before reset; admit at deadline; exact refusal errors; failed probes restart cooldown; late success cannot close a reopened circuit; healthy recovery.",
            "traceFile": "ts-retry-circuit-circuit-half-open-concurrency.json"
          },
          "durationMs": 32.65690699999999,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/ts-retry-circuit-circuit-half-open-concurrency.json"
        }
      ]
    },
    {
      "id": "circuit-local-cancellation",
      "title": "Circuit + local cancellation",
      "description": "Caller aborts during fetch and retry backoff; verify health accounting and recovery.",
      "cells": [
        {
          "scenarioId": "circuit-local-cancellation",
          "libraryId": "ffetch",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-local-cancellation",
            "libraryId": "ffetch",
            "configuration": "Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.",
            "expected": "Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.",
            "traceFile": "ffetch-circuit-local-cancellation.json"
          },
          "durationMs": 30.33679699999999
        },
        {
          "scenarioId": "circuit-local-cancellation",
          "libraryId": "ky",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-local-cancellation",
            "libraryId": "ky",
            "configuration": "Not applicable",
            "expected": "No circuit breaker policy/helper is offered.",
            "notApplicable": "No circuit breaker policy/helper is offered."
          }
        },
        {
          "scenarioId": "circuit-local-cancellation",
          "libraryId": "fetch-retry",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-local-cancellation",
            "libraryId": "fetch-retry",
            "configuration": "Not applicable",
            "expected": "No circuit breaker policy/helper is offered.",
            "notApplicable": "No circuit breaker policy/helper is offered."
          }
        },
        {
          "scenarioId": "circuit-local-cancellation",
          "libraryId": "ofetch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-local-cancellation",
            "libraryId": "ofetch",
            "configuration": "Not applicable",
            "expected": "No circuit breaker policy/helper is offered.",
            "notApplicable": "No circuit breaker policy/helper is offered."
          }
        },
        {
          "scenarioId": "circuit-local-cancellation",
          "libraryId": "wretch",
          "status": "not-applicable",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-local-cancellation",
            "libraryId": "wretch",
            "configuration": "Not applicable",
            "expected": "No circuit breaker policy/helper is offered.",
            "notApplicable": "No circuit breaker policy/helper is offered."
          }
        },
        {
          "scenarioId": "circuit-local-cancellation",
          "libraryId": "resilient-fetch-client",
          "status": "fail",
          "failures": [
            "AssertionError: backoff cancellation must settle promptly: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-local-cancellation.test.ts:67:79\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: no dispatch after backoff cancellation: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-local-cancellation.test.ts:71:84\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "circuit-local-cancellation",
            "libraryId": "resilient-fetch-client",
            "configuration": "Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.; published backoff with initial/max delay configured; deterministic Math.random=0.5",
            "expected": "Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.",
            "traceFile": "resilient-fetch-client-circuit-local-cancellation.json"
          },
          "durationMs": 24.183674999999994,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/resilient-fetch-client-circuit-local-cancellation.json"
        },
        {
          "scenarioId": "circuit-local-cancellation",
          "libraryId": "fetch-smartly",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-local-cancellation",
            "libraryId": "fetch-smartly",
            "configuration": "Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.; original parsed SmartFetchResponse result; normal timeout 60000ms",
            "expected": "Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.",
            "traceFile": "fetch-smartly-circuit-local-cancellation.json"
          },
          "durationMs": 22.741288999999995
        },
        {
          "scenarioId": "circuit-local-cancellation",
          "libraryId": "@resili/fetch",
          "status": "fail",
          "failures": [
            "AssertionError: backoff cancellation must settle promptly: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-local-cancellation.test.ts:67:79\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "circuit-local-cancellation",
            "libraryId": "@resili/fetch",
            "configuration": "Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.; maxAttempts=retries+1; circuit outside hedge",
            "expected": "Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.",
            "traceFile": "-resili-fetch-circuit-local-cancellation.json"
          },
          "durationMs": 13.141497000000015,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/-resili-fetch-circuit-local-cancellation.json"
        },
        {
          "scenarioId": "circuit-local-cancellation",
          "libraryId": "fetch-resilience",
          "status": "fail",
          "failures": [
            "AssertionError: backoff cancellation must settle promptly: expected undefined to be defined\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-local-cancellation.test.ts:67:79\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20",
            "AssertionError: no dispatch after backoff cancellation: expected 2 to be 1 // Object.is equality\n    at /home/runner/work/http-resilience/http-resilience/test/conformance/circuit-local-cancellation.test.ts:71:84\n    at file:///home/runner/work/http-resilience/http-resilience/node_modules/vitest/dist/chunks/run.BTlFXlnv.js:2783:20"
          ],
          "definition": {
            "scenarioId": "circuit-local-cancellation",
            "libraryId": "fetch-resilience",
            "configuration": "Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.",
            "expected": "Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.",
            "traceFile": "fetch-resilience-circuit-local-cancellation.json"
          },
          "durationMs": 7.32808,
          "trace": "runs/e1849603-37b1-43a8-aae7-ad71aca6aeec/traces/fetch-resilience-circuit-local-cancellation.json"
        },
        {
          "scenarioId": "circuit-local-cancellation",
          "libraryId": "flowshield",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-local-cancellation",
            "libraryId": "flowshield",
            "configuration": "Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.; HTTP operation throws HttpStatusError; circuit outside hedge; retry omitted for zero budget",
            "expected": "Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.",
            "traceFile": "flowshield-circuit-local-cancellation.json"
          },
          "durationMs": 7.381015999999988
        },
        {
          "scenarioId": "circuit-local-cancellation",
          "libraryId": "ts-retry-circuit",
          "status": "pass",
          "failures": [],
          "definition": {
            "scenarioId": "circuit-local-cancellation",
            "libraryId": "ts-retry-circuit",
            "configuration": "Reset 10000 ms. Active-fetch variant: threshold 1, no retries. Backoff variant: threshold 2, one retry, delay 100 ms; count preceding 503 at declared attempt/logical boundary.; public createCircuitFetch; full-jitter exponential backoff; deterministic Math.random=0.5 in scripted tests",
            "expected": "Exact abort error/reason; prompt settlement and no late dispatch. Abort excluded as failure by classified circuits (Resili still records a nonfailure sample in its rate window); generic all-error policies and fetch-smartly public helper count it. Trip at the exact remaining real-failure budget; exact refusal; healthy recovery.",
            "traceFile": "ts-retry-circuit-circuit-local-cancellation.json"
          },
          "durationMs": 6.23965400000003
        }
      ]
    }
  ]
}
