These are the plain-text RFCs colibri is written from, copied unmodified from
https://www.rfc-editor.org/rfc/rfcNNNN.txt on 2026-09-16. CLAUDE.md non-negotiable 10 says to
read the RFCs themselves rather than a summary or another implementation's source; these copies
are what that sentence points at, so every reader works from the same bytes.
SHA256SUMS records each file's checksum. Check that nothing was edited with:
cd docs/rfcs && shasum -a 256 -c SHA256SUMSRFC 7540 is deliberately absent. RFC 9113 obsoletes it, and colibri never reads or cites it.
RFC 8446 is absent for the same reason. RFC 9846, the July 2026 revision of TLS 1.3, obsoletes it. The wire format and the version codepoint are unchanged, but the sections are renumbered and some requirements are tightened, so a section number copied from RFC 8446 may name a different rule or none at all.
| RFC | Title | What colibri uses it for |
|---|---|---|
| 9110 | HTTP Semantics | The semantics core h2 and h3 share (decision 15) |
| 5234 | Augmented BNF for Syntax Specifications: ABNF | The core rules RFC 9110 §2.1 includes |
| 7405 | Case-Sensitive String Support in ABNF | The %s prefix RFC 9110 §2.1 and RFC 9112 §1.2 add to RFC 5234: %s"HTTP" matches only as written, and a quoted string with no prefix matches in any case (decision 15), copied on 2026-09-29 |
| 9111 | HTTP Caching | Not implemented; its conformance bar is zero (decision 16) |
| 9112 | HTTP/1.1 | h11 (decisions 88 and 91) |
| 9931 | Security Considerations for Optimistic Protocol Transitions in HTTP/1.1 | What h11 does with the octets that follow a CONNECT or an Upgrade request before its answer (decision 109), copied on 2026-09-29 |
| 6585 | Additional HTTP Status Codes | The 431 an h11 server answers a field section too large with (decision 92), copied on 2026-09-25 |
| 3986 | Uniform Resource Identifier (URI): Generic Syntax | The grammar of Host and of the request-target that RFC 9110 §4 and RFC 9112 §3.2 cite, copied on 2026-09-25 |
| 9113 | HTTP/2 | h2 |
| 7541 | HPACK: Header Compression for HTTP/2 | hpack, and the Huffman code and prefixed integer in wire (decision 11) |
| 9114 | HTTP/3 | h3 |
| 9204 | QPACK: Field Compression for HTTP/3 | qpack |
| 7838 | HTTP Alternative Services | The client learns h3 from a TCP response's Alt-Svc (decision 100), copied on 2026-09-28 |
| 9460 | Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records) | The HTTPS record's alpn and port, which the client takes as values (decision 100), copied on 2026-09-28 |
| RFC | Title | What colibri uses it for |
|---|---|---|
| 8999 | Version-Independent Properties of QUIC | The version-independent packet reader (invariant 22) |
| 9000 | QUIC: A UDP-Based Multiplexed and Secure Transport | quic, and the variable-length integer in wire |
| 9001 | Using TLS to Secure QUIC | The TLS provider's QUIC mode and crypto.Suite (decisions 8 and 9) |
| 9002 | QUIC Loss Detection and Congestion Control | Loss recovery, design §8 step 10 |
| 9369 | QUIC Version 2 | Version 2 beside version 1, for #54, copied on 2026-09-29 |
| 9368 | Compatible Version Negotiation for QUIC | The version_information transport parameter RFC 9369 §4 requires, copied on 2026-09-29 |
| RFC | Title | What colibri uses it for |
|---|---|---|
| 9846 | The Transport Layer Security (TLS) Protocol Version 1.3 | The semantics of the TLS provider (decision 8); obsoletes RFC 8446 |
| 7301 | Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension | Negotiating h2 and h3; the ask to chapulin (decision 10) |
These six are in compression/, copied unmodified from the same address: the first three on
2026-09-25 and the other three on 2026-09-30. RFC 9112 §7.2 defines the deflate and gzip
transfer codings through RFC 9110 §8.4.1, and each coding names one of these formats. h11 decodes
both through stdx's decoders (decision 90), as the owner ruled in
#60. The client decodes the zstd and br content codings
through stdx's decoders too (decision 101 as amended, #80).
| RFC | Title | What colibri uses it for |
|---|---|---|
| 1951 | DEFLATE Compressed Data Format Specification version 1.3 | The compressed stream inside both codings |
| 1950 | ZLIB Compressed Data Format Specification version 3.3 | The wrapper of the deflate coding, with its Adler-32 check |
| 1952 | GZIP file format specification version 4.3 | The wrapper of the gzip coding, with its CRC-32 check |
| 7932 | Brotli Compressed Data Format | The br content coding (§13) and its window (§9.1) |
| 8878 | Zstandard Compression and the 'application/zstd' Media Type | The zstd content coding (§7.2) |
| 9659 | Window Sizing for Zstandard Content Encoding | The zstd coding's window of 8 MB (§3); updates RFC 8878 |
These three are Internet-Drafts, not RFCs, in qlog/, copied unmodified on 2026-09-27 from
https://www.ietf.org/archive/id/<name>.txt, which keeps each revision unchanged. The owner ruled
them in until the RFCs publish (decision 102). Each events draft's §2.1 has an
implementation of a draft name its event schema with the draft number, so colibri writes
urn:ietf:params:qlog:events:quic-13 and urn:ietf:params:qlog:events:http3-13.
| Draft | Title | What colibri uses it for |
|---|---|---|
| main-schema-14 | qlog: Structured Logging for Network Protocols | The file header, the event envelope and the JSON Text Sequences serialization of qlog |
| quic-events-13 | QUIC event definitions for qlog | The events quic logs |
| h3-events-13 | HTTP/3 qlog event definitions | The events h3 logs |
qvis, the viewer most qlog users open, reads the older qlog 0.3 alone. tools/qlog_to_qvis.py
rewrites a colibri log into that form (decision 102 as amended), from the three drafts that define
it, copied the same way on 2026-09-28. colibri itself follows none of them.
| Draft | Title | What colibri uses it for |
|---|---|---|
| main-schema-02 | Main logging schema for qlog | The qlog 0.3 header tools/qlog_to_qvis.py writes |
| quic-events-02 | QUIC event definitions for qlog | The QUIC event names and members it writes |
| h3-events-02 | HTTP/3 and QPACK qlog event definitions | The HTTP/3 event names and members it writes |
The main schema's §11.2 writes a log as JSON Text Sequences, so the two RFCs that define them are here too, copied from rfc-editor.org on the same day.
| RFC | Title | What colibri uses it for |
|---|---|---|
| 7464 | JavaScript Object Notation (JSON) Text Sequences | The record separator and line feed around each record |
| 8259 | The JavaScript Object Notation (JSON) Data Interchange Format | The objects, strings and numbers inside a record |
The WHATWG URL Standard is not an RFC. It is the source of the name=value&name=value form of a
query and of + as a space, which no RFC defines: RFC 3986 §3.4 says only where a query starts and
ends. The owner ruled it a source on 2026-10-21, beside qlog's drafts (decision 127).
whatwg/url.bs is its Bikeshed source, copied unmodified on 2026-10-25 from
https://raw.githubusercontent.com/whatwg/url/845bafca22fb0c5a42c4bf384a9bdea525a2f10d/url.bs, the
commit of 2026-10-19. A citation names its section by the id the source gives it, such as
urlencoded-parsing.
| Source | Title | What colibri uses it for |
|---|---|---|
| url.bs | URL Standard | The application/x-www-form-urlencoded parser (urlencoded-parsing), which the server's query reader follows |
Percent-decoding itself is RFC 3986 §2.1, which colibri cites for it.
Each is read so that saying no is done correctly on the wire.
| RFC | Title | What colibri uses it for |
|---|---|---|
| 9218 | Extensible Prioritization Scheme for HTTP | Ignored, beyond the parsing RFC 9113 still requires (decision 18) |
| 8441 | Bootstrapping WebSockets with HTTP/2 | Not implemented (decision 19) |
| 9221 | An Unreliable Datagram Extension to QUIC | Not implemented (decision 22) |