Skip to content

Commit f31a3b9

Browse files
docs(consolidation): add the SVG checklist — the compact per-construct rung tracker
1 parent aa724c2 commit f31a3b9

2 files changed

Lines changed: 141 additions & 1 deletion

File tree

docs/wg/consolidation/index.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,9 @@ The charter is the only doc of the four that sequences work — and it
8181
records the *route*; the current *position* (active phase, landed PRs,
8282
taken decisions) is tracked on
8383
[gridaco/nothing#43](https://github.com/gridaco/nothing/issues/43),
84-
which a session reads before starting work. The other three docs are
84+
which a session reads before starting work. The per-construct position
85+
of the SVG engine of record is [the SVG checklist](./svg-checklist.md)
86+
a compact box-per-construct tracker, ticked by each rung's docs commit. The other three docs are
8587
direction: stable in shape, expected to gain detail as decisions in the
8688
registry land.
8789

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
---
2+
title: "SVG checklist"
3+
description: "The compact rung tracker: the SVG surface by section, each item checked when a Chromium-gated rung lands it on the n0 path."
4+
tags:
5+
- internal
6+
- wg
7+
- program
8+
- consolidation
9+
format: md
10+
---
11+
12+
# SVG checklist
13+
14+
The compact tracker for the SVG engine of record (`websem → rframe → n0`).
15+
One line per construct; a checked box means a Chromium-gated rung landed it.
16+
An unchecked box is a departure the compiler already names (see
17+
[the refusal register](../../../fixtures/web-first/STATUS.md)) or surface not
18+
yet reached. This list tracks *position only*: semantics live in
19+
[the statement of record](../../../crates/n0_cli/README.md), rung history in
20+
[the D-N register](./svg-engine-of-record.md), and no score is computed from
21+
it (FLIP is unratified). A rung's docs commit ticks its rows.
22+
23+
## Document & viewport
24+
25+
- [x] standalone SVG entry (strict XML, UTF-8, no DTD)
26+
- [x] HTML entry (the document's first inline SVG)
27+
- [x] root `width`/`height`/auto sizing (WxH as initial viewport)
28+
- [x] `viewBox` (malformed refuses in both admissions)
29+
- [x] `preserveAspectRatio` (full grammar; malformed refuses)
30+
- [ ] percentage root sizing
31+
- [ ] nested `<svg>`
32+
- [ ] `<symbol>`
33+
- [ ] `<switch>`
34+
- [ ] `<foreignObject>`
35+
36+
## Structure & references
37+
38+
- [x] `<g>` / `<a>` containers
39+
- [x] `<defs>` (non-rendering, skipped by name)
40+
- [x] `<use>` same-document (first-id-wins table, forward refs, `xlink:href`, x/y translate, cycle/unresolved → correct nothing)
41+
- [ ] `<use>` under author CSS (shadow-scoped selector matching)
42+
- [ ] `<use>` external references
43+
- [ ] `<use>` of `<symbol>` / nested-`<svg>` targets
44+
45+
## Geometry
46+
47+
- [x] `<rect>`
48+
- [ ] `<rect>` `rx`/`ry` (rounded corners)
49+
- [x] `<circle>` / `<ellipse>` (auto and negative radii)
50+
- [x] `<line>` / `<polyline>` / `<polygon>` (points grammar; declared prefix divergence)
51+
- [x] `<path>`: `M L H V C S Q T Z` + `fill-rule`
52+
- [ ] `<path>`: `A` elliptical arc (needs the rframe conic amendment)
53+
- [ ] `pathLength`
54+
- [ ] CSS geometry properties (`x` `y` `cx` `cy` `r` `rx` `ry` `d` — Gecko-only at the Stylo pin)
55+
56+
## Transforms
57+
58+
- [x] `transform` attribute (whole SVG grammar; malformed list drops whole)
59+
- [x] CSS `transform` property + `-webkit-` alias (2D affine set)
60+
- [x] attribute↔CSS precedence (presentation-hint level)
61+
- [ ] `transform-origin` / `transform-box`
62+
- [ ] individual `rotate` / `translate` / `scale` properties
63+
- [ ] beyond-2D function family
64+
- [ ] root `<svg>` transform
65+
66+
## Paint
67+
68+
- [x] `fill`: named/hex/rgb(a) sRGB, `none`, `currentColor`, inherit
69+
- [x] `color` (the currentColor basis)
70+
- [x] `fill-opacity` / `stroke-opacity` / color alpha (float multiply, one quantize)
71+
- [ ] beyond-sRGB color spaces
72+
- [ ] `paint-order`
73+
- [ ] `context-fill` / `context-stroke`
74+
75+
## Paint servers
76+
77+
- [ ] `<linearGradient>`
78+
- [ ] `<radialGradient>`
79+
- [ ] `<stop>` (`offset`, `stop-color`, `stop-opacity`)
80+
- [ ] `gradientUnits` / `gradientTransform` / `spreadMethod`
81+
- [ ] `href` inheritance between gradients
82+
- [ ] `fill`/`stroke` `url(#…)` with fallback
83+
- [ ] `<pattern>`
84+
85+
## Stroke
86+
87+
- [x] solid stroke paint
88+
- [x] `stroke-width` (cascaded length; percentage against the viewport diagonal)
89+
- [x] `stroke-linecap` / `stroke-linejoin` / `stroke-miterlimit`
90+
- [ ] `stroke-dasharray` / `stroke-dashoffset`
91+
- [ ] `vector-effect`
92+
93+
## Compositing & clipping
94+
95+
- [ ] element `opacity` (needs the compositing scope)
96+
- [ ] `clip-path`
97+
- [ ] `mask`
98+
- [ ] `<filter>` / `filter`
99+
- [ ] `mix-blend-mode` / `isolation`
100+
101+
## Disposition
102+
103+
- [x] `display: none` (attribute and CSS; root ignores it, as Chromium does)
104+
- [x] `visibility` (descendant `visible` un-hides)
105+
- [ ] `display: contents`
106+
107+
## CSS integration
108+
109+
- [x] one Stylo cascade: `<style>` elements, `style` attributes, presentation hints (13 admitted)
110+
- [x] SVG-namespace stylesheet intake
111+
- [ ] shadow-scoped matching (author CSS + `<use>`)
112+
- [ ] longhands the pinned cascade cannot represent (`stop-color`, `marker-*`, `paint-order`, `d`, …)
113+
114+
## Animation
115+
116+
- [x] the time axis: Base / exact signed-nanosecond Sample, no ambient clock
117+
- [x] SMIL `animate` on rect `x` (the proving slice)
118+
- [ ] wider animated attributes (`y` `width` `height` `cx` `cy` `r` …)
119+
- [ ] `animateTransform`
120+
- [ ] CSS animations / transitions sampling
121+
- [ ] beyond-slice SMIL (`<set>`, href retargets)
122+
123+
## Markers
124+
125+
- [ ] `marker-start` / `marker-mid` / `marker-end`
126+
127+
## Text
128+
129+
- [ ] `<text>` (all of it)
130+
131+
## Images & resources
132+
133+
- [ ] `<image>`
134+
- [ ] external resources (self-contained input is the current contract)
135+
136+
## Layout (HTML)
137+
138+
- [ ] any HTML box layout (the surrounding page contributes nothing — pinned)

0 commit comments

Comments
 (0)