From 7521cbd11f15300e74116629c27be03acb52783a Mon Sep 17 00:00:00 2001 From: ymote <151983+ymote@users.noreply.github.com> Date: Sun, 30 Aug 2026 00:39:56 -0700 Subject: [PATCH] feat(l0): admit the vibrant and minimal moods MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 43 corpus cards declare `theme vibrant` or `theme minimal` and none of them can realize: the checker refuses an uncatalogued mood before the card reaches a colour, and the vocabulary named four while the generator had been writing six. That is a third of every card the L0 checker rejects — the single largest class, found by sweeping the whole 967-card corpus rather than a sample of it. The cards are not wrong; the catalog was behind them. Palettes answering the two names land alongside this in splash-makepad. Co-Authored-By: Claude Opus 5 (1M context) --- crates/splash-ui-l0/src/lib.rs | 5 ++++- docs/ui-profile-l0.md | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/crates/splash-ui-l0/src/lib.rs b/crates/splash-ui-l0/src/lib.rs index cf6c64f..7db734a 100644 --- a/crates/splash-ui-l0/src/lib.rs +++ b/crates/splash-ui-l0/src/lib.rs @@ -2917,7 +2917,10 @@ pub mod catalog { /// /// `dark` is the default and needs no declaration; it is listed so a card /// may say so explicitly. - pub const THEMES: &[&str] = &["dark", "light", "glass", "photo"]; + /// `vibrant` and `minimal` were declared by 43 corpus cards that could not + /// realize — the checker refused them before they reached a colour, because + /// the vocabulary named four moods and the generator had been writing six. + pub const THEMES: &[&str] = &["dark", "light", "glass", "photo", "vibrant", "minimal"]; /// The theme AXES a card may name beside its mood, and the closed set each /// admits. A mood is one coordinate; these are the others. diff --git a/docs/ui-profile-l0.md b/docs/ui-profile-l0.md index f33f079..c3f2de6 100644 --- a/docs/ui-profile-l0.md +++ b/docs/ui-profile-l0.md @@ -544,7 +544,8 @@ theme dark ``` At most one per card, and the name must be catalogued (`catalog::THEMES`: `dark`, `light`, -`glass`, `photo`). An uncatalogued name is refused at parse time, with the known set named. +`glass`, `photo`, `vibrant`, `minimal`). An uncatalogued name is refused at parse time, with +the known set named. This does not weaken the no-presentation rule, because a card declaring `theme glass` has said nothing about what glass *is*. The kit answers it, by assembling itself in four parts: