HTTPutf8Feed builds its header slice from the same pointer twice — {http->headers[0], *http->headers} where headers is u8cssp, and a[0] == *a in C — so the header loop is dead code and every serialized message loses all headers (no Host, no Content-Length). Verified empirically by the 2026-07-07 reviewer: a parsed 2-header request re-serialized as "GET / HTTP/1.1rnrn". No test covers the Feed direction.
HTTP.c:76-77 — u8css hdrs = {http->headers[0], *http->headers}; yields {p, p}, $len == 0, loop never entered. Intended: {http->headers[0], http->headers[1]}.HTTP.lex:41 — ReasonPhrase = text requires ≥1 char; RFC 7230 allows an empty reason-phrase ("HTTP/1.1 200 rn", common from proxies) → HTTPBAD on legal responses.HTTP.c:93 HTTPfind(u8cs *value, u8cs key, ...) — immutable needle typed as consumable u8cs, should be u8csc (abc.mkd: consumption is signalled by type).HTTP.c:86 — hdrs[0] += 2; raw slice-pointer arithmetic; use the typed movers. HTTPutf8Drain (HTTP.c:39) is named Drain but never advances the caller's slice — naming/contract drift.fbreak where the committed generated file has goto _out (ABC-017); regen must not silently change semantics.?3b156ca0 "ABC-011: HTTP serializer emits headers; empty reason ok". Suite 52/52 with WITH_INET=ON (baseline 46/46 + HTTPtest red once enabled); orchestrator re-verified suite + fixes.