@@ -44,11 +44,12 @@ from eight addenda:
4444 ` <line> ` , ` <polygon> ` and ` <polyline> ` , filled and stroked; ` <g> ` and
4545 ` <a> ` containers and the whole ` transform ` grammar in both spellings (the
4646 attribute is a presentation hint of the CSS ` transform ` property);
47+ ` <use> ` /` <defs> ` same-document references (the id-resolution table);
4748 viewBox-only root sizing with the full
4849 ` preserveAspectRatio ` grammar; and one exact-time
4950 ` <animate attributeName="x"> ` on a top-level ` <rect> ` .
5051 ` crates/n0_cli/README.md ` is the statement of record.
51- - ** The corpus** is 119 Chromium-baked primitive cells plus 10 sampled frames.
52+ - ** The corpus** is 139 Chromium-baked primitive cells plus 10 sampled frames.
5253 All byte-exact except six curved cells carrying a declared, geometrically
5354 confined tolerance; the departure is the weighted rational conic alone.
5455- ** Not claimed:** no conformance score exists or may be computed — FLIP is
@@ -1056,3 +1057,53 @@ patrol closed the stylesheet route to the root that the scan's graduation
10561057would have opened. ` BadTransform ` retired with the drop-semantics flip;
10571058its overflow half lives on as ` NonFiniteTransform ` , still named at the
10581059element.
1060+
1061+ ## Addendum — the use/defs rung (2026-07-31)
1062+
1063+ The engine's first id-resolution table, and with it ` <use> ` and ` <defs> ` .
1064+ The architecture is the one the probe matrix forced: the referenced
1065+ subtree is ** physically cloned under the ` <use> ` before the one cascade
1066+ runs** (csscascade's ` svg_use ` , at DOM freeze), so the instance is styled
1067+ by the same single pass — presentation attributes and ` style ` clone with
1068+ it, and inheritance flows from the use site, which is exactly Chromium's
1069+ measured behavior (` fill ` on the use colors a clone that authors none;
1070+ the clone's own attribute beats it; ` currentColor ` resolves against the
1071+ use site's ` color ` — and ` color ` joined the admitted hint set for it).
1072+ websem renders ` <use> ` as a container of its shadow content and skips
1073+ ` <defs> ` by name; the walk, the paths, the patrols and the animation
1074+ inventory all see the expanded tree, so a beyond-slice construct inside
1075+ an instance is a declared hole at the clone's real path, and a cloned
1076+ animation element classifies against the clone it targets.
1077+
1078+ ** The 31-measurement probe matrix's load-bearing verdict is the styling
1079+ boundary.** Selector matching against an instance is * totally* scoped to
1080+ the cloned subtree: ` #id ` , class, type and clone-internal structural
1081+ selectors match; NO selector involving any ancestor outside the clone
1082+ does — not ` defs > rect ` (the original's position does not carry), not
1083+ ` use > rect ` , not even descendant combinators like ` svg rect ` . A clone
1084+ parented in the one flattened tree cannot reproduce that boundary in
1085+ either direction, so ** author CSS and ` <use> ` refuse together, by name** ,
1086+ until a shadow-matching rung earns it with Stylo's shadow machinery. The
1087+ 2018-era svgwg #504 claim that Blink copies the original's computed style
1088+ is measurably no longer true of Chromium 149.
1089+
1090+ Everything else measured landed as law and cell: ` x ` /` y ` translate
1091+ appended inside the use's own transform; whole-document first-id-wins
1092+ resolution with forward references; plain ` href ` over ` xlink:href ` ;
1093+ ` width ` /` height ` inert for admitted targets; the correct nothings (an
1094+ unresolved reference, a mutual cycle, an ancestor circle — each baked as
1095+ pixels, each rendering exactly Chromium's nothing with nothing declared);
1096+ a light-tree target painting in place and as an instance; ` display: none `
1097+ cloning onto the instance. Chains expand through with cycle guards on the
1098+ expansion chain (use ids and target ids alike, push/pop so siblings never
1099+ see each other's history); indirect cycles beyond the measured shapes hit
1100+ a depth budget and refuse loudly as expansion overflow, as do external
1101+ references and authored element children — each a register row with a
1102+ fixture. ` <symbol> ` targets surface the symbol element at the clone's own
1103+ path and refuse like the nested viewport they are.
1104+
1105+ Twenty cells baked byte-exact (corpus 119 → 139, the largest single rung
1106+ yet). The refusal register moved one row out (` svg-use ` graduates) and
1107+ four in; ` svg-path-marker-end ` 's defs half stopped declaring the moment
1108+ defs was consumed, leaving the marker attribute itself as the named hole
1109+ — the row now names it directly.
0 commit comments