The vendored serialize moves from 1.6.0 to v1.15.0, byte-for-byte as upstream ships it (#334, #336). Nine minor versions of upstream's optimization work now serialize yojimbo's packets: the inlined write and read spines, word-wise WriteBytes (one flush, one bulk copy, one tail reload), and the precomputed compressed-float entry points that pay the per-declaration quantization arithmetic once instead of at every call.
The hardening work rides along. The compressed-float roundings are now pinned in-source with an optimization barrier, so the wire bytes are identical under every -ffp-contract setting — -ffp-contract=off remains the build's standing policy, belt and braces, and BUILDING.md describes the current arrangement. The normative integer clamp closes the top-of-range case where the old writer emitted a code its own reader rejected. The string reader refuses malformed payloads, degenerate ranges (min == max) serialize, and serialize's conformance battery runs inside yojimbo's own test suite.
The wire bits do not move: measured by regenerating the committed conformance corpus under both serialize versions (byte-identical, and identical to what is committed) and by a primitive-sweep differential across the full serialize vocabulary with a negative control proving the harness discriminates. Existing yojimbo 1.10.x peers interoperate with 1.11.0 on every path.
The structured connection fuzzer now generates write-side strings that conform to the writer's UTF-8 contract, mirroring serialize's own fuzzer; arbitrary bytes still exercise the reader's refusal path through the raw-packet target.