Make Fill and Depth non_exhaustive so the vocabulary can grow
Adding Fill::Sunken in 0.3.0 was correct and is earning its keep: it is
the unchosen tab, live in the stylesheet makeover-webview emits, and it
cannot be Well, which is derived by inverting against content and carries
an edge where sunken is authored and flat. What was wrong is what it cost.
Both exhaustive matchers, makeover-tui and makeover-immediate, failed to
compile on an additive member, and neither could move until the other
published.
That is the wrong default for a description layer whose whole premise is
that the vocabulary grows and the renderers need not resemble each other.
A renderer that has no drawing for a depth should pay a wildcard arm, not
a compile error and a wait. Verified against makeover-tui: on this version
it builds with a single wildcard arm, no new palette member, and therefore
no breaking change of its own.
The wildcard is not a hole. Fill resolves through a fallible lookup and a
missing intent is answered with structure rather than a substituted colour,
which is a rule this crate already had and already relies on for Well
against makeover before 2.3.0.
Breaking, so 0.4.0. The other fourteen public enums are left exhaustive:
the same argument reaches them, but silent degradation is only safe where
a missing member has a defined answer, and that wants deciding per enum
rather than in one sweep.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-07-30 04:19 UTC
description = "The renderer-agnostic half of the make-family design system: what a thing IS, named as intents and relationships and never as values. Colour defers to makeover, spacing to makeover-geometry; what is left is composition."