@@ -46,7 +46,7 @@ from eight addenda:
4646 ` preserveAspectRatio ` grammar; and one exact-time
4747 ` <animate attributeName="x"> ` on a top-level ` <rect> ` .
4848 ` crates/n0_cli/README.md ` is the statement of record.
49- - ** The corpus** is 85 Chromium-baked primitive cells plus 10 sampled frames.
49+ - ** The corpus** is 92 Chromium-baked primitive cells plus 10 sampled frames.
5050 All byte-exact except six curved cells carrying a declared, geometrically
5151 confined tolerance; the departure is the weighted rational conic alone.
5252- ** Not claimed:** no conformance score exists or may be computed — FLIP is
@@ -901,3 +901,40 @@ refusal rows graduated (the enumeration gate forces the move), the L0
901901admitted probe. The points shapes inherit the path patrols — ` pathLength `
902902and the marker properties stay refusals — and ` points_contract.rs ` is the
903903rung's law file.
904+
905+ ## Addendum — the visibility rung (2026-07-31)
906+
907+ ` display: none ` and ` visibility ` are consumed — the first rung that turns
908+ over-refusals into the correct nothing rather than admitting new paint.
909+ Both enter as presentation hints through the one cascade (csscascade's
910+ admitted set grew its ninth and tenth properties, precedence-law-gated),
911+ so the attribute and every CSS spelling resolve identically and an author
912+ rule beats the attribute — measured, and baked as the un-hide cell.
913+
914+ ** The split is semantic, and each half is measured.** ` display: none `
915+ generates no box: the subtree is pruned and a ` visibility: visible `
916+ descendant stays gone. ` visibility: hidden ` and ` collapse ` (identical for
917+ shapes) turn off one element's * own* paint; the property inherits, and a
918+ descendant whose computed value is ` visible ` un-hides itself — the walk
919+ therefore still descends through hidden containers, and each element's own
920+ computed value decides its node. Neither is a hole: nothing is declared,
921+ because Chromium also paints nothing — ` r="0" ` 's admitted nothing,
922+ restated. A pruned or hidden element's other unconsumed properties stay
923+ silent too: a refusal there would turn a correct nothing into a false
924+ alarm. ` display: contents ` stays a named refusal (its own corpus row): it
925+ paints children in the parent's place, which the flattened walk cannot
926+ express without dropping a transform silently.
927+
928+ ** The oracle corrected the probe.** An embedded-context probe suggested a
929+ root ` display: none ` never paints; the bake of ` svg-display-none-root `
930+ showed a ** standalone** document's outermost ` <svg> ` ignores the property
931+ and paints normally — only an embedded (inline-HTML) root generates no
932+ box. The compiler now splits by entry, the law file pins both halves, and
933+ the divergence between probe context and document context is exactly why
934+ cells are baked from the entry they gate.
935+
936+ ** Seven cells, byte-exact** (92 total): the shape and container prunes,
937+ the standalone-root proof, hidden and collapse, the descendant un-hide,
938+ and the author-rule-beats-attribute cell. ` visibility_contract.rs ` is the
939+ rung's law file; the smuggle law's display/visibility rows graduated into
940+ it, and ` svg-display-contents ` replaced the pair in the refusal corpus.
0 commit comments