You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/docs/audit/theming/result.md

130 lines
6.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# result — alcance de tema: análisis y propuesta
> Generado por `node --import tsx/esm scripts/theming-census.ts --report`.
> Lo **medido** y la **propuesta** se regeneran; el **Veredicto** (§5) se conserva.
> Vista de conjunto: [README](./README.md) · método y protocolo:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1, §2, §7.
- **Medido**: 2026-08-24 · **Alcance**: **90%** — 19 de 21 knobs por token público
- **Knobs de apariencia**: 21 — público 19 · privado 0 · global 0 · literal 2 · sistema 0 · excepción 1 _(los dos últimos, fuera del ratio)_
- **Contrato hoy** (`lib/recipes/base.ts`): 27 pública(s) — `gap`, `padding-block`, `padding-inline`, `actions-gap`, `actions-margin-block-start`, `extra-margin-block-start`, `title-font-size`, `title-font-weight`, `title-line-height`, `title-fg`, `description-font-size`, `description-line-height`, `description-fg`, `extra-font-size`, `extra-fg`, `media-font-size`, `media-fg`, `code-font-family`, `code-font-weight`, `code-letter-spacing`, `code-fg`, `description-measure`, `extra-measure`, `success-fg`, `error-fg`, `warning-fg`, `info-fg`
- **Eje `size`**: no · **ficheros**: `result.css`
## 1. Knobs fuera de alcance
### 1.1 Directo a primitivo global (0)
_Ninguno._
### 1.2 A través de un privado (0)
_Ninguno._
### 1.3 Literales (2)
| # | fichero:línea | selector | propiedad | valor |
| ---: | --- | --- | --- | --- |
| 1 | `result.css:41` | `[data-result-media]` | `line-height` | `1` |
| 2 | `result.css:104` | `[data-result-extra]` | `inline-size` | `100%` |
### 1.4 Excepciones firmadas (1) — fuera del ratio
Literales que llevan su anotación `/* literal: <razón> */` en la propia
declaración: la válvula de recipe-contract §3, la misma que honra
`component-audit`. **Una desviación firmada no es deuda** — se listan para que la
razón se lea, no para acuñarlas.
| # | fichero:línea | selector | propiedad | valor |
| ---: | --- | --- | --- | --- |
| 1 | `result.css:61` | `[data-result-code]` | `font-size` | `1em` |
## 2. Sistema transversal (0) — informativo, fuera del ratio
Un tema los alcanza **a nivel de sistema**, por diseño (recipe-contract §2).
_Ninguno._
## 3. Privados de la receta — ¿de dónde sale su valor?
| privado | declaraciones | valor(es) | origen | ¿deriva de un público? |
| --- | ---: | --- | --- | :-: |
| `--_result-media-fg` | 4 | `var(--result-success-fg)`, `var(--result-error-fg)`, `var(--result-warning-fg)`, `var(--result-info-fg)` | public | **sí** |
## 4. Propuesta de corrección
### 4.1 Tokens a declarar en `lib/recipes/base.ts` (1)
Valor **verbatim** del CSS de hoy: el default no se mueve, sólo cambia quién
puede moverlo. Nombres derivados de recipe-contract §1 (ejes lógicos, talla
al final) y theming §6.7 (slots de color, modificador delante). Un token con
DOS valores distintos es una colisión de nombre: son dos knobs, o el nombre
no distingue lo que debería — se marca `⚠`.
| token (`--result-…`) | scope TSC | valor propuesto | usos |
| --- | --- | --- | ---: |
| `code-font-size` | `root` | `1em` | 1 |
### 4.2 Sin nombre mecánico (2)
- **⚠ decisión: `1` es un valor identidad o geometría de layout, no un knob de tema — el perímetro de «knob» es D-TH.2, sin firmar** — 1: `line-height`.
- **⚠ decisión: `100%` es un valor identidad o geometría de layout, no un knob de tema — el perímetro de «knob» es D-TH.2, sin firmar** — 1: `inline-size`.
### 4.4 Lo que hay que comprobar a mano (PLAN-theming §1.3 · §7.4)
- [ ] **Privado que no deriva de un público** — §3 lo marca; el privado debe leer el público o desaparecer.
- [ ] **Velo o acento en el nodo equivocado** (`archetype: 'item'` en un envoltorio, un `background` en shorthand que mata la capa de estado) — se mide desde el píxel hacia arriba.
- [ ] **Doble animación** al mover un sello a una superficie con animación propia — registro de `animationstart`/`animationend`.
- [ ] **Diff de computed = 0** en reposo · hover · abierto · disabled · foco, por talla, antes y después.
- [ ] **Centinela por token nuevo**: valor imposible en el root → el nodo lo sigue. Si no, el token miente.
## 5. Veredicto
<!-- veredicto:start -->
**EJECUTADO 2026-08-22 — 14 % → 23 % → 86 % → 90 %**, en dos pasadas: cuatro claves
de caja y luego **15 de COSTURA** para el tipo y la tinta (8 → 27). `global`
queda a CERO; los tres knobs restantes son literales de identidad.
**Lo que la receta posee es su CAJA**: el inset de página
(`padding-block`/`-inline`), el ritmo entre bloques
(`actions-margin-block-start`, `extra-margin-block-start`) y los cuatro acentos
de estado que ya tenía. Cuatro claves nuevas, ni una más.
**El tipo y la tinta se COSEN, no se inventan** (firmado 2026-08-22). Los
valores siguen siendo los del canon —bundle de talla, ranuras de contenido,
escalas de peso e interlineado, familia mono del tema— pero el knob es de
`result`, que es lo que PLAN §2-A exige y lo que permite retocar esta superficie
sin mover el sistema. Mi primera lectura («no se acuña nada») era media
doctrina: el valor es del sistema, el knob es del componente.
**Aquí la costura va por PARTE, no por rol** —al contrario que en `chart`—
porque son cinco partes con tipografía distinta y ningún estilo con nombre juega
«estado terminal de página»: `title-{font-size,font-weight,line-height,fg}` ·
`description-{font-size,line-height,fg}` · `extra-{font-size,fg}` ·
`code-{font-family,font-weight,letter-spacing,fg}` · `media-{font-size,fg}`.
Es la forma dominante del catálogo (`description-fg` ×8, `title-font-size`…).
El `calc(var(--size-xl-font-size) * 3)` del glifo entra en su costura con el
multiplicador DENTRO del valor: el 3× es identidad, pero así el glifo sigue a la
escala.
**Los tres literales que quedan**: el `1em` del código grande (hereda la
escala del glifo a propósito), el `line-height: 1` del glifo y el `100%` del
extra. Ninguno es tema — y el `0.04em` de tracking del código, que sí llevaba su
anotación, salió del ratio cuando el censo aprendió a leerlas (90 %).
**Un renombrado de higiene**: el privado `--_result-media-color` pasa a
`--_result-media-fg` — la gramática firmada (D-TH.6) dice `fg`, y R-5.3 no mira
los privados, así que se corrige a mano al pasar por aquí.
**Guard R-5.4**: 15/27 en vivo, y **las doce que callan están medidas sobre
nodos REALES**, no sintéticos (la lección de `drag-drop`), con los controles de
la propia demo: los tres acentos de estado sólo pintan bajo su `data-status`
—se pulsó su chip—, el bloque `extra` es opcional —se marcó su casilla—, el
código grande sólo existe en los estados http —se pulsó `not-found`— y la tinta
por defecto del glifo sólo gana SIN `data-status`, porque cada estado re-apunta
el privado a su acento por diseño —se quitó el atributo—. Las doce alcanzan.
Sonda antes/después: **0 diffs en 990 valores** (5 nodos × 7 estados).
<!-- veredicto:end -->

Powered by TurnKey Linux.