Unselected block text (the BS33-11 Mark/SectionMark labels) was erased by
its own block's wipeout pass and only came back through the selection
xray. Two compounding causes:
- Glyph quads rendered at the bare insert level, an exact depth tie with
every sibling fill, so the later wipeout pass won LessEqual. Wire
batches now carry the composed child rank as depth_override (the same
units the scene graph composes: depths[insert] + label * half), which
the block-text upload resolves per instance. Glyph vertices stay
neutral on purpose — baking the raw per-block label into them
double-counts and, for a negative rank, sinks the text BELOW its own
masks.
- The wipeout pipeline's depth bias (-8 quanta) was larger than the
whole within-block band: once child ranks compress into the insert's
half-band, sibling steps are ~3 quanta and a wipeout-to-text gap is
only 9-16 quanta of the 24-bit buffer. The mask only needs to break
exact ties, so the bias is now WIPEOUT_DEPTH_BIAS_QUANTA = 2.
block_text_draw_depth regression pins the contract: neutral vertices,
override carrying the rank, and a margin over the wipe that exceeds the
bias on a 600-entity scene.