Spec: v0.21.0 facts — both spellings styled, doctor landed
Two statements in the spec became false overnight and a third needs qualifying. Verified against the tag rather than taken on relay. rastrillo v0.21.0 (2026-08-31) styles BOTH spellings: ui/tokens.css carries 343 bare-attribute selectors alongside 398 class selectors. So the spec's claim that the attribute grammar exists in no tree is now wrong. And rastrillo doctor landed, which retires the manual tokens.css re-copy step the spec told readers to carry. The markup decision itself stays PARKED -- that is Paul's, and a relayed green light is not the same as being told. But the reason it was parked has largely dissolved: with both spellings styled, neither choice renders unstyled and there is no interim styling either way. The decision got cheaper rather than being made.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011F5CivVm4CmL9ByfSSAaXA
1 file changed,
+13
−5
docs/superpowers/specs/2026-08-30-docs-design.md+13 −5
CI passed — run details
Intent
diff --git a/docs/superpowers/specs/2026-08-30-docs-design.md b/docs/superpowers/specs/2026-08-30-docs-design.md| index fd2d0aa..ecefe80 100644 |
| --- a/docs/superpowers/specs/2026-08-30-docs-design.md |
| +++ b/docs/superpowers/specs/2026-08-30-docs-design.md |
| @@ -591,7 +591,7 @@ Verified against `origin/main` and `v0.19.0`: |
| | `ui.TokensCSS()` | Released | |
| | `ui.ThemeCSS(name)`, `ThemeNames()`, `Layout(name)`, `LayoutNames()` | **Released in `v0.20.0`** (2026-08-30) — were `main`-only for six days | |
| | `Pair`, the allocation entry point | **Ruled only.** In no tree | |
| -| The bare-attribute grammar (`<div rst-inspector>`) | **Ruled only.** In no tree, no branch, unstarted | |
| +| The bare-attribute grammar (`<div rst-inspector>`) | **Released in `v0.21.0`** (2026-08-31). Verified: `ui/tokens.css` carries 343 bare-attribute selectors alongside 398 class selectors, so both spellings are styled | |
| **Resolved 2026-08-30: `v0.20.0` is tagged and level with `main`** (verified: |
| carries `ThemeCSS`, `ThemeNames` and `LayoutNames`; zero commits behind |
| @@ -636,8 +636,14 @@ consuming rastrillo's CSS and estilo does not do that. |
| | Docs' own markup | — | Estilo | **PARKED** — see below | |
| | rastrillo partials we consume | Whatever rastrillo emits — classes today | rastrillo | Not our call | |
| -**The middle row is parked, deliberately** (Paul, 2026-08-30): design-system |
| -questions wait until rastrillo's design system settles and estilo is real. |
| +**The middle row is still parked** (Paul, 2026-08-30), though the reason it |
| +was parked has now largely resolved. `v0.21.0` styles both spellings, so |
| +neither choice renders unstyled and there is no interim styling to carry |
| +either way — the decision got cheaper rather than being made. Two caveats |
| +attach to it whenever it is taken: adopt **per screen, not per element**, |
| +since mixed authoring inside one component matches neither spelling by |
| +design; and pin `v0.21.0` or later, because on anything earlier attributes |
| +render unstyled. Unparking is Paul's. |
| Docs writes no markup yet — plans 1 and 2 are a Rust crate and a wazero host |
| — so nothing is blocked, and answering it now would mean converging on a |
| decision that is about to be made upstream. |
| @@ -661,8 +667,10 @@ rastrillo's output, not a choice this spec makes, and it changes when |
| rastrillo changes. |
| `tokens.css` is frozen into `static/` at scaffold time while partials upgrade |
| -with the module, so re-copy it deliberately on every rastrillo upgrade until |
| -`rastrillo doctor` lands. |
| +with the module. **`rastrillo doctor` landed in `v0.21.0`**, so the manual |
| +re-copy step is retired: `doctor` compares an app's frozen `static/` against |
| +the module's and `--fix` re-copies, and it refuses across a version mismatch |
| +rather than manufacturing the fault it detects. |
| ### 10.2 Colour |