docs(theming): la cola eran TREINTA Y CUATRO, no once — y dos huecos más del instrumento

Ejecuta P3, P4 y P5 del plan de la revisión del 24.

P4 — LA COLA DEL HANDOFF ESTABA MAL, Y ERA MI ERROR

La bala que escribí al cerrar la tanda listaba once pendientes. Contados contra
el censo y el registro §8 son treinta y cuatro, y la lista sin separar tampoco
servía, porque mezcla dos cosas distintas:

- 16 que NUNCA han pasado por el eje (sin entrada §8 ni README): field-langs,
  chronos, mockup, sidebar, image-adjustments, separator, chat-message, fab,
  tags-input, chat-typing, collapsible, toolbar, scroll-area, tabs, slider,
  toast. Ésa es la cola de verdad.
- 18 que SÍ pasaron y sólo les falta el README «Talla y tema»: el paso se
  volvió obligatorio después de que cerraran y e522e04e6 recuperó 21, pero
  éstos quedaron fuera. No es cola de tokenización, es deuda de documentación.

Queda escrito además cómo regenerar la lista, para que nadie la escriba de
memoria otra vez: alcance < 100 % y sin sección «Talla y tema», y el desempate
entre A y B es si tiene entrada en §8.

P3 — LA FECHA DE MEDIDA DE SEIS FICHAS

select, calendar, radio-group, rating-group, toggle y card se midieron y
commitearon pasada la medianoche; sus fichas decían 23. La fecha es parte del
artefacto.

P5 — DOS HUECOS DE INSTRUMENTO EN §13

- eidos-lint no conoce las exenciones que el test de vitest SÍ tiene
  (CSS_ONLY_LAYERS, WIP_TRACKS, KNOWN_MISSING_MORFO, raíces competidoras): sobre
  spin-field muere con «No morfo file» en vez de eximirlo. El guard de la suite
  y el script de línea de comandos discrepan sobre la misma ley, y el que se
  corre a mano es el que miente.
- La columna `size` del censo se apaga cuando el eje de talla SUBE al contrato:
  la calcula leyendo bloques [data-size] del CSS, así que promover una escala
  con scope 'size:{k}' —la forma canónica— la borra del recuento. Bajó de 57 a
  55 justo al hacerlo mejor. El instrumento premia la forma vieja.

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

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-23 · **Alcance**: **89%** — 57 de 64 knobs por token público
- **Medido**: 2026-08-24 · **Alcance**: **89%** — 57 de 64 knobs por token público
- **Knobs de apariencia**: 67 — público 57 · privado 7 · global 0 · literal 0 · sistema 3 · excepción 4 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 74 pública(s) — `gap`, `padding-xs`, `padding-sm`, `padding-md`, `padding-lg`, `radius`, `border-width`, `border`, `invalid-border`, `bg`, `outline-bg`, `outline-shadow`, `fg`, `shadow`, `font-family`, `font-size-xs`, `font-size-sm`, `font-size-md`, `font-size-lg`, `line-height`, `header-gap`, `heading-fg`, `heading-font-size`, `heading-font-weight`, `control-size-xs`, `control-size-sm`, `control-size-md`, `control-size-lg`, `control-radius`, `control-border-width`, `control-border`, `hover-control-border`, `control-bg`, `control-fg`, `hover-control-fg`, `select-min-width`, `select-padding-inline`, `months-gap`, `grid-gap`, `weekday-size`, `weekday-fg`, `weekday-font-size`, `weekday-font-weight`, `day-size-xs`, `day-size-sm`, `day-size-md`, `day-size-lg`, `day-radius`, `day-border-width`, `day-border`, `hover-day-border`, `day-bg`, `day-fg`, `hover-day-fg`, `day-font-weight`, `day-selected-fg`, `range-start-solid`, `range-start-solid-hover`, `range-start-border`, `range-start-text`, `range-end-solid`, `range-end-solid-hover`, `range-end-border`, `range-end-text`, `day-today-border`, `day-today-fg`, `day-today-font-weight`, `day-outside-fg`, `day-outside-opacity`, `day-weekend-fg`, `day-unavailable-decoration`, `transition-duration`, `transition-ease`, `disabled-opacity` · 5 privada(s) forward — `_palette-solid`, `_palette-solid-hover`, `_palette-track`, `_palette-border`, `_palette-text`
- **Eje `size`**: no · **ficheros**: `calendar-select.css`, `calendar.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-23 · **Alcance**: **78%** — 28 de 36 knobs por token público
- **Medido**: 2026-08-24 · **Alcance**: **78%** — 28 de 36 knobs por token público
- **Knobs de apariencia**: 37 — público 28 · privado 8 · global 0 · literal 0 · sistema 1 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 98 pública(s) — `padding-inline-xs`, `padding-inline-sm`, `padding-inline-md`, `padding-inline-lg`, `padding-inline-xl`, `padding-block-xs`, `padding-block-sm`, `padding-block-md`, `padding-block-lg`, `padding-block-xl`, `gap-xs`, `gap-sm`, `gap-md`, `gap-lg`, `gap-xl`, `font-family`, `line-height`, `title-font-family`, `title-font-size-xs`, `title-font-size-sm`, `title-font-size-md`, `title-font-size-lg`, `title-font-size-xl`, `title-font-weight`, `title-line-height`, `title-letter-spacing`, `description-font-family`, `description-font-size-xs`, `description-font-size-sm`, `description-font-size-md`, `description-font-size-lg`, `description-font-size-xl`, `description-line-height`, `description-fg`, `body-font-size-xs`, `body-font-size-sm`, `body-font-size-md`, `body-font-size-lg`, `body-font-size-xl`, `body-line-height`, `border-width`, `radius-sm`, `radius-md`, `radius-lg`, `header-gap`, `footer-gap`, `footer-padding-start`, `footer-border-fg`, `emerge-duration`, `emerge-ease`, `emerge-distance`, `hover-lift`, `hover-shadow`, `press-scale`, `press-duration`, `selected-ring-width`, `disabled-opacity`, `outline-bg`, `primary-solid`, `primary-text`, `primary-contrast`, `secondary-solid`, `secondary-text`, `secondary-contrast`, `neutral-solid`, `neutral-text`, `neutral-contrast`, `affirm-solid`, `affirm-text`, `affirm-contrast`, `fulfill-track`, `fulfill-border`, `fulfill-solid`, `fulfill-text`, `fulfill-contrast`, `risk-solid`, `risk-text`, `risk-contrast`, `threat-solid`, `threat-text`, `threat-contrast`, `loss-track`, `loss-border`, `loss-solid`, `loss-text`, `loss-contrast`, `primary-track`, `primary-border`, `secondary-track`, `secondary-border`, `neutral-track`, `neutral-border`, `affirm-track`, `affirm-border`, `risk-track`, `risk-border`, `threat-track`, `threat-border` · 5 privada(s) forward — `_palette-track`, `_palette-border`, `_palette-solid`, `_palette-text`, `_palette-contrast`
- **Eje `size`**: sí · **ficheros**: `card.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-23 · **Alcance**: **81%** — 46 de 57 knobs por token público
- **Medido**: 2026-08-24 · **Alcance**: **81%** — 46 de 57 knobs por token público
- **Knobs de apariencia**: 59 — público 46 · privado 10 · global 1 · literal 0 · sistema 2 · excepción 0 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 69 pública(s) — `gap-vertical`, `gap-horizontal`, `item-size-xs`, `item-size-sm`, `item-size-md`, `item-size-lg`, `item-size-xl`, `dot-size-xs`, `dot-size-sm`, `dot-size-md`, `dot-size-lg`, `dot-size-xl`, `item-gap`, `font-family`, `font-size-xs`, `font-size-sm`, `font-size-md`, `font-size-lg`, `font-size-xl`, `item-size`, `dot-size`, `font-size`, `font-weight`, `line-height`, `item-label-fg`, `disabled-item-label-fg`, `invalid-item-label-fg`, `indicator-radius`, `indicator-border-width`, `indicator-bg`, `indicator-border`, `hover-indicator-border`, `disabled-indicator-bg`, `disabled-indicator-border`, `checked-disabled-indicator-bg`, `invalid-indicator-border`, `invalid-ring`, `invalid-ring-gap`, `dot-fg`, `disabled-dot-fg`, `transition-duration`, `transition-ease`, `disabled-opacity`, `primary-solid`, `primary-solid-hover`, `neutral-solid`, `neutral-solid-hover`, `secondary-solid`, `secondary-solid-hover`, `affirm-solid`, `affirm-solid-hover`, `label-font-family`, `label-font-size`, `label-font-weight`, `label-line-height`, `label-fg`, `segmented-track-bg`, `segmented-track-shadow`, `segmented-track-padding`, `segmented-track-radius`, `segmented-segment-padding-inline`, `segmented-segment-padding-block`, `segmented-segment-fg`, `hover-segmented-segment-fg`, `segmented-segment-font-weight`, `segmented-pill-shadow`, `segmented-pill-radius`, `segmented-transition-duration`, `segmented-transition-ease` · 3 privada(s) forward — `_palette-solid`, `_palette-solid-hover`, `_palette-text`
- **Eje `size`**: no · **ficheros**: `radio-group.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-23 · **Alcance**: **100%** — 13 de 13 knobs por token público
- **Medido**: 2026-08-24 · **Alcance**: **100%** — 13 de 13 knobs por token público
- **Knobs de apariencia**: 14 — público 13 · privado 0 · global 0 · literal 0 · sistema 1 · excepción 2 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 29 pública(s) — `gap-xs`, `gap-sm`, `gap-md`, `gap-lg`, `gap-xl`, `item-size-xs`, `item-size-sm`, `item-size-md`, `item-size-lg`, `item-size-xl`, `font-family`, `font-size-xs`, `font-size-sm`, `font-size-md`, `font-size-lg`, `font-size-xl`, `gap`, `item-size`, `font-size`, `line-height`, `item-fg`, `active-item-fg`, `partial-item-fg`, `invalid-item-fg`, `item-hover-offset`, `focus-radius`, `transition-duration`, `transition-ease`, `disabled-opacity`
- **Eje `size`**: no · **ficheros**: `rating-group.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-23 · **Alcance**: **92%** — 57 de 62 knobs por token público
- **Medido**: 2026-08-24 · **Alcance**: **92%** — 57 de 62 knobs por token público
- **Knobs de apariencia**: 69 — público 57 · privado 5 · global 0 · literal 0 · sistema 7 · excepción 3 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 103 pública(s) — `stack-gap`, `font-family`, `font-size-xs`, `font-size-sm`, `font-size-md`, `font-size-lg`, `font-size-xl`, `line-height`, `fg`, `primary-text`, `secondary-text`, `neutral-text`, `affirm-text`, `fulfill-track`, `fulfill-border`, `fulfill-text`, `risk-text`, `threat-text`, `loss-track`, `loss-border`, `loss-text`, `trigger-height-xs`, `trigger-height-sm`, `trigger-height-md`, `trigger-height-lg`, `trigger-height-xl`, `trigger-padding-inline-xs`, `trigger-padding-inline-sm`, `trigger-padding-inline-md`, `trigger-padding-inline-lg`, `trigger-padding-inline-xl`, `trigger-gap-xs`, `trigger-gap-sm`, `trigger-gap-md`, `trigger-gap-lg`, `trigger-gap-xl`, `trigger-border-width`, `trigger-border`, `hover-trigger-border`, `trigger-radius`, `trigger-bg`, `trigger-shadow`, `trigger-fg`, `trigger-indicator-fg`, `trigger-indicator-size`, `placeholder-fg`, `disabled-border`, `disabled-bg`, `disabled-fg`, `invalid-border`, `content-z`, `content-padding-block-xs`, `content-padding-block-sm`, `content-padding-block-md`, `content-padding-block-lg`, `content-padding-block-xl`, `content-padding-inline-xs`, `content-padding-inline-sm`, `content-padding-inline-md`, `content-padding-inline-lg`, `content-padding-inline-xl`, `content-min-width`, `content-max-width`, `content-max-height`, `content-radius`, `content-fg`, `open-duration`, `close-duration`, `viewport-gap`, `viewport-padding`, `group-gap`, `group-padding-block`, `group-heading-padding-block`, `group-heading-padding-inline`, `group-heading-font-family`, `group-heading-font-size`, `group-heading-font-weight`, `group-heading-letter-spacing`, `group-heading-fg`, `separator-size`, `separator-margin-block`, `separator-bg`, `item-gap`, `item-padding-inline`, `item-fg`, `item-indicator-size`, `item-description-mt`, `item-description-fg`, `item-description-font-size`, `transition-duration`, `transition-ease`, `primary-track`, `primary-border`, `secondary-track`, `secondary-border`, `neutral-track`, `neutral-border`, `affirm-track`, `affirm-border`, `risk-track`, `risk-border`, `threat-track`, `threat-border` · 3 privada(s) forward — `_palette-track`, `_palette-border`, `_palette-text`
- **Eje `size`**: sí · **ficheros**: `select.css`

@ -5,7 +5,7 @@
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-23 · **Alcance**: **100%** — 24 de 24 knobs por token público
- **Medido**: 2026-08-24 · **Alcance**: **100%** — 24 de 24 knobs por token público
- **Knobs de apariencia**: 25 — público 24 · privado 0 · global 0 · literal 0 · sistema 1 · excepción 3 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 126 pública(s) — `height-xs`, `height-sm`, `height-md`, `height-lg`, `height-xl`, `padding-inline-xs`, `padding-inline-sm`, `padding-inline-md`, `padding-inline-lg`, `padding-inline-xl`, `gap-xs`, `gap-sm`, `gap-md`, `gap-lg`, `gap-xl`, `font-family`, `line-height`, `letter-spacing`, `font-size-xs`, `font-size-sm`, `font-size-md`, `font-size-lg`, `font-size-xl`, `font-weight-xs`, `font-weight-sm`, `font-weight-md`, `font-weight-lg`, `font-weight-xl`, `radius`, `radius-sm`, `radius-md`, `radius-lg`, `radius-xl`, `radius-full`, `border-width`, `shadow`, `transition-duration`, `transition-ease`, `primary-track`, `primary-element`, `primary-hover`, `primary-border`, `primary-solid`, `primary-solid-hover`, `primary-text`, `primary-contrast`, `neutral-track`, `neutral-element`, `neutral-hover`, `neutral-border`, `neutral-solid`, `neutral-solid-hover`, `neutral-text`, `neutral-contrast`, `risk-track`, `risk-element`, `risk-hover`, `risk-border`, `risk-solid`, `risk-solid-hover`, `risk-text`, `risk-contrast`, `threat-track`, `threat-element`, `threat-hover`, `threat-border`, `threat-solid`, `threat-solid-hover`, `threat-text`, `threat-contrast`, `secondary-track`, `secondary-element`, `secondary-hover`, `secondary-border`, `secondary-solid`, `secondary-solid-hover`, `secondary-text`, `secondary-contrast`, `affirm-track`, `affirm-element`, `affirm-hover`, `affirm-border`, `affirm-solid`, `affirm-solid-hover`, `affirm-text`, `affirm-contrast`, `palette-track`, `palette-element`, `palette-hover`, `palette-border`, `palette-solid`, `palette-solid-hover`, `palette-text`, `palette-contrast`, `solid-bg`, `solid-fg`, `solid-border`, `solid-hover-bg`, `solid-hover-border`, `solid-on-bg`, `solid-on-fg`, `solid-on-border`, `solid-on-hover-bg`, `solid-on-hover-border`, `outline-bg`, `outline-fg`, `outline-border`, `outline-hover-bg`, `outline-hover-border`, `outline-on-bg`, `outline-on-fg`, `outline-on-border`, `outline-on-hover-bg`, `outline-on-hover-border`, `ghost-bg`, `ghost-fg`, `ghost-border`, `ghost-hover-bg`, `ghost-hover-border`, `ghost-on-bg`, `ghost-on-fg`, `ghost-on-border`, `ghost-on-hover-bg`, `ghost-on-hover-border`, `disabled-opacity`, `invalid-border`
- **Eje `size`**: sí · **ficheros**: `toggle.css`

@ -1443,6 +1443,28 @@ Lo que `chart` destapó (2026-08-22):
chevron, con lo que los dos tokens de reposo del trigger leen muertos. Miden
bien con el panel CERRADO. No hay arreglo dentro de una corrida: el
instrumento sólo puede estar en un estado a la vez; se adjudica.
- **⚠ `eidos-lint` no conoce las exenciones que el test de vitest SÍ tiene**
(medido 2026-08-24 revisando la tanda). `src/uix/eidos/lint.test.ts` mantiene
cuatro conjuntos de exención declarados y razonados —`CSS_ONLY_LAYERS`
(`spin-field`: una capa CSS compartida que consumen css-field y number-field
por identidad estructural, sin morfo POR DISEÑO), `WIP_TRACKS`,
`KNOWN_MISSING_MORFO` y las raíces competidoras—, pero
`scripts/eidos-lint.ts` no los conoce: sobre `spin-field` muere con
«No morfo file» en vez de eximirlo. **El guard de la suite y el script de
línea de comandos discrepan sobre la misma ley**, y el que se corre a mano
es el que miente. Arreglo: que el script importe los mismos conjuntos, o que
vivan en un módulo que los dos lean. Preexistente, no de esta tanda.
- **⚠ La columna `size` del censo se apaga cuando el eje de talla SUBE al
contrato** (medido 2026-08-24 en `radio-group` y `rating-group`). La columna
se calcula leyendo bloques `[data-size]` en el CSS; cuando una escala privada
se promueve al TSC con `scope: 'size:{k}'` —que es la forma CANÓNICA— esos
bloques desaparecen de la receta y el censo deja de marcar el eje: el total
bajó de 57 a 55 justo al hacerlo mejor. **El instrumento premia la forma
vieja.** No afecta al ratio de alcance, pero sí a la tabla §9 y a cualquiera
que la lea para decidir si un componente tiene talla. Arreglo: leer también
los `scope: 'size:*'` del contrato, no sólo el CSS.
- **⚠⚠ EL ÍNDICE DE GIT ES COMPARTIDO: VERIFICAR EL ÁRBOL INDEXADO NO BASTA**
(medido 2026-08-24, con ocho sesiones sobre el mismo worktree). Hay UN solo
`.git/index`. La técnica que esta rama daba por segura —construir el índice

@ -145,9 +145,31 @@ declarar ruido reproduciéndolo sobre código idéntico.** Los dos lo hicieron.
- **La demo de `chat-log` se TOCÓ como instrumento** (montaba tres de sus seis
partes sólo en la prosa, así que once claves no tenían nodo que pintar). Roza
la regla de que las demos quedan fuera del eje: queda dicho, no escondido.
- Quedan en la cola, por alcance: `chat-message` 84 · `fab` 88 ·
`tags-input` 88 · `chat-typing` 89 · `collapsible` 90 · `accordion` 91 ·
`toolbar` 91 · `scroll-area` 94 · `tabs` 96 · `slider` 97 · `toast` 98.
- **LA COLA, con la separación que la primera redacción se dejó** (corregido
2026-08-24 al revisar: decía once y son treinta y cuatro, contados contra el
censo y el registro §8).
**A. Nunca han pasado por el eje — 16.** Sin entrada en §8 y sin README:
`field-langs` 0 % (bloqueado por el mandato Field) · `chronos` 1 % (carril
WIP) · `mockup` 38 % (⚠ sin ruta de demo) · `sidebar` 55 % (eje propio) ·
`image-adjustments` 67 % · `separator` 67 % · `chat-message` 84 % ·
`fab` 88 % · `tags-input` 88 % · `chat-typing` 89 % · `collapsible` 90 % ·
`toolbar` 91 % · `scroll-area` 94 % · `tabs` 96 % · `slider` 97 % ·
`toast` 98 %.
**B. Pasaron por el eje pero les FALTA el README «Talla y tema» — 18.** Su
número está adjudicado y su commit hecho; lo que falta es el artefacto del
paso §7 que se volvió obligatorio después de que cerraran (`e522e04e6`
recuperó 21, éstos quedaron fuera): `proof-of-human` · `palabras` ·
`audio-player` · `drawer` · `radio-cards` · `password-field` · `tag-group` ·
`popover` · `color-picker` · `timeline` · `stepper` · `aura` · `metrics` ·
`float-panel` · `chart` · `accordion` · `gradient-builder` · `nav-tree`.
**No es cola de tokenización: es deuda de documentación**, y se salda con un
barrido derivado del contrato como el que ya se hizo una vez.
Regenera siempre esta lista del censo, nunca de memoria: el criterio es
«alcance < 100 % y sin sección `## Talla y tema`», y el desempate entre A y B
es si tiene entrada en el registro §8.
## LO QUE DEJÓ LA SESIÓN DEL 2026-08-23

Loading…
Cancel
Save

Powered by TurnKey Linux.