re: 98.7% coverage, and the scale-free degeneracy fix is refuted

Under the winding gate, coverage is 6212/6294 (98.7%) with 82 misses left,
attributed 42 degenerate/extent, 31 winding, 9 coverage, 0 connectivity. The
biggest bucket turns out NOT to be the blocker: replacing the absolute area test
with a scale-free collinearity test decodes no more resources and raises
inconsistency 39 -> 44, and dropping the extent floor to 0.05 adds two. Both stay
as opt-in knobs (XBG7_REL_DEGEN, XBG7_MIN_EXTENT) rather than defaults. Also
fixed another stale default label in edge_cap_sweep.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-12 06:19:38 +00:00
parent f835705b48
commit 2f0ce19f68
3 changed files with 65 additions and 4 deletions

View File

@@ -1042,6 +1042,34 @@ not obviously right, and both points are one env var apart
(`XBG7_PAD0_CONSISTENCY`, `XBG7_EDGE_CAP`) for anyone who wants the conservative
end.
### Where the remaining 82 misses stand — and a refuted fix
With the winding gate shipped, coverage is **6 212 / 6 294 = 98.7 %** and only
**82** resources never decode (was 225). Re-attributed:
| furthest gate reached | count |
|---|---|
| degenerate / implausible positions (`extent < 0.5`, >30 % degenerate) | 42 |
| winding consistency | 31 |
| buffer not covered by indices | 9 |
| connectivity | 0 (inert) |
**The biggest bucket is not the blocker** — which is exactly the caveat this
attribution carries. Both of its thresholds are *absolute*, which on a format
with no unit convention is a scale assumption: an area test of `< 1e-9` calls
every triangle of a small object degenerate (`g005` spans 0.346 units and scored
7 of 8), and `extent < 0.5` rejects it outright. Replacing the area test with a
**scale-free collinearity** test (`|u × w| < 1e-6·|u|·|w|`, i.e. sin of the angle
between the edges) is the principled version — and measured on this disc it
decodes **no more resources at all**, while raising cross-container inconsistency
39 → 44. Lowering the extent floor to 0.05 adds **two**.
So the fix that the histogram appeared to point at is refuted: those 42 are
resources where some *wrong* candidate reached that gate, not where the true
block was rejected. Both are kept as knobs (`XBG7_REL_DEGEN`, `XBG7_MIN_EXTENT`),
neither is the default, and the measurement is recorded so the next reader does
not re-derive it.
### Coverage has a denominator now, and the misses have a cause breakdown
Coverage has been quoted as "resources decoded" with no total. `examples/undecoded.rs`