{"host":"conformance.pqcrypta.com","how":"Connect to each port in turn. To collect results under one session, use SNI <session>.<host>; obtain a session from /session.","tests":[{"class":"correctness","expectation":"Abandon the connection attempt, or retry with a version both ends support. §6.2 requires a client that supports only one version to abandon it rather than persist.","id":"q-version-negotiation","layer":"quic","port":4460,"spec":"RFC 9000 §6","title":"Version Negotiation offering a reserved version alongside v1"},{"class":"correctness","expectation":"Echo the Retry token in a second Initial packet and complete the handshake.","id":"q-retry","layer":"quic","port":4461,"spec":"RFC 9000 §8.1.2","title":"Retry packet for source-address validation"},{"class":"extensibility","expectation":"Ignore the unknown parameter and complete the handshake normally.","id":"q-reserved-transport-param","layer":"quic","port":4462,"spec":"RFC 9000 §18.1","title":"Reserved transport parameter (31·N+27)"},{"class":"correctness","expectation":"Close the connection with FRAME_ENCODING_ERROR. Unlike HTTP/3, QUIC reserves no ignorable frame types — §12.4 makes an unknown frame a connection error, so ignoring it is the failure here.","id":"q-reserved-frame","layer":"quic","port":4463,"spec":"RFC 9000 §12.4","title":"Unknown frame type in a 1-RTT packet"},{"class":"resilience","expectation":"Adopt the new connection ID, retire the old one, and stay connected.","id":"q-cid-rotation","layer":"quic","port":4464,"spec":"RFC 9000 §5.1","title":"NEW_CONNECTION_ID followed by RETIRE_CONNECTION_ID"},{"class":"correctness","expectation":"Recognise the token and close immediately. The packet cannot be authenticated, so there is nothing to reply with and nothing to report to the peer — the connection simply ends.","id":"q-stateless-reset","layer":"quic","port":4465,"spec":"RFC 9000 §10.3","title":"Stateless reset"},{"class":"discretionary","expectation":"Respect the limit. Announcing the stall with DATA_BLOCKED or STREAM_DATA_BLOCKED is a SHOULD in §4.1, not a MUST, so a client that stays silent is still conformant.","id":"q-flow-control","layer":"quic","port":4466,"spec":"RFC 9000 §4","title":"Deliberately tight MAX_DATA and MAX_STREAM_DATA"},{"class":"discretionary","expectation":"Negotiate the extension, or ignore it. Either is correct; failing is not.","id":"q-ack-frequency","layer":"quic","port":4467,"spec":"draft-ietf-quic-ack-frequency","title":"ACK Frequency extension offered"},{"class":"correctness","expectation":"Report the ECN counts back in ACK_ECN frames.","id":"q-ecn","layer":"quic","port":4468,"spec":"RFC 9000 §13.4","title":"Packets marked ECT(0)"},{"class":"resilience","expectation":"Detect the black hole, probe down to a working size, and keep the connection.","id":"q-pmtu-blackhole","layer":"quic","port":4469,"spec":"RFC 9000 §14, RFC 8899","title":"Path MTU black hole above a threshold"},{"class":"correctness","expectation":"Reply with PATH_RESPONSE carrying the identical 8-byte payload.","id":"q-path-challenge","layer":"quic","port":4470,"spec":"RFC 9000 §8.2","title":"Server-initiated PATH_CHALLENGE"},{"class":"resilience","expectation":"Reset the state of every stream, including application state bound to them. Section 4.6.2 requires the reset because a rejected 0-RTT means every assumed connection characteristic may have been wrong. It does not require retransmission, which is the application concern, not QUIC's.","id":"q-zero-rtt-reject","layer":"quic","port":4471,"spec":"RFC 9001 §4.6.2","title":"0-RTT rejected after the client sends early data"},{"class":"discretionary","expectation":"Use the additional path, or decline it cleanly. Do not abort the connection.","id":"q-multipath","layer":"quic","port":4472,"spec":"draft-ietf-quic-multipath","title":"A second path offered mid-connection"},{"class":"extensibility","expectation":"Ignore the unknown setting and complete the request.","id":"h-grease-settings","layer":"http3","port":4473,"spec":"RFC 9114 §7.2.4.1","title":"Reserved SETTINGS identifier (0x1f·N+0x21)"},{"class":"extensibility","expectation":"Skip the frame using its length and read the response that follows.","id":"h-grease-frame","layer":"http3","port":4474,"spec":"RFC 9114 §7.2.8","title":"Reserved frame type on the response stream"},{"class":"extensibility","expectation":"Abort reading the stream or discard it — §6.2.3 permits either. What it forbids is treating it as meaningful, or as fatal to the connection.","id":"h-reserved-uni-stream","layer":"http3","port":4475,"spec":"RFC 9114 §6.2.3","title":"Unidirectional stream with a reserved stream type"},{"class":"discretionary","expectation":"Either reject with H3_SETTINGS_ERROR or ignore the repeat — the specification says a receiver MAY treat this as an error, so both are conformant.","id":"h-duplicate-setting","layer":"http3","port":4476,"spec":"RFC 9114 §7.2.4","title":"SETTINGS containing the same identifier twice"},{"class":"correctness","expectation":"Close the connection with H3_FRAME_UNEXPECTED.","id":"h-control-frame-unexpected","layer":"http3","port":4477,"spec":"RFC 9114 §7.2.1","title":"A DATA frame on the control stream"},{"class":"correctness","expectation":"Close the connection with H3_MISSING_SETTINGS.","id":"h-missing-settings","layer":"http3","port":4478,"spec":"RFC 9114 §6.2.1","title":"Control stream whose first frame is not SETTINGS"},{"class":"correctness","expectation":"Close the connection with H3_STREAM_CREATION_ERROR.","id":"h-second-control-stream","layer":"http3","port":4479,"spec":"RFC 9114 §6.2.1","title":"A second control stream opened by the server"},{"class":"interoperability","expectation":"Apply the encoder-stream insertions and decode the headers correctly.","id":"h-qpack-dynamic-table","layer":"http3","port":4480,"spec":"RFC 9204 §4.3.3, §4.5.2","title":"Field lines referencing dynamic table insertions"},{"class":"interoperability","expectation":"Decode without error. Padding of up to 7 bits is legal, not corruption.","id":"h-qpack-huffman","layer":"http3","port":4481,"spec":"RFC 9204 §4.1.2, RFC 7541 §5.2","title":"Huffman-coded field lines with maximal padding"},{"class":"interoperability","expectation":"Handle it as an error against that one request, not the whole connection.","id":"h-oversized-field-section","layer":"http3","port":4482,"spec":"RFC 9114 §4.2.2","title":"Field section larger than the client's advertised maximum"},{"class":"interoperability","expectation":"Deliver the trailers to the application after the body completes.","id":"h-trailers","layer":"http3","port":4483,"spec":"RFC 9114 §4.1","title":"Trailing field section after the body"},{"class":"resilience","expectation":"Treat 103 as informational and keep reading for the final response.","id":"h-early-hints","layer":"http3","port":4484,"spec":"RFC 8297","title":"103 Early Hints before the final response"},{"class":"resilience","expectation":"Stop opening requests, finish those in flight, and retry idempotent ones elsewhere.","id":"h-goaway","layer":"http3","port":4485,"spec":"RFC 9114 §5.2","title":"GOAWAY sent mid-connection"},{"class":"correctness","expectation":"Reject with H3_FRAME_UNEXPECTED. MAX_PUSH_ID travels client to server only, so a server sending one is using a frame in a direction the specification does not allow.","id":"h-max-push-id","layer":"http3","port":4486,"spec":"RFC 9114 §7.2.7","title":"MAX_PUSH_ID sent by the server"}]}