Severity: high · Kind: harness · Call: ours-to-fix · Affected repos: serialize (owner of tools/conformance), serialize.c, serialize.go, serialize.rs, serialize.cs
Filed on this repo because the checker lives here (tools/conformance) and the fix direction is to own the vectors at the spec and generate them outward; the four ports are affected by its absence.
What is wrong
The Go conformance checker that replaced the Python one still cannot detect the class it was written for: its compressed_float check pins 5.0 over [0,10] at res 0.01 — 0.5 × 1000 = 500 exactly, a value float32, double and a fused multiply-add all agree on. It also checks none of the refusals STANDARD.md requires ("an implementation conforms when it reproduces every vector byte for byte AND refuses everything this document says must be refused" — the checker only does the first half), nothing about reader arithmetic, over-wide serialize_bits, or the degenerate fixed range. And it exists in only one of five repos: the four ports run only a text-diff job proving their copy of the DOCUMENT is identical — nothing proves their BYTES decode from it.
How it manifests
A port can pass every gate it has while quantizing in double, fusing the multiply-add, or accepting streams the spec says must be refused. serialize.c partially compensates with make diff against the C++ library — a comparison against an implementation, which the standing ruling says is not the authority. Two ports (Go, C#) have additionally never executed their golden on a big-endian target, so the host-to-network path there is asserted by construction rather than by execution.
Evidence
VERIFIED READ on serialize main ae78867. The Python checker is GONE and the Go replacement is live (tools/conformance/{README.md,go.mod,verify_standard.go}), so the 'checker cannot fail' finding about the five-tier ladder is CLOSED. What remains: verify_standard.go:340 — c.eqTol("compressed_float", float64(rd(bitsRequired(0, int64(mx))))/mx*10.0, 5.0, 1e-4). Over [0,10] at res 0.01, maxIntegerValue = 1000 and 5.0 normalizes to 0.5, so 0.5 × 1000 = 500 exactly — float32, double and a fused multiply-add all produce 500. Coverage: a find over all five checkouts for conformance/verify_standard hits only serialize (local checkout)/tools/conformance; serialize.c, .go, .rs and .cs have none — they run only a text-diff job ('STANDARD.md matches upstream').
Fix direction
Own the conformance vectors at the spec and generate them into five languages so drift becomes impossible rather than a rule people follow. The checker is standard-library-only Go and reads its vectors as data, so porting is mechanical. Import the discriminating battery from serialize.c/test/diff3_c.c, add refusal cases, and add a big-endian emulation leg for Go and C#.
Not blocked on any DECISION issue (though the refusal cases will want the open DECISION forks answered to know what must be refused).
Part of the 2026-08-15 estate known-issues register (index issue on mas-bandwidth/schema).
Severity: high · Kind: harness · Call: ours-to-fix · Affected repos: serialize (owner of tools/conformance), serialize.c, serialize.go, serialize.rs, serialize.cs
Filed on this repo because the checker lives here (tools/conformance) and the fix direction is to own the vectors at the spec and generate them outward; the four ports are affected by its absence.
What is wrong
The Go conformance checker that replaced the Python one still cannot detect the class it was written for: its compressed_float check pins 5.0 over [0,10] at res 0.01 — 0.5 × 1000 = 500 exactly, a value float32, double and a fused multiply-add all agree on. It also checks none of the refusals STANDARD.md requires ("an implementation conforms when it reproduces every vector byte for byte AND refuses everything this document says must be refused" — the checker only does the first half), nothing about reader arithmetic, over-wide serialize_bits, or the degenerate fixed range. And it exists in only one of five repos: the four ports run only a text-diff job proving their copy of the DOCUMENT is identical — nothing proves their BYTES decode from it.
How it manifests
A port can pass every gate it has while quantizing in double, fusing the multiply-add, or accepting streams the spec says must be refused. serialize.c partially compensates with
make diffagainst the C++ library — a comparison against an implementation, which the standing ruling says is not the authority. Two ports (Go, C#) have additionally never executed their golden on a big-endian target, so the host-to-network path there is asserted by construction rather than by execution.Evidence
Fix direction
Own the conformance vectors at the spec and generate them into five languages so drift becomes impossible rather than a rule people follow. The checker is standard-library-only Go and reads its vectors as data, so porting is mechanical. Import the discriminating battery from serialize.c/test/diff3_c.c, add refusal cases, and add a big-endian emulation leg for Go and C#.
Not blocked on any DECISION issue (though the refusal cases will want the open DECISION forks answered to know what must be refused).
Part of the 2026-08-15 estate known-issues register (index issue on mas-bandwidth/schema).