Milestones
List view
ICMP errors reach the matching TCP connection; ECN behaviour required by the chosen baseline.
No due date•2/2 issues closed⚠ layers.md question 2 — does our state machine do what the RFC says it must — could not be answered until ADR 0024 named the baseline. ⚠ RFC 9293 Appendix B is a requirement summary with 119 unique IDs (69 MUST, 31 SHLD, 1 REC, 18 MAY) across 19 sections, and this stack has never been held to it. ⚠ Split by section so each issue can be carried to the end; a verdict per requirement, with the quotation.
No due date•9/9 issues closed⚠ CLAUDE.md §0: both halves matter, and what proves general belongs in claude-dev-template. ⚠ The template's own bar is that a rule holds in BOTH projects — one domain is a guess. ⚠ So this milestone records here, with grounds and walls, what the last four milestones cost, in the form the template's §5 asks for: the row stays where it happened.
No due date•1/1 issues closed⚠ ADR 0024 made RFC 9293 (STD 7) the normative baseline. ⚠ Measured the same day: an ECN-capable peer's first SYN is thrown away as malformed, and the connection only opens because Linux falls back. ⚠ This milestone is where the claims recorded as ours are re-read against the new baseline, one at a time, with a verdict each.
No due date•3/3 issues closed⚠ The window is a promise this stack keeps in taking and not in telling. ⚠ Measured 2026-08-29: a peer that honours a window of 1 sends one octet, seven times, and its Send-Q stays at 5 for twelve seconds. ⚠ This milestone is where data is acknowledged at the time it is taken, and where the window becomes a number worth advertising.
No due date•5/5 issues closedThe kernel's own close() completes and ss shows the connection gone. Measured before starting, 2026-08-29: with a window of 0 the kernel never sends a FIN, only bare probes; with a window of 1 the FIN arrives immediately after close() and is retransmitted five times because nothing acknowledges it. So opening the window is a precondition for closing at all, and the order of this milestone is forced.
No due date•4/4 issues closedA clock, a retransmission timer, and giving up. ADR 0015 recorded having no clock as a deliberate gap for the handshake only, and said plainly it stops holding the moment data or closing is involved. This milestone removes that premise. Measured before starting, 2026-08-28: a SYN crafted from a source MAC nobody owns leaves a connection in SYN-RECEIVED with nothing answering and no RST from the kernel, so a retransmission is observable.
No due date•4/4 issues closedA SYN from the Linux kernel gets a SYN-ACK, its ACK establishes the connection, and ss -tn says ESTABLISHED. The verdict is the kernel's, not ours. Measured before starting, 2026-08-28: the kernel already sends us SYNs and this stack answers 'it carries protocol 6, which is not one we act on' — 6 of them in one connect(), the same seq retransmitted.
No due date•5/5 issues closedOur own code answers an ICMP echo request from the Linux kernel, and ping says 0% packet loss. ⚠ The checksum is the subject: a stack that answers a ping while computing it wrong still answers the ping (CLAUDE.md §1).
No due date•4/4 issues closedThe stack replies to an ARP request the Linux kernel put on the wire, and the kernel's neighbour table shows our hardware address. ⚠ Not answering a ping — that is the milestone after this one.
No due date•5/5 issues closed