Corpus-run refinements, each anchored to a measured case:
- a JAM participant must be a text-bearing CONTAINER cell — two bare
text siblings set tight on purpose (price + unit) are typography;
- the row-gap repair also covers a TWO-column jam (date column against
a details stack at 0px) when the row top-packs;
- text overflow now triggers on the right EDGE, catching the combined
overflow a width-only check misses (avatar + name pair);
- one sibling centered inside another is an intentional overlay (a
number set on a ring), not an overlap accident;
- drop an unreachable duplicate match arm the merge left in the lint
contrast detector.
Corpus re-audit: 51/52 clean as generated, 52/52 after finalize.