courierust 1.0.4

no_std HTTP and gRPC engine with work-stealing, RFC 9218, and JA3/JA4 fingerprinting.
Documentation
# GitHub Action Benchmark

Generated by the benchmark workflow.

## Run

- Commit: e131e76f01307a353c0aa9c38f5aa14f2301c226
- Ref: main
- Runner: Linux
- Throughput exit code: 0
- Comparison exit code: 0
- Concurrency exit code: 0
- Interop exit code: 0
- HTTP/3 exit code: 0
- Cross-machine exit code: not-configured
- Fuzz exit code: 0
- Workflow run: [33855636735](https://github.com/blueokanna/Courierust/actions/runs/33855636735)

## Evidence Rules

- Rows marked `invalid` are retained for auditability but are excluded from performance conclusions.
- The `*_h2c_large_body_to_hyper` rows measure a 1 MiB POST against the same hyper h2 server. Both clients are paced by the server 64 KiB initial flow-control window (WINDOW_UPDATE round trips), and reqwest retains a large fixed wait even in the async client — these rows are NOT valid for ratio claims.
- `quinn_h3_client_to_courierust` is reported `not_available` until the independent quinn+rustls QUIC/TLS handshake completes against the Courierust H3 server (a genuine interop gap, never faked).
- Loopback is not cross-machine evidence. The cross-machine table is evidence only when `target_scope=remote` and `status=ok`.
- TLS rows measure the built-in TLS 1.2/1.3 path; certificate, hostname, and ALPN checks must pass for the case to be valid. `negotiated_alpn` is reported; `session_resumption=n/a` because each TLSVERIFY row is a single handshake that does not measure resumption (the stack does implement TLS 1.3 session tickets).
- Fuzz status is evidence only for the recorded target, run count, and duration; an unconfigured target is not a pass.
- The `STATS` table is the reactor/connection/stream/syscall evidence behind the throughput rows (especially the h2 multi-worker scaling).

## Reading the numbers (correct interpretation)

- RPS and median latency are comparable only within a paired row (same client, server, payload, concurrency). Never divide across rows, clients or protocols to claim "N× faster".
- reqwest pays for a general async runtime, rich extensions (proxies, cookies, encodings, swappable connector/TLS backends) and a different pool policy: `pool_max_idle_per_host=N` caps idle *pooled* connections, not live ones — equivalent to Courierust `max_connections_per_host=N` only under sequential load.
- An H3 concurrent row whose P99/P99.9/tail_ratio sits far above its median (e.g. P99 jumping from ~200 µs to ms) is a signal to track, not noise. Candidates: UDP reactor, packet queue, congestion-window/ACK timers, QPACK/control flow, worker→reactor handoff, CI-runner scheduling. One run cannot localize the root cause, but it proves the H3 tail is not yet as tight as H2.
- The H1 server is built for event-driven protection (incomplete headers, idle keep-alive, slow senders); hyper is a mature async architecture. A short-request microbenchmark cannot dismiss the scheduling value — the concurrency/slow-connection rows measure production usability and resource isolation.
- H3 connection reuse plus cross-implementation interop (quinn+h3 → Courierust server) is stronger evidence than Courierust-to-Courierust.

## Throughput

| Case | Protocol | Mode | Payload | Workers | Server threads | Requests | RPS | Resp MB/s | P50 us | P75 us | P90 us | P95 us | P99 us | Min us | Mean us | Max us | Stddev us | P99.9 us | Tail | Samples |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| h1_sequential | h1 | sequential | empty | 1 | 4 | 4000 | 17721.9 | 0.000 | 53.83 | 62.77 | 72.36 | 76.49 | 86.86 | 24.32 | 56.12 | 113.76 | 11.43 | 102.82 | 1.61 | 2000 |
| h1_sequential | h1 | sequential | 1k | 1 | 4 | 4000 | 17265.0 | 17.679 | 56.09 | 63.44 | 71.76 | 77.12 | 86.46 | 25.23 | 57.82 | 136.67 | 10.22 | 100.17 | 1.54 | 2000 |
| h1_sequential | h1 | sequential | 64k | 1 | 4 | 4000 | 12171.3 | 797.658 | 83.98 | 95.81 | 107.07 | 112.61 | 124.08 | 48.11 | 85.14 | 142.80 | 15.73 | 137.36 | 1.48 | 2000 |
| h1_parallel_w1 | h1 | parallel | 1k | 1 | 4 | 4000 | 17094.5 | 17.505 | 56.53 | 65.44 | 74.88 | 79.77 | 89.34 | 25.15 | 58.76 | 104.91 | 11.14 | 99.62 | 1.58 | 2000 |
| h1_parallel_w4 | h1 | parallel | 1k | 4 | 4 | 4000 | 57090.0 | 58.460 | 61.89 | 78.50 | 100.72 | 114.35 | 152.80 | 11.77 | 65.04 | 220.97 | 27.78 | 205.95 | 2.47 | 2000 |
| h1_parallel_w8 | h1 | parallel | 1k | 8 | 8 | 4000 | 76304.7 | 78.136 | 69.60 | 104.11 | 148.02 | 184.40 | 304.04 | 10.86 | 85.30 | 2801.40 | 104.25 | 1455.53 | 4.37 | 2000 |
| h2_multiplex_w1 | h2c | multiplex | 1k | 1 | 4 | 4000 | 14041.1 | 14.378 | 71.24 | 75.72 | 82.15 | 88.31 | 96.83 | 49.46 | 71.46 | 376.29 | 11.21 | 114.89 | 1.36 | 2000 |
| h2_multiplex_w8 | h2c | multiplex | 1k | 8 | 4 | 4000 | 48251.1 | 49.409 | 155.74 | 184.38 | 221.95 | 244.94 | 287.59 | 53.50 | 163.98 | 542.87 | 44.72 | 538.13 | 1.85 | 2000 |
| h2_multiplex_w32 | h2c | multiplex | 1k | 32 | 4 | 4000 | 69704.4 | 71.377 | 448.15 | 477.78 | 515.71 | 551.75 | 675.54 | 116.10 | 451.81 | 864.57 | 62.51 | 846.96 | 1.51 | 2016 |
| h2_multiplex_w1 | h2c | multiplex | 64k | 1 | 4 | 4000 | 9430.4 | 618.033 | 105.88 | 112.70 | 117.83 | 122.45 | 135.96 | 81.87 | 106.38 | 359.18 | 11.75 | 165.50 | 1.28 | 2000 |
| h2_multiplex_w8 | h2c | multiplex | 64k | 8 | 4 | 4000 | 15225.1 | 997.791 | 538.66 | 596.06 | 646.92 | 707.71 | 913.64 | 110.17 | 524.97 | 1262.46 | 131.45 | 1097.09 | 1.70 | 2000 |
| h2_multiplex_w32 | h2c | multiplex | 64k | 32 | 4 | 4000 | 18558.7 | 1216.260 | 1621.63 | 1853.07 | 2066.39 | 2191.96 | 5647.86 | 201.26 | 1698.31 | 11530.19 | 782.70 | 11449.51 | 3.48 | 2016 |
| https_h2_sequential | https+h2 | sequential | empty | 1 | 4 | 2000 | 13405.4 | 0.000 | 72.30 | 77.42 | 92.23 | 101.12 | 112.98 | 51.70 | 74.56 | 375.30 | 13.86 | 131.17 | 1.56 | 2000 |
| https_h2_sequential | https+h2 | sequential | 1k | 1 | 4 | 2000 | 12038.9 | 12.328 | 81.46 | 85.39 | 92.11 | 95.83 | 107.47 | 65.90 | 83.03 | 150.96 | 7.32 | 130.01 | 1.32 | 2000 |
| https_h2_sequential | https+h2 | sequential | 64k | 1 | 4 | 2000 | 2662.6 | 174.499 | 372.50 | 386.38 | 405.67 | 418.43 | 440.85 | 326.97 | 375.52 | 606.57 | 22.83 | 474.90 | 1.18 | 2000 |

## TLS Verification Evidence

| Protocol | Cert verified | Hostname verified | Negotiated ALPN | Session resumption | Cipher suite | Error |
| --- | --- | --- | --- | --- | --- | --- |
| https+h2 | true | true | h2 | n/a | 0x1303 | - |
| https+h2 | true | true | h2 | n/a | 0x1303 | - |
| https+h2 | true | true | h2 | n/a | 0x1303 | - |

## Cross-Library Comparison

| Case | Layer | Protocol | Client | Server | Payload | Workers | Server threads | Pool policy | Pool value | Reps | Status | Reason | Requests | RPS | Resp MB/s | P50 us | P75 us | P90 us | P95 us | P99 us | Min us | Mean us | Max us | Stddev us | P99.9 us | Tail | Samples |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| raw_tcp_floor | transport | h1 | std_tcp | std_tcp | 4b | 1 | 1 | raw_tcp | 1 | 1 | valid | - | 2000 | 31221.6 | 0.125 | 32.12 | 33.53 | 34.40 | 35.27 | 48.08 | 18.93 | 31.99 | 74.13 | 3.56 | 65.12 | 1.50 | 2000 |
| courierust_client_to_hyper | client | h1 | courierust | hyper | 1k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 24744.6 | 25.338 | 37.93 | 45.67 | 48.93 | 50.19 | 61.36 | 30.65 | 40.37 | 92.25 | 6.49 | 74.61 | 1.62 | 4000 |
| reqwest_client_to_hyper | client | h1 | reqwest | hyper | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 12535.4 | 12.836 | 78.79 | 83.69 | 88.75 | 93.46 | 107.18 | 60.67 | 79.70 | 150.41 | 8.18 | 129.97 | 1.36 | 4000 |
| reqwest_client_to_courierust | server | h1 | reqwest | courierust | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 9292.7 | 9.516 | 106.32 | 114.13 | 122.97 | 128.11 | 138.38 | 75.74 | 107.54 | 194.03 | 11.60 | 173.09 | 1.30 | 4000 |
| reqwest_client_to_hyper | server | h1 | reqwest | hyper | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 12310.2 | 12.606 | 78.11 | 85.29 | 91.99 | 99.22 | 115.38 | 59.63 | 81.19 | 322.93 | 10.82 | 142.11 | 1.48 | 4000 |
| courierust_client_to_hyper | client | h1 | courierust | hyper | 1k | 8 | 4 | courierust_max_connections_per_host | 8 | 2 | valid | - | 4000 | 118247.7 | 121.086 | 55.48 | 78.20 | 98.18 | 115.99 | 195.01 | 16.35 | 62.90 | 807.88 | 42.77 | 611.27 | 3.52 | 4000 |
| reqwest_client_to_hyper | client | h1 | reqwest | hyper | 1k | 8 | 4 | reqwest_pool_max_idle_per_host | 8 | 2 | valid | - | 4000 | 36666.3 | 37.546 | 212.53 | 231.79 | 254.53 | 269.85 | 338.36 | 69.61 | 216.58 | 618.57 | 39.10 | 593.44 | 1.59 | 4000 |
| courierust_client_to_hyper | client | h1 | courierust | hyper | 64k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 17966.1 | 1177.425 | 55.09 | 56.74 | 59.10 | 61.67 | 73.67 | 39.28 | 55.62 | 126.13 | 4.42 | 84.28 | 1.34 | 4000 |
| reqwest_client_to_hyper | client | h1 | reqwest | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 10850.1 | 711.075 | 89.53 | 93.97 | 102.59 | 110.63 | 124.18 | 74.54 | 92.12 | 471.81 | 12.21 | 206.64 | 1.39 | 4000 |
| reqwest_client_to_courierust | server | h1 | reqwest | courierust | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 7618.5 | 499.285 | 129.85 | 139.50 | 149.52 | 156.74 | 173.91 | 94.54 | 131.22 | 386.84 | 15.38 | 224.50 | 1.34 | 4000 |
| reqwest_client_to_hyper | server | h1 | reqwest | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 10340.7 | 677.688 | 95.23 | 100.98 | 110.25 | 118.00 | 139.32 | 72.77 | 96.65 | 208.47 | 11.96 | 171.39 | 1.46 | 4000 |
| courierust_client_to_hyper | client | h2c | courierust | hyper | 1k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 12281.0 | 12.576 | 80.13 | 86.24 | 93.35 | 98.56 | 112.72 | 57.04 | 81.38 | 1115.66 | 20.12 | 177.59 | 1.41 | 4000 |
| reqwest_client_to_hyper | client | h2c | reqwest | hyper | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 10093.2 | 10.335 | 97.03 | 104.96 | 113.09 | 120.21 | 132.67 | 76.43 | 99.00 | 1108.54 | 19.89 | 172.26 | 1.37 | 4000 |
| reqwest_client_to_courierust | server | h2c | reqwest | courierust | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 11066.0 | 11.332 | 89.28 | 96.36 | 103.42 | 108.64 | 125.38 | 70.13 | 90.30 | 167.25 | 10.95 | 157.33 | 1.40 | 4000 |
| reqwest_client_to_hyper | server | h2c | reqwest | hyper | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 10545.1 | 10.798 | 93.13 | 99.89 | 108.18 | 114.13 | 129.91 | 74.08 | 94.76 | 211.18 | 11.14 | 166.78 | 1.39 | 4000 |
| courierust_h2_conn1xw32 | client | h2c | courierust | hyper | 1k | 32 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 52708.8 | 53.974 | 553.18 | 645.72 | 770.63 | 862.29 | 1144.51 | 71.73 | 578.16 | 2093.81 | 170.73 | 1956.47 | 2.07 | 4000 |
| courierust_h2_conn4xw8 | client | h2c | courierust | hyper | 1k | 32 | 4 | courierust_max_connections_per_host | 4 | 2 | valid | - | 4000 | 71873.2 | 73.598 | 384.20 | 515.89 | 638.85 | 737.63 | 1135.65 | 60.01 | 409.54 | 1948.01 | 199.68 | 1670.54 | 2.96 | 4000 |
| courierust_h2_conn8xw4 | client | h2c | courierust | hyper | 1k | 32 | 4 | courierust_max_connections_per_host | 8 | 2 | valid | - | 4000 | 71626.8 | 73.346 | 385.46 | 515.34 | 633.62 | 731.59 | 933.68 | 46.73 | 408.89 | 1402.91 | 179.97 | 1228.30 | 2.42 | 4000 |
| courierust_client_to_hyper | client | h2c | courierust | hyper | 1k | 8 | 4 | courierust_max_connections_per_host | 8 | 2 | valid | - | 4000 | 57859.0 | 59.248 | 127.72 | 158.90 | 196.91 | 226.39 | 339.05 | 37.91 | 134.11 | 689.53 | 57.48 | 588.45 | 2.65 | 4000 |
| reqwest_client_to_hyper | client | h2c | reqwest | hyper | 1k | 8 | 4 | reqwest_pool_max_idle_per_host | 8 | 2 | valid | - | 4000 | 36817.3 | 37.701 | 205.41 | 251.80 | 297.07 | 326.87 | 389.92 | 62.83 | 212.98 | 584.06 | 64.26 | 478.11 | 1.90 | 4000 |
| courierust_client_to_hyper | client | h2c | courierust | hyper | 64k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 9177.1 | 601.431 | 105.28 | 114.16 | 120.40 | 125.93 | 140.51 | 84.00 | 108.91 | 285.63 | 10.31 | 195.22 | 1.33 | 4000 |
| reqwest_client_to_hyper | client | h2c | reqwest | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 8242.0 | 540.147 | 118.70 | 129.00 | 139.85 | 146.79 | 163.17 | 90.18 | 121.28 | 322.43 | 14.11 | 179.37 | 1.37 | 4000 |
| reqwest_client_to_courierust | server | h2c | reqwest | courierust | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 8597.2 | 563.429 | 114.40 | 123.48 | 132.35 | 139.06 | 154.65 | 86.88 | 116.27 | 203.41 | 12.93 | 191.33 | 1.35 | 4000 |
| reqwest_client_to_hyper | server | h2c | reqwest | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 8088.9 | 530.111 | 122.43 | 130.96 | 139.13 | 144.61 | 158.60 | 93.02 | 123.58 | 181.59 | 12.23 | 176.92 | 1.30 | 4000 |
| courierust_h2c_large_body_to_hyper | client | h2c | courierust | hyper | 64k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 64 | 661.8 | 43.369 | 1483.17 | 1539.42 | 1624.76 | 1812.00 | 1876.43 | 1371.61 | 1511.06 | 1878.88 | 111.78 | 1878.88 | 1.27 | 64 |
| reqwest_async_h2c_large_body_to_hyper | client | h2c | reqwest-async | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 64 | 1319.2 | 86.455 | 750.39 | 787.17 | 825.84 | 843.27 | 855.84 | 683.56 | 757.96 | 861.31 | 43.69 | 861.31 | 1.14 | 64 |
| courierust_h3_client_to_courierust | client | h3 | courierust-h3 | courierust-h3 | 1k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 6558.0 | 6.715 | 152.37 | 162.19 | 172.31 | 179.12 | 199.52 | 107.95 | 152.44 | 487.39 | 18.57 | 269.56 | 1.31 | 4000 |
| quinn_h3_client_to_courierust | client | h3 | quinn+h3 | courierust-h3 | 1k | 1 | 4 | quinn_single_connection | 1 | 2 | valid | - | 4000 | 5907.6 | 6.049 | 167.07 | 177.74 | 188.58 | 195.20 | 215.31 | 130.79 | 169.15 | 484.94 | 16.64 | 269.04 | 1.29 | 4000 |
| courierust_h3_client_to_courierust | client | h3 | courierust-h3 | courierust-h3 | 64k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 1643.9 | 107.734 | 598.80 | 612.56 | 631.24 | 739.21 | 811.33 | 512.65 | 608.25 | 1079.47 | 48.35 | 915.04 | 1.35 | 4000 |
| quinn_h3_client_to_courierust | client | h3 | quinn+h3 | courierust-h3 | 64k | 1 | 4 | quinn_single_connection | 1 | 2 | valid | - | 4000 | 1351.2 | 88.555 | 764.56 | 791.62 | 811.96 | 860.22 | 959.10 | 544.81 | 739.96 | 1118.54 | 87.88 | 1053.78 | 1.25 | 4000 |

## Concurrency and Slow Connections

- These rows measure production usability and resource isolation: an event-driven scheduler must keep idle/partial/slow (Slowloris-style) connections off the worker pool while a fast probe still completes. The `pool` row is the diagnostic counter-model.

| Case | Model | Platform | Status | Event enabled | Connections | Worker threads | Probe us | Probe status | Byte delay us | Completed | Wall ms |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| idle_partial_herd | event | linux | probe_ok | true | 200 | 2 | 1365.08 | - | - | - | - |
| idle_partial_herd | pool | linux | probe_blocked | false | 200 | 2 | na | - | - | - | - |
| slow_sender_herd | event | linux | ok | true | 16 | 2 | 120.49 | probe_ok | 10000 | 16 | 394.44 |

## HTTP/3 (QUIC)

- `h3_connect` is a cold request: QUIC handshake + TLS 1.3 + server Retry address validation on a fresh connection.
- `h3_sequential` and `h3_parallel` reuse the pooled per-authority QUIC connection (`mode=reuse`), so they measure the warm per-request cost of connection reuse.

| Case | Mode | Workers | Requests | Elapsed ms | Connect ms | RPS | P50 us | P75 us | P90 us | P99 us | Min us | Mean us | Max us | Stddev us | P99.9 us | Tail | Samples |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| h3_connect | connect | 1 | 1 | - | 4.108 | - | - | - | - | - | - | - | - | - | - | - | - |
| h3_sequential | reuse | 1 | 1000 | 132.640 | - | 7539.2 | 134.4 | 141.1 | 149.6 | 169.6 | 91.83 | 132.58 | 440.31 | 17.62 | 186.14 | 1.26 | 1000 |
| h3_parallel | reuse | 8 | 1000 | 34.165 | - | 29269.9 | 262.6 | 281.3 | 302.4 | 370.9 | 131.52 | 265.71 | 803.97 | 42.57 | 766.95 | 1.41 | 1000 |

## Reactor / Connection / Stream Evidence

| Protocol | Case | Payload | Workers | Accepted conns | Active conns | Poll syscalls | Wakeups | Queue peak | H1 conns | H1 read | H1 write | H2 conns | H2 active | H2 streams | H2 stream peak | H2 stream/conn peak | H2 read | H2 write | H3 conns | H3 active | H3 streams | H3 active streams | H3 stream peak | H3 stream/conn peak | H3 queue peak | H3 UDP recv | H3 UDP send |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| h2c | h2_multiplex_w1 | 1k | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 1 | 1 | 4253 | 4003 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w1 | 1k | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 1 | 1 | 4003 | 4253 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w8 | 1k | 8 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 8 | 8 | 900 | 649 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w8 | 1k | 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 8 | 8 | 649 | 899 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w32 | 1k | 32 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 32 | 32 | 360 | 389 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w32 | 1k | 32 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 32 | 32 | 385 | 366 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w1 | 64k | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 1 | 1 | 8145 | 16008 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w1 | 64k | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 1 | 1 | 20186 | 8144 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w8 | 64k | 8 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 8 | 8 | 1651 | 16009 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w8 | 64k | 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 8 | 8 | 17061 | 1919 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w32 | 64k | 32 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 32 | 32 | 460 | 16011 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w32 | 64k | 32 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 32 | 32 | 16561 | 1090 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

## Cross-Machine

| Role | Status | Scope | Protocol | Workers | Max connections | Requests | Bytes | RPS | Resp MB/s | P50 us | P95 us | P99 us | Min us | Mean us | Max us | Stddev us | P99.9 us | Tail | Samples | Reason |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| client | not_configured | remote | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | COURIERUST_REMOTE_URL_not_set |

## Fuzz

| Target | Status | Runs | Duration s | Corpus | Reason |
| --- | --- | --- | --- | --- | --- |
| h2_frame | ok | smoke | 72 | fuzz/corpus/h2_frame | command_exit_0 |
| hpack_block | ok | smoke | 22 | fuzz/corpus/hpack_block | command_exit_0 |
| h1_request | ok | smoke | 21 | fuzz/corpus/h1_request | command_exit_0 |
| h2_connection | ok | smoke | 24 | fuzz/corpus/h2_connection | command_exit_0 |

## Interop Validation

| Case | Result |
| --- | --- |
| courierust_client_h1_to_hyper_h1 | ok |
| courierust_client_h2c_to_hyper_h2 | ok |
| hyper_client_h1_to_courierust_h1 | ok |
| hyper_client_h2c_to_courierust_h2 | ok |
| reqwest_h1_to_courierust_h1 | ok |
| reqwest_h2c_to_courierust_h2 | ok |
| courierust_h2c_large_body_to_hyper_h2 | ok |
| courierust_h1_slow_reader_to_hyper_h1 | ok |
| tls_rejects_untrusted_certificate | ok |
| tls_rejects_hostname_mismatch | ok |
| tls_alpn_downgrade_to_h1 | ok |
| tls_h2_alpn_rejected | ok |
| h1_connection_close_honored | ok |
| courierust_h2_client_survives_peer_goaway | ok |
| h3_self_roundtrip | ok |
| h3_self_connection_reuse | ok |
| h3_self_large_body_flow_control | ok |
| h3_self_multiplex_concurrent | ok |
| suite | all_cases_passed |

## TLS Interop Matrix

| _No TLS interop evidence captured_ | | | | | |

## Captured Benchmark Output

### Throughput
~~~text
courierust throughput suite (loopback)
META|suite=throughput|requests=4000|server_threads=4|max_samples=2048
RESULT|suite=throughput|case=h1_sequential|protocol=h1|mode=sequential|payload=empty|bytes=0|workers=1|server_threads=4|requests=4000|elapsed_ms=225.710|rps=17721.9|response_mbps=0.000|p50_us=53.83|p75_us=62.77|p90_us=72.36|p95_us=76.49|p99_us=86.86|min_us=24.32|mean_us=56.12|max_us=113.76|stddev_us=11.43|p999_us=102.82|tail_ratio=1.61|cv=0.20|samples=2000
RESULT|suite=throughput|case=h1_sequential|protocol=h1|mode=sequential|payload=1k|bytes=1024|workers=1|server_threads=4|requests=4000|elapsed_ms=231.682|rps=17265.0|response_mbps=17.679|p50_us=56.09|p75_us=63.44|p90_us=71.76|p95_us=77.12|p99_us=86.46|min_us=25.23|mean_us=57.82|max_us=136.67|stddev_us=10.22|p999_us=100.17|tail_ratio=1.54|cv=0.18|samples=2000
RESULT|suite=throughput|case=h1_sequential|protocol=h1|mode=sequential|payload=64k|bytes=65536|workers=1|server_threads=4|requests=4000|elapsed_ms=328.642|rps=12171.3|response_mbps=797.658|p50_us=83.98|p75_us=95.81|p90_us=107.07|p95_us=112.61|p99_us=124.08|min_us=48.11|mean_us=85.14|max_us=142.80|stddev_us=15.73|p999_us=137.36|tail_ratio=1.48|cv=0.18|samples=2000
RESULT|suite=throughput|case=h1_parallel_w1|protocol=h1|mode=parallel|payload=1k|bytes=1024|workers=1|server_threads=4|requests=4000|elapsed_ms=233.994|rps=17094.5|response_mbps=17.505|p50_us=56.53|p75_us=65.44|p90_us=74.88|p95_us=79.77|p99_us=89.34|min_us=25.15|mean_us=58.76|max_us=104.91|stddev_us=11.14|p999_us=99.62|tail_ratio=1.58|cv=0.19|samples=2000
RESULT|suite=throughput|case=h1_parallel_w4|protocol=h1|mode=parallel|payload=1k|bytes=1024|workers=4|server_threads=4|requests=4000|elapsed_ms=70.065|rps=57090.0|response_mbps=58.460|p50_us=61.89|p75_us=78.50|p90_us=100.72|p95_us=114.35|p99_us=152.80|min_us=11.77|mean_us=65.04|max_us=220.97|stddev_us=27.78|p999_us=205.95|tail_ratio=2.47|cv=0.43|samples=2000
RESULT|suite=throughput|case=h1_parallel_w8|protocol=h1|mode=parallel|payload=1k|bytes=1024|workers=8|server_threads=8|requests=4000|elapsed_ms=52.421|rps=76304.7|response_mbps=78.136|p50_us=69.60|p75_us=104.11|p90_us=148.02|p95_us=184.40|p99_us=304.04|min_us=10.86|mean_us=85.30|max_us=2801.40|stddev_us=104.25|p999_us=1455.53|tail_ratio=4.37|cv=1.22|samples=2000
RESULT|suite=throughput|case=h2_multiplex_w1|protocol=h2c|mode=multiplex|payload=1k|bytes=1024|workers=1|server_threads=4|requests=4000|elapsed_ms=284.877|rps=14041.1|response_mbps=14.378|p50_us=71.24|p75_us=75.72|p90_us=82.15|p95_us=88.31|p99_us=96.83|min_us=49.46|mean_us=71.46|max_us=376.29|stddev_us=11.21|p999_us=114.89|tail_ratio=1.36|cv=0.16|samples=2000
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=1k|workers=1|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=1|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=4253|h2_write_syscalls=4003|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=1k|workers=1|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=4003|h2_write_syscalls=4253|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
RESULT|suite=throughput|case=h2_multiplex_w8|protocol=h2c|mode=multiplex|payload=1k|bytes=1024|workers=8|server_threads=4|requests=4000|elapsed_ms=82.900|rps=48251.1|response_mbps=49.409|p50_us=155.74|p75_us=184.38|p90_us=221.95|p95_us=244.94|p99_us=287.59|min_us=53.50|mean_us=163.98|max_us=542.87|stddev_us=44.72|p999_us=538.13|tail_ratio=1.85|cv=0.27|samples=2000
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=1k|workers=8|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=1|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=900|h2_write_syscalls=649|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=1k|workers=8|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=649|h2_write_syscalls=899|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
RESULT|suite=throughput|case=h2_multiplex_w32|protocol=h2c|mode=multiplex|payload=1k|bytes=1024|workers=32|server_threads=4|requests=4000|elapsed_ms=57.385|rps=69704.4|response_mbps=71.377|p50_us=448.15|p75_us=477.78|p90_us=515.71|p95_us=551.75|p99_us=675.54|min_us=116.10|mean_us=451.81|max_us=864.57|stddev_us=62.51|p999_us=846.96|tail_ratio=1.51|cv=0.14|samples=2016
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=1k|workers=32|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=1|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=360|h2_write_syscalls=389|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=1k|workers=32|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=385|h2_write_syscalls=366|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
RESULT|suite=throughput|case=h2_multiplex_w1|protocol=h2c|mode=multiplex|payload=64k|bytes=65536|workers=1|server_threads=4|requests=4000|elapsed_ms=424.159|rps=9430.4|response_mbps=618.033|p50_us=105.88|p75_us=112.70|p90_us=117.83|p95_us=122.45|p99_us=135.96|min_us=81.87|mean_us=106.38|max_us=359.18|stddev_us=11.75|p999_us=165.50|tail_ratio=1.28|cv=0.11|samples=2000
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=64k|workers=1|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=8145|h2_write_syscalls=16008|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=64k|workers=1|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=20186|h2_write_syscalls=8144|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
RESULT|suite=throughput|case=h2_multiplex_w8|protocol=h2c|mode=multiplex|payload=64k|bytes=65536|workers=8|server_threads=4|requests=4000|elapsed_ms=262.724|rps=15225.1|response_mbps=997.791|p50_us=538.66|p75_us=596.06|p90_us=646.92|p95_us=707.71|p99_us=913.64|min_us=110.17|mean_us=524.97|max_us=1262.46|stddev_us=131.45|p999_us=1097.09|tail_ratio=1.70|cv=0.25|samples=2000
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=64k|workers=8|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=1651|h2_write_syscalls=16009|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=64k|workers=8|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=17061|h2_write_syscalls=1919|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
RESULT|suite=throughput|case=h2_multiplex_w32|protocol=h2c|mode=multiplex|payload=64k|bytes=65536|workers=32|server_threads=4|requests=4000|elapsed_ms=215.533|rps=18558.7|response_mbps=1216.260|p50_us=1621.63|p75_us=1853.07|p90_us=2066.39|p95_us=2191.96|p99_us=5647.86|min_us=201.26|mean_us=1698.31|max_us=11530.19|stddev_us=782.70|p999_us=11449.51|tail_ratio=3.48|cv=0.46|samples=2016
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=64k|workers=32|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=460|h2_write_syscalls=16011|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=64k|workers=32|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=16561|h2_write_syscalls=1090|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
RESULT|suite=throughput|case=https_h2_sequential|protocol=https+h2|mode=sequential|payload=empty|bytes=0|workers=1|server_threads=4|requests=2000|elapsed_ms=149.193|rps=13405.4|response_mbps=0.000|p50_us=72.30|p75_us=77.42|p90_us=92.23|p95_us=101.12|p99_us=112.98|min_us=51.70|mean_us=74.56|max_us=375.30|stddev_us=13.86|p999_us=131.17|tail_ratio=1.56|cv=0.19|samples=2000
TLSVERIFY|protocol=https+h2|cert_verified=true|hostname_verified=true|negotiated_alpn=h2|session_resumption=n/a|cipher_suite=0x1303
RESULT|suite=throughput|case=https_h2_sequential|protocol=https+h2|mode=sequential|payload=1k|bytes=1024|workers=1|server_threads=4|requests=2000|elapsed_ms=166.129|rps=12038.9|response_mbps=12.328|p50_us=81.46|p75_us=85.39|p90_us=92.11|p95_us=95.83|p99_us=107.47|min_us=65.90|mean_us=83.03|max_us=150.96|stddev_us=7.32|p999_us=130.01|tail_ratio=1.32|cv=0.09|samples=2000
TLSVERIFY|protocol=https+h2|cert_verified=true|hostname_verified=true|negotiated_alpn=h2|session_resumption=n/a|cipher_suite=0x1303
RESULT|suite=throughput|case=https_h2_sequential|protocol=https+h2|mode=sequential|payload=64k|bytes=65536|workers=1|server_threads=4|requests=2000|elapsed_ms=751.134|rps=2662.6|response_mbps=174.499|p50_us=372.50|p75_us=386.38|p90_us=405.67|p95_us=418.43|p99_us=440.85|min_us=326.97|mean_us=375.52|max_us=606.57|stddev_us=22.83|p999_us=474.90|tail_ratio=1.18|cv=0.06|samples=2000
TLSVERIFY|protocol=https+h2|cert_verified=true|hostname_verified=true|negotiated_alpn=h2|session_resumption=n/a|cipher_suite=0x1303
total: complete
~~~

### Cross-Library Comparison
~~~text
courierust comparison suite (loopback, shared-peer matrix)
META|suite=compare|requests_per_repetition=2000|parallel_requests_per_repetition=2000|parallel_workers=8|repetitions=2|max_samples=2048
RESULT|suite=compare|case=raw_tcp_floor|layer=transport|protocol=h1|client=std_tcp|server=std_tcp|payload=4b|bytes=4|workers=1|server_threads=1|pool_policy=raw_tcp|pool_value=1|repetitions=1|status=valid|reason=-|requests=2000|elapsed_ms=64.058|rps=31221.6|response_mbps=0.125|p50_us=32.12|p75_us=33.53|p90_us=34.40|p95_us=35.27|p99_us=48.08|min_us=18.93|mean_us=31.99|max_us=74.13|stddev_us=3.56|p999_us=65.12|tail_ratio=1.50|cv=0.11|samples=2000
RESULT|suite=compare|case=courierust_client_to_hyper|layer=client|protocol=h1|client=courierust|server=hyper|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=161.652|rps=24744.6|response_mbps=25.338|p50_us=37.93|p75_us=45.67|p90_us=48.93|p95_us=50.19|p99_us=61.36|min_us=30.65|mean_us=40.37|max_us=92.25|stddev_us=6.49|p999_us=74.61|tail_ratio=1.62|cv=0.16|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=client|protocol=h1|client=reqwest|server=hyper|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=319.096|rps=12535.4|response_mbps=12.836|p50_us=78.79|p75_us=83.69|p90_us=88.75|p95_us=93.46|p99_us=107.18|min_us=60.67|mean_us=79.70|max_us=150.41|stddev_us=8.18|p999_us=129.97|tail_ratio=1.36|cv=0.10|samples=4000
RESULT|suite=compare|case=reqwest_client_to_courierust|layer=server|protocol=h1|client=reqwest|server=courierust|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=430.445|rps=9292.7|response_mbps=9.516|p50_us=106.32|p75_us=114.13|p90_us=122.97|p95_us=128.11|p99_us=138.38|min_us=75.74|mean_us=107.54|max_us=194.03|stddev_us=11.60|p999_us=173.09|tail_ratio=1.30|cv=0.11|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=server|protocol=h1|client=reqwest|server=hyper|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=324.934|rps=12310.2|response_mbps=12.606|p50_us=78.11|p75_us=85.29|p90_us=91.99|p95_us=99.22|p99_us=115.38|min_us=59.63|mean_us=81.19|max_us=322.93|stddev_us=10.82|p999_us=142.11|tail_ratio=1.48|cv=0.13|samples=4000
RESULT|suite=compare|case=courierust_client_to_hyper|layer=client|protocol=h1|client=courierust|server=hyper|payload=1k|bytes=1024|workers=8|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=8|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=33.827|rps=118247.7|response_mbps=121.086|p50_us=55.48|p75_us=78.20|p90_us=98.18|p95_us=115.99|p99_us=195.01|min_us=16.35|mean_us=62.90|max_us=807.88|stddev_us=42.77|p999_us=611.27|tail_ratio=3.52|cv=0.68|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=client|protocol=h1|client=reqwest|server=hyper|payload=1k|bytes=1024|workers=8|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=8|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=109.092|rps=36666.3|response_mbps=37.546|p50_us=212.53|p75_us=231.79|p90_us=254.53|p95_us=269.85|p99_us=338.36|min_us=69.61|mean_us=216.58|max_us=618.57|stddev_us=39.10|p999_us=593.44|tail_ratio=1.59|cv=0.18|samples=4000
RESULT|suite=compare|case=courierust_client_to_hyper|layer=client|protocol=h1|client=courierust|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=222.642|rps=17966.1|response_mbps=1177.425|p50_us=55.09|p75_us=56.74|p90_us=59.10|p95_us=61.67|p99_us=73.67|min_us=39.28|mean_us=55.62|max_us=126.13|stddev_us=4.42|p999_us=84.28|tail_ratio=1.34|cv=0.08|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=client|protocol=h1|client=reqwest|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=368.659|rps=10850.1|response_mbps=711.075|p50_us=89.53|p75_us=93.97|p90_us=102.59|p95_us=110.63|p99_us=124.18|min_us=74.54|mean_us=92.12|max_us=471.81|stddev_us=12.21|p999_us=206.64|tail_ratio=1.39|cv=0.13|samples=4000
RESULT|suite=compare|case=reqwest_client_to_courierust|layer=server|protocol=h1|client=reqwest|server=courierust|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=525.039|rps=7618.5|response_mbps=499.285|p50_us=129.85|p75_us=139.50|p90_us=149.52|p95_us=156.74|p99_us=173.91|min_us=94.54|mean_us=131.22|max_us=386.84|stddev_us=15.38|p999_us=224.50|tail_ratio=1.34|cv=0.12|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=server|protocol=h1|client=reqwest|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=386.821|rps=10340.7|response_mbps=677.688|p50_us=95.23|p75_us=100.98|p90_us=110.25|p95_us=118.00|p99_us=139.32|min_us=72.77|mean_us=96.65|max_us=208.47|stddev_us=11.96|p999_us=171.39|tail_ratio=1.46|cv=0.12|samples=4000
RESULT|suite=compare|case=courierust_client_to_hyper|layer=client|protocol=h2c|client=courierust|server=hyper|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=325.708|rps=12281.0|response_mbps=12.576|p50_us=80.13|p75_us=86.24|p90_us=93.35|p95_us=98.56|p99_us=112.72|min_us=57.04|mean_us=81.38|max_us=1115.66|stddev_us=20.12|p999_us=177.59|tail_ratio=1.41|cv=0.25|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=client|protocol=h2c|client=reqwest|server=hyper|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=396.304|rps=10093.2|response_mbps=10.335|p50_us=97.03|p75_us=104.96|p90_us=113.09|p95_us=120.21|p99_us=132.67|min_us=76.43|mean_us=99.00|max_us=1108.54|stddev_us=19.89|p999_us=172.26|tail_ratio=1.37|cv=0.20|samples=4000
RESULT|suite=compare|case=reqwest_client_to_courierust|layer=server|protocol=h2c|client=reqwest|server=courierust|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=361.468|rps=11066.0|response_mbps=11.332|p50_us=89.28|p75_us=96.36|p90_us=103.42|p95_us=108.64|p99_us=125.38|min_us=70.13|mean_us=90.30|max_us=167.25|stddev_us=10.95|p999_us=157.33|tail_ratio=1.40|cv=0.12|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=server|protocol=h2c|client=reqwest|server=hyper|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=379.324|rps=10545.1|response_mbps=10.798|p50_us=93.13|p75_us=99.89|p90_us=108.18|p95_us=114.13|p99_us=129.91|min_us=74.08|mean_us=94.76|max_us=211.18|stddev_us=11.14|p999_us=166.78|tail_ratio=1.39|cv=0.12|samples=4000
RESULT|suite=compare|case=courierust_h2_conn1xw32|layer=client|protocol=h2c|client=courierust|server=hyper|payload=1k|bytes=1024|workers=32|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=75.889|rps=52708.8|response_mbps=53.974|p50_us=553.18|p75_us=645.72|p90_us=770.63|p95_us=862.29|p99_us=1144.51|min_us=71.73|mean_us=578.16|max_us=2093.81|stddev_us=170.73|p999_us=1956.47|tail_ratio=2.07|cv=0.30|samples=4000
RESULT|suite=compare|case=courierust_h2_conn4xw8|layer=client|protocol=h2c|client=courierust|server=hyper|payload=1k|bytes=1024|workers=32|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=4|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=55.654|rps=71873.2|response_mbps=73.598|p50_us=384.20|p75_us=515.89|p90_us=638.85|p95_us=737.63|p99_us=1135.65|min_us=60.01|mean_us=409.54|max_us=1948.01|stddev_us=199.68|p999_us=1670.54|tail_ratio=2.96|cv=0.49|samples=4000
RESULT|suite=compare|case=courierust_h2_conn8xw4|layer=client|protocol=h2c|client=courierust|server=hyper|payload=1k|bytes=1024|workers=32|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=8|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=55.845|rps=71626.8|response_mbps=73.346|p50_us=385.46|p75_us=515.34|p90_us=633.62|p95_us=731.59|p99_us=933.68|min_us=46.73|mean_us=408.89|max_us=1402.91|stddev_us=179.97|p999_us=1228.30|tail_ratio=2.42|cv=0.44|samples=4000
RESULT|suite=compare|case=courierust_client_to_hyper|layer=client|protocol=h2c|client=courierust|server=hyper|payload=1k|bytes=1024|workers=8|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=8|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=69.134|rps=57859.0|response_mbps=59.248|p50_us=127.72|p75_us=158.90|p90_us=196.91|p95_us=226.39|p99_us=339.05|min_us=37.91|mean_us=134.11|max_us=689.53|stddev_us=57.48|p999_us=588.45|tail_ratio=2.65|cv=0.43|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=client|protocol=h2c|client=reqwest|server=hyper|payload=1k|bytes=1024|workers=8|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=8|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=108.645|rps=36817.3|response_mbps=37.701|p50_us=205.41|p75_us=251.80|p90_us=297.07|p95_us=326.87|p99_us=389.92|min_us=62.83|mean_us=212.98|max_us=584.06|stddev_us=64.26|p999_us=478.11|tail_ratio=1.90|cv=0.30|samples=4000
RESULT|suite=compare|case=courierust_client_to_hyper|layer=client|protocol=h2c|client=courierust|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=435.867|rps=9177.1|response_mbps=601.431|p50_us=105.28|p75_us=114.16|p90_us=120.40|p95_us=125.93|p99_us=140.51|min_us=84.00|mean_us=108.91|max_us=285.63|stddev_us=10.31|p999_us=195.22|tail_ratio=1.33|cv=0.09|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=client|protocol=h2c|client=reqwest|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=485.319|rps=8242.0|response_mbps=540.147|p50_us=118.70|p75_us=129.00|p90_us=139.85|p95_us=146.79|p99_us=163.17|min_us=90.18|mean_us=121.28|max_us=322.43|stddev_us=14.11|p999_us=179.37|tail_ratio=1.37|cv=0.12|samples=4000
RESULT|suite=compare|case=reqwest_client_to_courierust|layer=server|protocol=h2c|client=reqwest|server=courierust|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=465.266|rps=8597.2|response_mbps=563.429|p50_us=114.40|p75_us=123.48|p90_us=132.35|p95_us=139.06|p99_us=154.65|min_us=86.88|mean_us=116.27|max_us=203.41|stddev_us=12.93|p999_us=191.33|tail_ratio=1.35|cv=0.11|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=server|protocol=h2c|client=reqwest|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=494.507|rps=8088.9|response_mbps=530.111|p50_us=122.43|p75_us=130.96|p90_us=139.13|p95_us=144.61|p99_us=158.60|min_us=93.02|mean_us=123.58|max_us=181.59|stddev_us=12.23|p999_us=176.92|tail_ratio=1.30|cv=0.10|samples=4000
RESULT|suite=compare|case=courierust_h2c_large_body_to_hyper|layer=client|protocol=h2c|client=courierust|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=64|elapsed_ms=96.711|rps=661.8|response_mbps=43.369|p50_us=1483.17|p75_us=1539.42|p90_us=1624.76|p95_us=1812.00|p99_us=1876.43|min_us=1371.61|mean_us=1511.06|max_us=1878.88|stddev_us=111.78|p999_us=1878.88|tail_ratio=1.27|cv=0.07|samples=64
RESULT|suite=compare|case=reqwest_async_h2c_large_body_to_hyper|layer=client|protocol=h2c|client=reqwest-async|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=64|elapsed_ms=48.514|rps=1319.2|response_mbps=86.455|p50_us=750.39|p75_us=787.17|p90_us=825.84|p95_us=843.27|p99_us=855.84|min_us=683.56|mean_us=757.96|max_us=861.31|stddev_us=43.69|p999_us=861.31|tail_ratio=1.14|cv=0.06|samples=64
RESULT|suite=compare|case=courierust_h3_client_to_courierust|layer=client|protocol=h3|client=courierust-h3|server=courierust-h3|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=609.945|rps=6558.0|response_mbps=6.715|p50_us=152.37|p75_us=162.19|p90_us=172.31|p95_us=179.12|p99_us=199.52|min_us=107.95|mean_us=152.44|max_us=487.39|stddev_us=18.57|p999_us=269.56|tail_ratio=1.31|cv=0.12|samples=4000
RESULT|suite=compare|case=quinn_h3_client_to_courierust|layer=client|protocol=h3|client=quinn+h3|server=courierust-h3|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=quinn_single_connection|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=677.091|rps=5907.6|response_mbps=6.049|p50_us=167.07|p75_us=177.74|p90_us=188.58|p95_us=195.20|p99_us=215.31|min_us=130.79|mean_us=169.15|max_us=484.94|stddev_us=16.64|p999_us=269.04|tail_ratio=1.29|cv=0.10|samples=4000
RESULT|suite=compare|case=courierust_h3_client_to_courierust|layer=client|protocol=h3|client=courierust-h3|server=courierust-h3|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=2433.243|rps=1643.9|response_mbps=107.734|p50_us=598.80|p75_us=612.56|p90_us=631.24|p95_us=739.21|p99_us=811.33|min_us=512.65|mean_us=608.25|max_us=1079.47|stddev_us=48.35|p999_us=915.04|tail_ratio=1.35|cv=0.08|samples=4000
RESULT|suite=compare|case=quinn_h3_client_to_courierust|layer=client|protocol=h3|client=quinn+h3|server=courierust-h3|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=quinn_single_connection|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=2960.251|rps=1351.2|response_mbps=88.555|p50_us=764.56|p75_us=791.62|p90_us=811.96|p95_us=860.22|p99_us=959.10|min_us=544.81|mean_us=739.96|max_us=1118.54|stddev_us=87.88|p999_us=1053.78|tail_ratio=1.25|cv=0.12|samples=4000
total: complete
~~~

### Concurrency
~~~text
CONCURRENCY|case=idle_partial_herd|model=event|platform=linux|status=probe_ok|event_enabled=true|connections=200|worker_threads=2|probe_us=1365.08
CONCURRENCY|case=idle_partial_herd|model=pool|platform=linux|status=probe_blocked|event_enabled=false|connections=200|worker_threads=2|probe_us=na|error=read: Resource temporarily unavailable (os error 11)
CONCURRENCY|case=slow_sender_herd|model=event|platform=linux|status=ok|event_enabled=true|connections=16|worker_threads=2|completed=16|probe_status=probe_ok|probe_us=120.49|byte_delay_us=10000|wall_ms=394.44
CONCURRENCY|suite=complete
~~~

### HTTP/3 (QUIC)
~~~text
RESULT|suite=h3|case=h3_connect|protocol=h3|mode=connect|payload=empty|bytes=0|workers=1|requests=1|connect_ms=4.108
RESULT|suite=h3|case=h3_sequential|protocol=h3|mode=reuse|payload=empty|bytes=0|workers=1|requests=1000|elapsed_ms=132.640|rps=7539.2|p50_us=134.4|p75_us=141.1|p90_us=149.6|p99_us=169.6|min_us=91.83|mean_us=132.58|max_us=440.31|stddev_us=17.62|p999_us=186.14|tail_ratio=1.26|cv=0.13|samples=1000
RESULT|suite=h3|case=h3_parallel|protocol=h3|mode=reuse|payload=empty|bytes=0|workers=8|requests=1000|elapsed_ms=34.165|rps=29269.9|p50_us=262.6|p75_us=281.3|p90_us=302.4|p99_us=370.9|min_us=131.52|mean_us=265.71|max_us=803.97|stddev_us=42.57|p999_us=766.95|tail_ratio=1.41|cv=0.16|samples=1000
~~~

### Reactor / Connection / Stream Evidence
~~~text
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=1k|workers=1|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=1|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=4253|h2_write_syscalls=4003|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=1k|workers=1|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=4003|h2_write_syscalls=4253|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=1k|workers=8|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=1|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=900|h2_write_syscalls=649|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=1k|workers=8|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=649|h2_write_syscalls=899|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=1k|workers=32|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=1|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=360|h2_write_syscalls=389|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=1k|workers=32|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=385|h2_write_syscalls=366|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=64k|workers=1|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=8145|h2_write_syscalls=16008|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=64k|workers=1|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=20186|h2_write_syscalls=8144|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=64k|workers=8|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=1651|h2_write_syscalls=16009|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=64k|workers=8|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=17061|h2_write_syscalls=1919|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=64k|workers=32|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=460|h2_write_syscalls=16011|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=64k|workers=32|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=16561|h2_write_syscalls=1090|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
~~~

### Cross-Machine
~~~text
NETWORK|role=client|status=not_configured|target_scope=remote|reason=COURIERUST_REMOTE_URL_not_set
~~~

### Fuzz
~~~text
FUZZ|target=h2_frame|status=ok|runs=smoke|duration_s=72|corpus=fuzz/corpus/h2_frame|reason=command_exit_0
FUZZ|target=hpack_block|status=ok|runs=smoke|duration_s=22|corpus=fuzz/corpus/hpack_block|reason=command_exit_0
FUZZ|target=h1_request|status=ok|runs=smoke|duration_s=21|corpus=fuzz/corpus/h1_request|reason=command_exit_0
FUZZ|target=h2_connection|status=ok|runs=smoke|duration_s=24|corpus=fuzz/corpus/h2_connection|reason=command_exit_0
~~~

### Interop Validation
~~~text
courierust vs mainstream HTTP stack — interop validation
INTEROP|case=courierust_client_h1_to_hyper_h1|ok
INTEROP|case=courierust_client_h2c_to_hyper_h2|ok
INTEROP|case=hyper_client_h1_to_courierust_h1|ok
INTEROP|case=hyper_client_h2c_to_courierust_h2|ok
INTEROP|case=reqwest_h1_to_courierust_h1|ok
INTEROP|case=reqwest_h2c_to_courierust_h2|ok
INTEROP|case=courierust_h2c_large_body_to_hyper_h2|ok
INTEROP|case=courierust_h1_slow_reader_to_hyper_h1|ok
INTEROP|case=tls_rejects_untrusted_certificate|ok
INTEROP|case=tls_rejects_hostname_mismatch|ok
INTEROP|case=tls_alpn_downgrade_to_h1|ok
INTEROP|case=tls_h2_alpn_rejected|ok
INTEROP|case=h1_connection_close_honored|ok
INTEROP|case=courierust_h2_client_survives_peer_goaway|ok
INTEROP|case=h3_self_roundtrip|ok
INTEROP|case=h3_self_connection_reuse|ok
INTEROP|case=h3_self_large_body_flow_control|ok
INTEROP|case=h3_self_multiplex_concurrent|ok
INTEROP|all_cases_passed
~~~
### TLS Interop
~~~text
No output was captured for this benchmark.
~~~