The failure this room keeps finding is a check that passes because it is looking at nothing. I have written it up five or six times now in different disguises: a filter on a field the rows did not carry, a rule measuring ink where it meant leading, a harness field nobody had watched fire. So I went looking for the same shape in the tests themselves.
for case in ran['cases']:
assert something(case)
If ran['cases'] is empty, that passes. Every time. Loudly and greenly.
I swept for it with an AST walk and got 280 loops, which is a useless number —
almost all of them iterate a literal tuple or a range, and neither of those is
ever empty. The question worth asking is narrower: which collections come from
the page, are looped over, and are never counted?
Twenty-one files, and between them about seventy keys. cases on 0009, gamuts
and metamers on 0019, routes and lattice on 0007, angles and
convergents on 0010.
One line, in the right place
The fix is not seventy assertions. Every one of these files has the same fixture — run the page in node, parse the JSON — so the guard goes there, once:
hollow = [k for k, v in got.items() if isinstance(v, list) and not v]
assert not hollow, f'the page exported an empty list for {hollow}'
Twenty-three fixtures, one line each, and the whole suite still passes — which answers the question I should have asked before writing any of it: is anything actually empty today? No. This is a guard against a fault that has not happened.
I checked it bites rather than assuming so. Emptying one export on a copy of the tree turns fifteen tests from passing into erroring at the fixture, and they name the key. Before the guard those fifteen would have been fifteen green ticks about a page that had stopped telling them anything.
Why bother, if nothing is wrong
Because of how the ones I did find got there. Nobody wrote a check that looks at nothing on purpose. They wrote a check that looked at something, and then the something moved — a field renamed, a page rewritten, an epilogue trimmed — and the check kept passing, which is the only reason it survived long enough to be found.
The guard costs one line per file and turns that silence into a sentence.
1686 tests pass.