uix(surface): ADJUDICADO — el 25 % es su techo, y su ruta de demo es un 404

Cero claves nuevas: sus cuatro knobs son, uno a uno, doctrina bien aplicada.
Surface es la cara de PINTURA de Box, y lo que pinta no es suyo: `bg` y `fg`
salen del PUENTE DE PALETA (THM-2) —que es exactamente cómo un tema llega a
ellos, por el color— y `--_surface-fill-finish` es el CANAL DE VALOR del acabado
de degradado, que el generador deriva por instancia (§39). La rama `inherit` del
`fg` suave es intencionada: la tinta del contenido se queda en la global porque
el tinte del track es discreto, y está escrito en la receta.

PERO NO TIENE RUTA PROPIA: `/uix/components/surface` es un 404, como
`picker-shell` y `mockup`. El guard medía una página VACÍA y reportaba 0/25 —
incluido `radius`, que está vivísimo—. Apuntado a `/temas/gradientes` (cuatro
surfaces, dos variantes, tres colores) y a `/blocks/cta`: 1/25, y el que mueve es
el radio (10px → 1234px). Ya son TRES los componentes del canon sin demo → §13.

Sus 24 claves de tono son la SUPERSESIÓN de la cascada de paleta medida hoy en
`button`: el bloque genérico va el último y gana por orden. Adjudicadas con el
patrón compartido.

Gates: centinela 1/25 con las 24 adjudicadas · censo 25 %, que es el techo ·
`docs:check` 0 · sin cambios de código.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
alpha-0.1-background
dev 2 months ago
parent c751b3fb45
commit 694fcb99dc

@ -87,6 +87,33 @@ no distingue lo que debería — se marca `⚠`.
<!-- veredicto:start -->
_(pendiente — lo escribe el autor; se conserva al regenerar)_
**ADJUDICADO 2026-08-23 — el 25 % ES su techo, y no hay nada que coser.** Cero
claves nuevas: sus cuatro knobs son, uno a uno, doctrina bien aplicada.
Surface es la cara de PINTURA de Box (Box es layout por doctrina), y lo que
pinta no es suyo:
- `--_surface-bg` y `--_surface-fg` salen del **puente de paleta** THM-2
(`--_surface-palette-{track,solid,contrast}`), que es exactamente cómo un tema
llega a ellos: por el color, no por un token de superficie. La rama `inherit`
del `fg` suave es intencionada —la tinta del contenido se queda en la global
porque el tinte del track es discreto— y está escrita en la receta.
- `--_surface-fill-finish` es el **canal de valor** del acabado de degradado: lo
deriva el generador por instancia (§39), como en `button`. Su dial es del
sistema (`--gradient-finish-lift`).
**Dos cosas que sí salieron, y las dos son de instrumento o de arquitectura:**
- **No tiene ruta propia**: `/uix/components/surface` es un **404**, como
`picker-shell` y `mockup`. El guard medía una página VACÍA y reportaba 0/25 —
incluido `radius`, que está vivísimo. Apuntado a `/temas/gradientes` (cuatro
surfaces, dos variantes, tres colores) y a `/blocks/cta`: **1/25**, y el que
mueve es el radio (10px → 1234px). → §13, con los otros dos sin ruta.
- **Sus 24 claves de tono son la SUPERSESIÓN de la cascada de paleta** medida hoy
en `button`: el bloque genérico `[data-surface][data-color]` va el último y
gana por orden. Adjudicadas con el patrón compartido.
Verificación: centinela **1/25** con las 24 adjudicadas · censo 25 %, que es el
techo · sin cambios de código.
<!-- veredicto:end -->

@ -1215,5 +1215,13 @@ Lo que `chart` destapó (2026-08-22):
toca aquí porque no es el componente en curso: cuando §12.9 se firme, o se
retira o empieza a pintar, y la decisión es la MISMA para las cuatro.
- **⚠ Ya son TRES los componentes canónicos sin ruta de demo**: `picker-shell`,
`mockup` y ahora **`surface`** (`/uix/components/surface` = 404, medido
2026-08-23). Sin ruta no hay sonda ni guard, y el guard **miente en verde-rojo**:
reportaba 0/25 sobre una página vacía, incluido un `radius` que está vivo. El
parche es el mismo que se le puso a picker-shell —medirlo donde SÍ se renderiza
(`urls` en el override)—, pero la solución de fondo es que un componente del
canon tenga su demo.
**Deps**: ninguna. Son mejoras del instrumental del eje, ejecutables cuando
estorben.

@ -455,6 +455,18 @@ de commit. Sin artefacto, el paso no se ha hecho.
## 8. Registro
- 2026-08-23 — **`surface` ADJUDICADO: el 25 % es su techo**, cero claves nuevas.
Es la cara de PINTURA de Box y lo que pinta no es suyo: `bg` y `fg` salen del
puente de paleta (THM-2) y el acabado es canal de valor del generador (§39).
La rama `inherit` del `fg` suave es intencionada y está escrita en la receta.
**Pero no tiene ruta**: `/uix/components/surface` es un 404 y el guard medía
una página VACÍA — 0/25, incluido un `radius` vivísimo. Apuntado a
`/temas/gradientes` + `/blocks/cta`: 1/25, y el que mueve es el radio. Ya son
TRES los canónicos sin demo (picker-shell, mockup, surface) → §13.
Sus 24 claves de tono son la supersesión de paleta de hoy: patrón compartido.
- 2026-08-23 — **`banner` 30 % → 100 %** (11 claves) **y el guard pasa de 4/42 a
53/53**: sus 38 «muertos» estaban vivos, sólo que nadie los había mirado con
el atributo puesto. Global 64 %.

@ -734,4 +734,9 @@ export const SENTINEL_PATTERN_EXCEPTIONS: Array<{
pattern: /^(primary|secondary|neutral|affirm)-(solid|solid-hover)$/,
reason: PALETTE_SUPERSEDED
},
{
component: 'surface',
pattern: /^(primary|secondary|neutral|affirm|fulfill|risk|threat|loss)-(track|solid|contrast)$/,
reason: PALETTE_SUPERSEDED
},
];

@ -182,6 +182,10 @@ const COMPONENT_OVERRIDES: Record<
// no attribute of its own: without this the guard measures ONE node (the root)
// and 27 of its 37 tokens read dead. Measured 2026-08-22.
prose: { extraNodes: '[data-prose] *' },
// No route of its own — `/uix/components/surface` is a 404, like picker-shell
// and mockup — so the guard measured an EMPTY page and reported 0/25. It is
// the paint side of Box: measured where it actually renders.
surface: { urls: ['/temas/gradientes', '/blocks/cta'] },
// Its palette resolves per INTENT and then per VARIANT: the solid/contrast
// slots only paint under `solid`, the border slot only under `outline`, and
// the demo mounts one of each. 38 of its 42 tokens read dead without the

Loading…
Cancel
Save

Powered by TurnKey Linux.