| index 1e284bb..1e18c2b 100644 |
| --- a/AGENTS.md |
| +++ b/AGENTS.md |
| @@ -36,7 +36,7 @@ empty repo invites the opposite.) |
| | 1 | **Shared suite components live here, not in rastrillo's `ui`** | Proposing them to the framework | Paul, 2026-08-30 | |
| | 2 | **A separate repo, created before any primitive is written** | App-local until a second consumer; a nested module inside an app | Paul, 2026-08-30 | |
| | 3 | **No Go code until the next rastrillo release** — §Dependency | Pinning a `main` pseudo-version | This session, 2026-08-30 | |
| -| 4 | **Write `class="rst-*"`, not the bare-attribute grammar** — §Vocabulary | The attribute grammar (exists in no tree) | This session, 2026-08-30 | |
| +| 4 | **Estilo's own components are written in the bare-attribute grammar, and estilo defines their styling** — §Vocabulary | `class="rst-*"` (right for an app consuming rastrillo's CSS, wrong for a library shipping its own) | Paul, 2026-08-30 | |
| | 5 | **The colour engine stays in rastrillo's `ui`** | Moving `Pair` and allocation here | ui-guidelines-52, 2026-08-30 | |
| |
| **Two callers at design time is the bar for *extraction*. It says nothing |
| @@ -70,24 +70,49 @@ two-pin case and it is ours. |
| |
| --- |
| |
| -## Vocabulary — `class`, not attributes |
| +## Vocabulary — attributes here, and why that differs from the apps |
| |
| -**Write `class="rst-*"`.** The bare-attribute grammar (`rst-btn="primary"`) |
| -exists in **no tree** — not `v0.19.0`, not `main`, not the design-system |
| -branches — and rastrillo's §6-v3 migration is ruled but unstarted with no |
| -date. A component written in the attribute grammar renders **unstyled** |
| -today. |
| +**Estilo's own components use the bare-attribute grammar** |
| +(`<div rst-inspector>`, variants in the value matched with `~=`), and |
| +**estilo ships their styling.** |
| |
| -This rule is here with its reason because the surrounding conversation all |
| -week said the opposite, and somebody will helpfully correct it back. |
| +**Read this before "correcting" it, because the surrounding conversation has |
| +said both things this week and the right answer depends on which repo you |
| +are in.** |
| |
| -Migration is mechanical and happens alongside rastrillo's own ~585 call |
| -sites, via the staged dual-matching release. Not before. |
| +The argument for writing classes is: the attribute grammar exists in no |
| +rastrillo tree — verified again at `origin/main` `7a30456`, spec-only, no |
| +branch working on it — so a component written in it renders unstyled. **That |
| +is true for an app leaning on rastrillo's CSS, and false here.** Estilo |
| +ships its own components *and* their styling, so styling its own |
| +attribute-grammar components is not interim anything; it is permanently |
| +estilo's styling. There is nothing to migrate later and no parallel |
| +implementation to carry. |
| + |
| +And the positive reason, which is the stronger one: **estilo is the variant |
| +system that exists because of this direction.** Birthing it on the spelling |
| +being replaced is backwards. Estilo is where the new grammar gets proven, |
| +not where it waits. |
| + |
| +**The three-way split, which holds across the suite:** |
| + |
| +| Markup | Spelling | Styled by | |
| +|---|---|---| |
| +| Estilo's own components | Attribute grammar | Estilo | |
| +| An app's own markup, using estilo components | Attribute grammar | Estilo | |
| +| An app's own markup, using rastrillo's vocabulary | **Whatever rastrillo emits — classes today** | rastrillo's `tokens.css` | |
| + |
| +The third row is not our choice and not our migration. It changes when |
| +rastrillo changes. |
| |
| Do not build on `.rst-page-header::after` — the accent rake line is retired |
| in favour of `--rst-header-rule`. |
| |
| ---- |
| +**Provenance, because this reversed within an hour.** docs-e6 first advised |
| +classes, reasoning correctly about its own app and then applying the |
| +conclusion to a different repo without re-deriving it. Paul challenged it; |
| +the correction is his. Recorded with the reasoning rather than the outcome, |
| +because the outcome alone reads like an error. |
| |
| ## Standards every primitive meets |
| |