9191718612
Three findings, all correct, all applied. 1. A contextual selection face cannot be resolved by `resolve(Face)`. Clause 3 fixed that signature while the vocabulary described one `selection` face "parameterised by the surface's accent" — the same Face cannot yield the grid's Cyan and the formula panel's Yellow. Resolved the way clause 2 already works: `selection` is a BASE face and each surface has a derived one. A context argument was rejected explicitly, because it is a second input three front ends would each have to supply correctly, which is the three-derivations hazard one level down. 2. `Indexed` could not be "a detail". The ADR defined Colour as exactly Default | Named | Rgb, promised the two existing Indexed greys would still render exactly, and said the shipped theme used only the first two. Folding an index into Rgb changes its meaning AND breaks that rule. `Indexed(u8)` is now a fourth arm, the browser resolves 16-255 through the xterm cube and ramp, and the shipped-theme rule is restated over the line that actually matters: palette-relative versus absolute. The shipped theme contains no `Rgb`. The rejected-alternatives entry now also says that dropping `Rgb` entirely is a coherent version of this ADR, since that would make the regression unrepresentable rather than defaulted-against. 3. "Build all bundles" was failing: the ADR was neither published nor a named omission. Added to SECTIONS in scripts/build-doc-site.mjs. The checked-in site/docs output is deliberately NOT regenerated here — assemble.sh builds into its own output directory, and site/ is a periodic snapshot rather than a per-commit artifact. Also corrects the hex count: nine stray values in style.css, six light and three dark, not six. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FC2jVn8Au7E9JPkw6bwXXH