Every anomaly the server will emit on request. Each names the clause it is judged against and the class of behaviour that clause requires — which is not the same everywhere: some of these a client must ignore, some it must reject with a specific code, and some it may answer either way.
- Version Negotiation offering a reserved version alongside v1 7 Pass0 Fail0 Inconclusive
- Retry packet for source-address validation 7 Pass0 Fail0 Inconclusive
- Reserved transport parameter (31·N+27) 7 Pass0 Fail0 Inconclusive
- Unknown frame type in a 1-RTT packet 6 Pass1 Fail0 Inconclusive
- NEW_CONNECTION_ID followed by RETIRE_CONNECTION_ID 1 Pass0 Fail6 Inconclusive
- Stateless reset 6 Pass1 Fail0 Inconclusive
- Deliberately tight MAX_DATA and MAX_STREAM_DATA 7 Pass0 Fail0 Inconclusive
- ACK Frequency extension offered 7 Pass0 Fail0 Inconclusive
- Packets marked ECT(0) 2 Pass0 Fail5 Inconclusive
- Path MTU black hole above a threshold 7 Pass0 Fail0 Inconclusive
- Server-initiated PATH_CHALLENGE 7 Pass0 Fail0 Inconclusive
- 0-RTT rejected after the client sends early data 0 Pass0 Fail7 Inconclusive
- A second path offered mid-connection 7 Pass0 Fail0 Inconclusive
- Spontaneous 1-RTT key update 7 Pass0 Fail0 Inconclusive
- Stream limits set to the minimum a request needs 7 Pass0 Fail0 Inconclusive
- One datagram in twelve dropped once the path is established 7 Pass0 Fail0 Inconclusive
- Datagrams arriving from a second server address 7 Pass0 Fail0 Inconclusive
- Transport parameter carrying a value the specification forbids 3 Pass3 Fail1 Inconclusive
- 425 (Too Early) in answer to a request sent as early data 0 Pass0 Fail7 Inconclusive
- Path marking packets CE, not just ECT(0) 2 Pass0 Fail5 Inconclusive
- A second key update after the first is acknowledged 7 Pass0 Fail0 Inconclusive
- No stream credit at first, then MAX_STREAMS mid-connection 6 Pass0 Fail1 Inconclusive
- Reserved SETTINGS identifier (0x1f·N+0x21) 7 Pass0 Fail0 Inconclusive
- Reserved frame type on the response stream 7 Pass0 Fail0 Inconclusive
- Unidirectional stream with a reserved stream type 7 Pass0 Fail0 Inconclusive
- SETTINGS containing the same identifier twice 7 Pass0 Fail0 Inconclusive
- A DATA frame on the control stream 6 Pass0 Fail1 Inconclusive
- Control stream whose first frame is not SETTINGS 6 Pass0 Fail1 Inconclusive
- A second control stream opened by the server 6 Pass0 Fail1 Inconclusive
- Field lines referencing dynamic table insertions 0 Pass0 Fail7 Inconclusive
- Huffman-coded field lines with maximal padding 7 Pass0 Fail0 Inconclusive
- Field section larger than the client's advertised maximum 7 Pass0 Fail0 Inconclusive
- Trailing field section after the body 7 Pass0 Fail0 Inconclusive
- 103 Early Hints before the final response 5 Pass2 Fail0 Inconclusive
- GOAWAY sent mid-connection 6 Pass1 Fail0 Inconclusive
- MAX_PUSH_ID sent by the server 5 Pass0 Fail2 Inconclusive
- SETTINGS frame on a request stream 6 Pass0 Fail1 Inconclusive
- DATA frame before any HEADERS on the response stream 5 Pass1 Fail1 Inconclusive
- CANCEL_PUSH for a push ID that was never promised 1 Pass2 Fail4 Inconclusive
- Field section that blocks until the encoder stream catches up 0 Pass0 Fail7 Inconclusive
- Response stream reset mid-body with H3_REQUEST_CANCELLED 7 Pass0 Fail0 Inconclusive
- PRIORITY_UPDATE sent by the server 7 Pass0 Fail0 Inconclusive
- SETTINGS_ENABLE_CONNECT_PROTOCOL with a value outside 0 and 1 7 Pass0 Fail0 Inconclusive
- PUSH_PROMISE for a push the client never allowed 0 Pass5 Fail2 Inconclusive
- SETTINGS_H3_DATAGRAM with a value that is neither 0 nor 1 4 Pass1 Fail2 Inconclusive
- Encoder stream setting a dynamic table capacity above the client's limit 0 Pass0 Fail7 Inconclusive
- A second GOAWAY naming a larger identifier than the first 4 Pass1 Fail2 Inconclusive
- Push stream opened for a push nobody allowed 2 Pass2 Fail3 Inconclusive
- Field line indexing a static table entry that does not exist 5 Pass0 Fail2 Inconclusive
- Datagrams delivered out of order 7 Pass0 Fail0 Inconclusive
- Encoder instruction naming a static index that does not exist 3 Pass0 Fail4 Inconclusive
- Server negotiates only the post-quantum hybrid X25519MLKEM768 5 Pass0 Fail0 Inconclusive2 Not run
- Server negotiates only classical X25519 against a hybrid offer 6 Pass0 Fail1 Inconclusive
- Hybrid key share large enough to split the Initial across packets 5 Pass0 Fail0 Inconclusive2 Not run
- Server selects a key exchange group the client never offered 0 Pass0 Fail5 Inconclusive2 Not run
- Hybrid key share with an intact X25519 half and a corrupt ML-KEM half 0 Pass0 Fail5 Inconclusive2 Not run
- GREASE named group a client must tolerate 0 Pass0 Fail5 Inconclusive2 Not run
What this suite is · The full grid · All clients · All tests · Findings