{
  "benchmark": "native_h3_vs_rust_clients",
  "benchmark_version": "matrix-1",
  "audited_at": "2026-05-25",
  "competitors": [
    {
      "id": "specter_native",
      "crate_name": "specters",
      "version": "4.0.1",
      "role": "candidate",
      "required_for_superiority": true,
      "invocation_notes": "Specter native H3 backend; no quiche in the package graph."
    },
    {
      "id": "specter_native_rfc9220_tunnel",
      "crate_name": "specters",
      "version": "4.0.1",
      "role": "h3_tunnel_workload",
      "required_for_superiority": false,
      "invocation_notes": "Specter native RFC 9220 WebSocket-over-H3 tunnel echo workload."
    },
    {
      "id": "specter_native_rfc9220_tunnel_close",
      "crate_name": "specters",
      "version": "4.0.1",
      "role": "h3_tunnel_workload",
      "required_for_superiority": false,
      "invocation_notes": "Specter native RFC 9220 tunnel echo with client FIN and server FIN timing."
    },
    {
      "id": "specter_native_rfc9220_tunnel_mixed",
      "crate_name": "specters",
      "version": "4.0.1",
      "role": "h3_tunnel_workload",
      "required_for_superiority": false,
      "invocation_notes": "Specter native RFC 9220 slow-consumer tunnel plus concurrent H3 streaming workload."
    },
    {
      "id": "quiche_direct_rfc9220_tunnel",
      "crate_name": "quiche",
      "version": "0.29.0",
      "role": "h3_tunnel_comparator",
      "required_for_superiority": false,
      "invocation_notes": "Low-level quiche Extended CONNECT/WebSocket-over-H3 tunnel comparator adapter."
    },
    {
      "id": "tokio_quiche_rfc9220_tunnel",
      "crate_name": "tokio-quiche",
      "version": "0.19.0",
      "role": "h3_tunnel_comparator",
      "required_for_superiority": false,
      "invocation_notes": "tokio-quiche Extended CONNECT/WebSocket-over-H3 tunnel comparator adapter."
    },
    {
      "id": "quiche_direct_rfc9220_tunnel_close",
      "crate_name": "quiche",
      "version": "0.29.0",
      "role": "h3_tunnel_comparator",
      "required_for_superiority": false,
      "invocation_notes": "Low-level quiche RFC 9220 tunnel comparator for client DATA+FIN and server FIN timing."
    },
    {
      "id": "tokio_quiche_rfc9220_tunnel_close",
      "crate_name": "tokio-quiche",
      "version": "0.19.0",
      "role": "h3_tunnel_comparator",
      "required_for_superiority": false,
      "invocation_notes": "tokio-quiche RFC 9220 tunnel comparator for client DATA+FIN and server FIN timing."
    },
    {
      "id": "quiche_direct_rfc9220_tunnel_mixed",
      "crate_name": "quiche",
      "version": "0.29.0",
      "role": "h3_tunnel_comparator",
      "required_for_superiority": false,
      "invocation_notes": "Low-level quiche RFC 9220 slow-consumer tunnel plus concurrent H3 streaming comparator."
    },
    {
      "id": "tokio_quiche_rfc9220_tunnel_mixed",
      "crate_name": "tokio-quiche",
      "version": "0.19.0",
      "role": "h3_tunnel_comparator",
      "required_for_superiority": false,
      "invocation_notes": "tokio-quiche RFC 9220 slow-consumer tunnel plus concurrent H3 streaming comparator."
    },
    {
      "id": "h3_quinn_rfc9220_tunnel",
      "crate_name": "h3+h3-quinn",
      "version": "h3 0.0.8 / h3-quinn 0.0.10",
      "role": "unsupported_h3_tunnel_comparator",
      "required_for_superiority": false,
      "invocation_notes": "Unsupported in this harness: h3 0.0.8 has no WebSocket protocol surface for RFC 9220."
    },
    {
      "id": "reqwest_h3_rfc9220_tunnel",
      "crate_name": "reqwest",
      "version": "0.13.3",
      "role": "unsupported_h3_tunnel_comparator",
      "required_for_superiority": false,
      "invocation_notes": "Unsupported in this harness: reqwest H3 exposes request/response APIs, not an RFC 9220 tunnel API."
    },
    {
      "id": "quiche_direct",
      "crate_name": "quiche",
      "version": "0.29.0",
      "role": "h3_client",
      "required_for_superiority": true,
      "invocation_notes": "Direct Cloudflare quiche H3 client adapter."
    },
    {
      "id": "tokio_quiche",
      "crate_name": "tokio-quiche",
      "version": "0.19.0",
      "role": "h3_client",
      "required_for_superiority": true,
      "invocation_notes": "Async Cloudflare quiche wrapper adapter."
    },
    {
      "id": "h3_quinn",
      "crate_name": "h3+h3-quinn",
      "version": "h3 0.0.8 / h3-quinn 0.0.10",
      "role": "h3_client",
      "required_for_superiority": true,
      "invocation_notes": "hyperium h3 client over Quinn."
    },
    {
      "id": "reqwest_h3",
      "crate_name": "reqwest",
      "version": "0.13.3",
      "role": "h3_client",
      "required_for_superiority": true,
      "invocation_notes": "Run with --features reqwest-h3 and RUSTFLAGS='--cfg reqwest_unstable'."
    },
    {
      "id": "tokio_tungstenite_rfc9220",
      "crate_name": "tokio-tungstenite",
      "version": "0.24.0",
      "role": "unsupported_h3_websocket_client",
      "required_for_superiority": false,
      "invocation_notes": "RFC 6455-over-H1 WebSocket client; no RFC 9220/H3 transport in this harness."
    },
    {
      "id": "reqwest_rfc9220",
      "crate_name": "reqwest",
      "version": "0.13.3",
      "role": "unsupported_h3_websocket_client",
      "required_for_superiority": false,
      "invocation_notes": "HTTP client with H3 support; no native WebSocket/RFC 9220 API."
    },
    {
      "id": "quinn_transport",
      "crate_name": "quinn",
      "version": "0.11.9",
      "role": "quic_transport_baseline",
      "required_for_superiority": false,
      "invocation_notes": "QUIC transport-only baseline, not an H3 superiority gate member."
    },
    {
      "id": "s2n_quic_transport",
      "crate_name": "s2n-quic",
      "version": "1.80.0",
      "role": "quic_transport_baseline",
      "required_for_superiority": false,
      "invocation_notes": "Optional QUIC transport-only baseline via --features s2n-quic-transport."
    }
  ],
  "rows": [
    {
      "competitor_id": "specter_native",
      "status": "measured_pass",
      "p50_ttft_ns": 300250.0,
      "p95_ttft_ns": 807583.0,
      "bytes_per_sec": 9939259.838801367,
      "source": "specter_native_adapter",
      "protocol": "h3",
      "workload": "http3_streaming_get",
      "payload_bytes": 81920,
      "sample_count": 100
    },
    {
      "competitor_id": "specter_native_rfc9220_tunnel",
      "status": "measured_pass",
      "p50_ttft_ns": 218250.0,
      "p95_ttft_ns": 321500.0,
      "bytes_per_sec": 4365961.548243299,
      "source": "specter_native_rfc9220_tunnel_adapter",
      "protocol": "h3_rfc9220",
      "workload": "websocket_over_h3_raw_tunnel_echo",
      "payload_bytes": 1024,
      "sample_count": 100,
      "notes": "Measured Specter raw byte tunnel over RFC9220 Extended CONNECT; not RFC6455 frame parsing."
    },
    {
      "competitor_id": "specter_native_rfc9220_tunnel_close",
      "status": "measured_pass",
      "p50_ttft_ns": 226041.0,
      "p95_ttft_ns": 1845583.0,
      "bytes_per_sec": 2514392.379524939,
      "source": "specter_native_rfc9220_tunnel_close_adapter",
      "protocol": "h3_rfc9220",
      "workload": "websocket_over_h3_raw_tunnel_close_fin",
      "payload_bytes": 1024,
      "sample_count": 100,
      "notes": "Measures client DATA+FIN through echoed DATA and server FIN delivery on an RFC9220 tunnel."
    },
    {
      "competitor_id": "specter_native_rfc9220_tunnel_mixed",
      "status": "measured_pass",
      "p50_ttft_ns": 1054125.0,
      "p95_ttft_ns": 2103500.0,
      "bytes_per_sec": 1147041.7947721442,
      "source": "specter_native_rfc9220_tunnel_mixed_adapter",
      "protocol": "h3_rfc9220",
      "workload": "slow_consumer_tunnel_plus_http3_streaming",
      "payload_bytes": 122880,
      "sample_count": 100,
      "notes": "Measures a delayed-reader RFC9220 tunnel while a same-origin H3 streaming response completes."
    },
    {
      "competitor_id": "quiche_direct_rfc9220_tunnel",
      "status": "measured_pass",
      "p50_ttft_ns": 2733917.0,
      "p95_ttft_ns": 2802666.0,
      "bytes_per_sec": 369356.79803206696,
      "source": "quiche_direct_rfc9220_tunnel_adapter",
      "protocol": "h3_rfc9220",
      "workload": "websocket_over_h3_raw_tunnel_echo",
      "payload_bytes": 1024,
      "sample_count": 100,
      "notes": "RFC9220 comparator adapter for raw byte echo over WebSocket Extended CONNECT; excluded from the HTTP/3 superiority gate."
    },
    {
      "competitor_id": "tokio_quiche_rfc9220_tunnel",
      "status": "measured_pass",
      "p50_ttft_ns": 4242875.0,
      "p95_ttft_ns": 5135125.0,
      "bytes_per_sec": 236631.4463559192,
      "source": "tokio_quiche_rfc9220_tunnel_adapter",
      "protocol": "h3_rfc9220",
      "workload": "websocket_over_h3_raw_tunnel_echo",
      "payload_bytes": 1024,
      "sample_count": 100,
      "notes": "RFC9220 comparator adapter for raw byte echo over WebSocket Extended CONNECT; excluded from the HTTP/3 superiority gate."
    },
    {
      "competitor_id": "quiche_direct_rfc9220_tunnel_close",
      "status": "measured_pass",
      "p50_ttft_ns": 2746334.0,
      "p95_ttft_ns": 2794917.0,
      "bytes_per_sec": 374781.9420573649,
      "source": "quiche_direct_rfc9220_tunnel_close_adapter",
      "protocol": "h3_rfc9220",
      "workload": "websocket_over_h3_raw_tunnel_close_fin",
      "payload_bytes": 1024,
      "sample_count": 100,
      "notes": "RFC9220 comparator adapter measuring client DATA+FIN through echoed DATA and server FIN delivery."
    },
    {
      "competitor_id": "tokio_quiche_rfc9220_tunnel_close",
      "status": "measured_pass",
      "p50_ttft_ns": 4287625.0,
      "p95_ttft_ns": 5660750.0,
      "bytes_per_sec": 227441.7689656728,
      "source": "tokio_quiche_rfc9220_tunnel_close_adapter",
      "protocol": "h3_rfc9220",
      "workload": "websocket_over_h3_raw_tunnel_close_fin",
      "payload_bytes": 1024,
      "sample_count": 100,
      "notes": "RFC9220 comparator adapter measuring client DATA+FIN through echoed DATA and server FIN delivery."
    },
    {
      "competitor_id": "quiche_direct_rfc9220_tunnel_mixed",
      "status": "measured_pass",
      "p50_ttft_ns": 2831250.0,
      "p95_ttft_ns": 3269500.0,
      "bytes_per_sec": 661121.761266662,
      "source": "quiche_direct_rfc9220_tunnel_mixed_adapter",
      "protocol": "h3_rfc9220",
      "workload": "slow_consumer_tunnel_plus_http3_streaming",
      "payload_bytes": 122880,
      "sample_count": 100,
      "notes": "RFC9220 comparator adapter measuring delayed tunnel reads while a same-origin H3 streaming response completes."
    },
    {
      "competitor_id": "tokio_quiche_rfc9220_tunnel_mixed",
      "status": "measured_pass",
      "p50_ttft_ns": 93134708.0,
      "p95_ttft_ns": 98327000.0,
      "bytes_per_sec": 760039.5125937463,
      "source": "tokio_quiche_rfc9220_tunnel_mixed_adapter",
      "protocol": "h3_rfc9220",
      "workload": "slow_consumer_tunnel_plus_http3_streaming",
      "payload_bytes": 122880,
      "sample_count": 100,
      "notes": "RFC9220 comparator adapter measuring delayed tunnel reads while a same-origin H3 streaming response completes."
    },
    {
      "competitor_id": "h3_quinn_rfc9220_tunnel",
      "status": "unsupported_by_client",
      "p50_ttft_ns": null,
      "p95_ttft_ns": null,
      "bytes_per_sec": null,
      "source": "capability_audit",
      "protocol": "h3_rfc9220",
      "workload": "websocket_over_h3_raw_tunnel_echo",
      "payload_bytes": 1024,
      "notes": "h3/h3-quinn is tracked as unsupported for RFC9220 WebSocket tunnels until its public protocol surface exposes websocket Extended CONNECT."
    },
    {
      "competitor_id": "reqwest_h3_rfc9220_tunnel",
      "status": "unsupported_by_client",
      "p50_ttft_ns": null,
      "p95_ttft_ns": null,
      "bytes_per_sec": null,
      "source": "capability_audit",
      "protocol": "h3_rfc9220",
      "workload": "websocket_over_h3_raw_tunnel_echo",
      "payload_bytes": 1024,
      "notes": "reqwest_h3 is tracked as unsupported for RFC9220 WebSocket tunnels because reqwest does not expose a bidirectional H3 tunnel API."
    },
    {
      "competitor_id": "quiche_direct",
      "status": "measured_pass",
      "p50_ttft_ns": 2811583.0,
      "p95_ttft_ns": 3226541.0,
      "bytes_per_sec": 7248273.326936797,
      "source": "quiche_direct_adapter",
      "protocol": "h3",
      "workload": "http3_streaming_get",
      "payload_bytes": 81920,
      "sample_count": 100
    },
    {
      "competitor_id": "tokio_quiche",
      "status": "measured_pass",
      "p50_ttft_ns": 3483166.0,
      "p95_ttft_ns": 4198458.0,
      "bytes_per_sec": 6501571.161178895,
      "source": "tokio_quiche_adapter",
      "protocol": "h3",
      "workload": "http3_streaming_get",
      "payload_bytes": 81920,
      "sample_count": 100
    },
    {
      "competitor_id": "h3_quinn",
      "status": "measured_pass",
      "p50_ttft_ns": 1017917.0,
      "p95_ttft_ns": 2413083.0,
      "bytes_per_sec": 8161895.15172299,
      "source": "h3_quinn_adapter",
      "protocol": "h3",
      "workload": "http3_streaming_get",
      "payload_bytes": 81920,
      "sample_count": 100
    },
    {
      "competitor_id": "reqwest_h3",
      "status": "measured_pass",
      "p50_ttft_ns": 1148709.0,
      "p95_ttft_ns": 3317292.0,
      "bytes_per_sec": 7838585.909916008,
      "source": "reqwest_h3_adapter",
      "protocol": "h3",
      "workload": "http3_streaming_get",
      "payload_bytes": 81920,
      "sample_count": 100
    },
    {
      "competitor_id": "tokio_tungstenite_rfc9220",
      "status": "unsupported_by_client",
      "p50_ttft_ns": null,
      "p95_ttft_ns": null,
      "bytes_per_sec": null,
      "source": "capability_audit",
      "protocol": "h3_rfc9220",
      "workload": "websocket_over_h3_raw_tunnel_echo",
      "payload_bytes": 1024,
      "notes": "tokio-tungstenite is an RFC6455-over-H1 client and has no RFC9220/H3 transport here; not a throughput comparator."
    },
    {
      "competitor_id": "reqwest_rfc9220",
      "status": "unsupported_by_client",
      "p50_ttft_ns": null,
      "p95_ttft_ns": null,
      "bytes_per_sec": null,
      "source": "capability_audit",
      "protocol": "h3_rfc9220",
      "workload": "websocket_over_h3_raw_tunnel_echo",
      "payload_bytes": 1024,
      "notes": "reqwest can measure H3 HTTP rows but does not expose a native WebSocket/RFC9220 API; not a throughput comparator."
    },
    {
      "competitor_id": "quinn_transport",
      "status": "measured_pass",
      "p50_ttft_ns": 163959.0,
      "p95_ttft_ns": 327500.0,
      "bytes_per_sec": 4982163.465561768,
      "source": "quinn_transport_adapter",
      "protocol": "quic",
      "workload": "bidirectional_echo_transport",
      "payload_bytes": 1024,
      "notes": "Measured QUIC transport-only echo baseline; not an H3 HTTP or RFC9220 comparator.",
      "sample_count": null
    },
    {
      "competitor_id": "s2n_quic_transport",
      "status": "measured_pass",
      "p50_ttft_ns": 297584.0,
      "p95_ttft_ns": 346042.0,
      "bytes_per_sec": 3334688.0503537897,
      "source": "s2n_quic_transport_adapter",
      "protocol": "quic",
      "workload": "bidirectional_echo_transport",
      "payload_bytes": 1024,
      "notes": "Measured QUIC transport-only echo baseline; not an H3 HTTP or RFC9220 comparator.",
      "sample_count": null
    }
  ],
  "fixture_events": [],
  "superiority_gate": {
    "status": "pass",
    "pass": true,
    "reason": "specter_native_is_faster_than_required_h3_competitors",
    "fastest_non_specter_h3_client": "h3_quinn",
    "no_h3_superiority_claim_without_all_required_rows": true,
    "required_h3_clients": [
      "quiche_direct",
      "tokio_quiche",
      "h3_quinn",
      "reqwest_h3"
    ],
    "missing_required_rows": []
  },
  "rfc9220_full_suite_superiority_gate": {
    "status": "pass",
    "pass": true,
    "reason": "specter_native_rfc9220_tunnel_suite_is_faster_than_required_rfc9220_tunnel_competitors",
    "fastest_non_specter_rfc9220_tunnel_client": "quiche_direct_rfc9220_tunnel",
    "no_rfc9220_tunnel_superiority_claim_without_all_required_n100_rows": true,
    "minimum_sample_count": 100,
    "required_rfc9220_tunnel_clients": [
      "specter_native_rfc9220_tunnel",
      "quiche_direct_rfc9220_tunnel",
      "tokio_quiche_rfc9220_tunnel",
      "specter_native_rfc9220_tunnel_close",
      "quiche_direct_rfc9220_tunnel_close",
      "tokio_quiche_rfc9220_tunnel_close",
      "specter_native_rfc9220_tunnel_mixed",
      "quiche_direct_rfc9220_tunnel_mixed",
      "tokio_quiche_rfc9220_tunnel_mixed"
    ],
    "missing_required_rfc9220_tunnel_rows": [],
    "under_sampled_required_rfc9220_tunnel_rows": [],
    "missing_required_rfc9220_tunnel_metrics": []
  }
}
