Analyse the whole public surface, not the part the tests happened to touch - #2
Analyse the whole public surface, not the part the tests happened to touch#2gHashTag wants to merge 2 commits into
Conversation
…touch zig build test over this module proved only that the declarations it happened to reference compile. Zig analyses top-level declarations lazily, so everything else was never handed to the compiler -- and a consumer referencing any of it got errors this package's own green CI could not see. gHashTag/trinity#701 hit exactly that: vsa/core.zig expects HybridBigInt to carry an `allocator` field, and the golden-float version pinned here does not. CI here was green throughout. refAllDeclsRecursive forces the public surface through the compiler, which is the only version of "this package builds" that means anything to somebody outside it. It is expected to go RED, and that is the point: the defect existed before this commit and only the instrument changes.
gHashTag/zig-golden-float#97 repaired sixteen defects across that package, including the two this one tripped over: HybridBigInt without an allocator field, and the u32/i32 mismatch. Both originated there.
|
Re-pinning against a repaired
The errors here are unchanged, including The two repositories carry their own copies of the same files, and the copies have diverged.
So the migration that broke That makes the repair here a decision rather than a patch: either this package drops its Still open, for the same reason as before: a red |
|
Superseded by #3, which is merged. This PR added #3 makes the duplicated files re-export one implementation, adds the same full-surface analysis, and is green: Closing rather than merging, since everything here is in there. |
zig build testover this module proved only that the declarations it happened to reference compile. Zig analyses top-level declarations lazily, so everything else was never handed to the compiler — and a consumer referencing any of it got errors this package's own green CI could not see.gHashTag/trinity#701 hit exactly that. With
refAllDeclsRecursiveforcing the public surface through the compiler, five distinct API-drift errors appear against thegolden-floatversion this package itself pins:Every one of them existed before this commit. Only the instrument changes.
This PR is deliberately left open rather than merged. Landing it turns
mainred with no repair attached, and a permanently red build is the condition that destroys a signal's information content — the thing this whole line of work exists to prevent. The repair is a separate piece of work: five drift sites, and each needs a decision about which side is right.What this establishes today: a green CI on a library does not mean the library is usable by a consumer, and for a lazily-analysed language the gap is not an edge case — it is the default.