formats: a scale-0 leaf must not claim the draw and blank its parent

Found by inspection while the disc tests ran. The leaf branch set its
something-was-drawn flag unconditionally after calling blit, but blit returns
early on a zero scale -- collapsed to nothing, not unset. So a scale-0 leaf would
have been counted as drawn, its parent skipped, and the element blanked outright.

pgloading_loop5 s leaf is scale (0,0), so this was live on all four loading
screens, and scale-0 is one of the failures this corpus is already named for.
Fixed by skipping a zero-scale leaf pose before it can claim the draw; the
loading builds render afterwards at 4.0 percent non-black.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QsEPXWVaEpyfudtR6re1Pd
This commit is contained in:
sylph-decoder
2026-08-29 19:04:03 +00:00
parent bc46d9d72a
commit e2640338e1
3 changed files with 61 additions and 0 deletions

View File

@@ -82,6 +82,18 @@ pixels differing** is **not established here** — that harness poses deliberate
and counts differing pixels rather than mean level, and it is the place to judge
it. ❔ The sweeps may simply be a small term.
## 🔴 A bug in this change, found by inspection before the tests found it
The leaf branch set its "something was drawn" flag **unconditionally after
calling `blit`** — but `blit` returns early on a **zero scale** (*"collapsed to
nothing", not "unset"*). So a scale-0 leaf would have been treated as drawn, its
parent skipped, and the element **blanked outright**.
⚠️ `pgloading_loop5`'s leaf is scale **(0, 0)**, so this was live on all four
loading screens, and scale-0 is one of the failures this corpus is already named
for. Fixed by skipping a zero-scale leaf pose before it can claim the draw.
Loading builds render afterwards at 4.0 % non-black, unchanged in character.
## No regression
| screen | before | after |