docs(theming): la deuda B queda saldada - los tres ultimos README "Talla y tema"

Pieza del CIERRE del eje: los tres componentes que a6df34c05 dejo fuera con
su razon escrita reciben su seccion, con la tabla DERIVADA del contrato y
del ledger (verificada programaticamente: cada valor contra base.ts, cada
razon verbatim contra el ledger, en las dos direcciones).

- proof-of-human (+33): 20 claves publicas, tabla plana, pasos por talla y
  nombre resuelto; sin bloque en el ledger, sin lista de silencios.
- audio-player (NUEVO, 57): su directorio de eidos existia sin README. 8
  claves propias + 2 adjudicaciones; el aviso de la pestaña Tokens NO es el
  boilerplate porque habria sido falso - no tiene demo propia (404 a
  proposito): su escenario es la demo de media-player con el chip de audio,
  y esa pestaña esta acotada a component="media-player". Es un skin sobre
  las partes de media-player que consume sus 61 claves y añade estas 8.
  Cierra de paso el E-2.3 (Missing README) del component-audit.
- palabras (NUEVO, 40): carril propio en WIP_TRACKS, SIN entrada en base.ts
  - cero claves, nada que derivar: la seccion honesta, sin tabla inventada.
  Hallazgo medido que corrige el guion: los 114 nombres --palabras-* que
  las recetas consumen con var(..., fallback) no son tokens huerfanos ni
  superficie de tema - son la proyeccion en vivo del scheme-style del
  documento (palabras-scheme.ts los escribe por instancia). El 22,2% del
  censo es OTRO eje: canal de valor del esquema, no tema. El README no es
  el canon del carril y lo dice.

docs:check 0/0 sobre 816 (los tres en el corpus que se linta); prettier
limpio. Fuera de alcance, registrado: el generador de a6df34c05 perdia la
ULTIMA adjudicacion cuando la entrada final no lleva coma - seis de los
quince README del 24 citan una razon de menos (password-field 6 de 7), y
tras la GRANDE esos bloques estan ademas rancios; deuda de regeneracion.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
alpha-0.1-background
dev 1 month ago
parent 2c61946fba
commit ef47f34478

@ -0,0 +1,56 @@
# Eidos AudioPlayer
Fecha de revisión: 2026-08-25. Las decisiones (gate `D-AP2`) viven en
`docs/process/PLAN-audio-player-v2.md`.
`<AudioPlayer>` es la puerta del 90 % del audio: **una etiqueta** monta
`<MediaPlayer media="audio">` + `<MediaPlayer.AudioLayout>`. Es una **raíz
competidora** sobre el mismo contrato de soma —el precedente Toast/Toaster
(D-AP2.2)—, deliberadamente NO `MediaPlayer.AudioPlayer`. Su receta
(`audio-player.css`) viste las partes del media-player: todo está bajo
`[data-media-player][data-variant]`, y el atributo `data-variant` sólo lo
estampa esta raíz, así que componer `<MediaPlayer media="audio">` a mano
conserva el flujo sin opinión.
Las cuatro formas del eje `variant` están ancladas a su sector (D-AP2.3):
`card` (página de episodio), `row` (entrada de lista), `bar` (barra de app
persistente), `inline` (nota de voz). **Una variante decide qué se VE y cómo
fluye — nunca qué puede hacer el reproductor**; comportamiento, eventos y
obligaciones de a11y viven en el player.
La doctrina del chasis —acento firmado, scrubber = Slider canónico re-tintado,
scrim, eje `size`— vive en
[`../media-player/README.md`](../media-player/README.md), y su contrato de 61
claves `--media-player-*` es el que este skin consume. Lo de abajo es lo que el
skin de audio AÑADE.
## Talla y tema
**8 clave(s) pública(s)** en `lib/recipes/base.ts` (bloque `audio-player`).
Es el contrato vivo: cada clave es un `--{componente}-{ranura}` que un tema
puede escribir, y el guard R-5.4 comprueba que ninguna miente.
> Este componente **no tiene demo propia**: `/uix/components/audio-player` da
> 404 a propósito, porque el escenario es la demo de `media-player` con el chip
> `media` conmutado a audio. La pestaña `Tokens` de esa demo está acotada a
> `component="media-player"`, así que estas ocho claves no aparecen en ella: la
> tabla de aquí es la fuente. El skin se mide con
> `scripts/__probe-audio-skin.ts`, que pulsa el chip y recorre las cuatro
> variantes.
| Token (`--audio-player-…`) | Valor por defecto |
| -------------------------- | ----------------------------- |
| `gap` | `var(--space-3)` |
| `title-font-weight` | `var(--font-weight-semibold)` |
| `live-font-weight` | `var(--font-weight-semibold)` |
| `live-letter-spacing` | `0.08em` |
| `artwork-radius` | `var(--radius-md)` |
| `artwork-size-card` | `calc(var(--space-8) * 8)` |
| `artwork-size-row` | `3.5rem` |
| `artwork-size-bar` | `2.5rem` |
**Lo que el guard R-5.4 da por silencioso, con su razón medida**
(`scripts/theming-sentinel-exceptions.ts`):
- `live-font-weight` — the LIVE badge only exists while the provider reflects a live stream (display:none otherwise) and the demo plays a file; mounted with [data-live] 2026-08-23 -> reaches (600 -> 333)
- `live-letter-spacing` — same badge; mounted -> reaches (1.28px -> 7px)

@ -0,0 +1,39 @@
# Eidos palabras
Fecha de revisión: 2026-08-25.
`<palabras>` es el editor de panel semántico sobre el motor de bloques: la raíz
(`palabras.svelte`) más el panel generado desde esquema (`panel-schema.ts`), el
`scheme-style` que conduce el look (`palabras-scheme.ts`) y las dos recetas
(`palabras.css` + `palabras-chrome.css`).
**Este README no es el canon del carril.** La doctrina de `palabras` vive en sus
propios documentos, y son ellos los citables:
[`DESIGN.md`](./DESIGN.md) (canon de decisiones cerradas),
[`INTERACCION.md`](./INTERACCION.md), [`ESQUEMA.md`](./ESQUEMA.md),
[`VISUAL.md`](./VISUAL.md), [`PLAN-EJECUCION.md`](./PLAN-EJECUCION.md),
[`PLAN.md`](./PLAN.md), [`AUDIT.md`](./AUDIT.md) y la bitácora
[`continuar-palabras.md`](./continuar-palabras.md).
## Talla y tema
`palabras` es un **carril propio**: está en `WIP_TRACKS`
(`scripts/component-audit.ts`), así que el audit lo saca del catálogo y de los
veredictos, y el contrato de receta (R-4.x) no se le aplica hasta que el carril
aterrice. **No tiene entrada en `lib/recipes/base.ts`** — cero claves
declaradas —, de modo que aquí no hay tabla que derivar: escribir una sería
inventarla.
Lo que sí está medido es el tamaño de la deuda. El censo del eje
(`node --import tsx/esm scripts/theming-census.ts --only palabras`) cuenta **468
knobs** de apariencia con un alcance nominal del **22,2 %**: 103 leen nombres
`--palabras-*`, 272 primitivos globales y 87 son literales. Pero ese 22 % **no
es superficie de tema**: las dos recetas no declaran ni una sola de esas
propiedades (114 nombres distintos consumidos con `var(…, fallback)`, cero
declaraciones), porque son la **proyección en vivo del `scheme-style` del
documento** — `palabras-scheme.ts` las escribe por instancia como
`--palabras-scheme-*`. Ese canal pertenece al esquema del documento, no al tema.
La deuda, por tanto, no se salda aquí: se salda declarando el bloque `palabras`
en `base.ts` cuando el carril llegue a esa fase, y la decisión de cuándo vive en
[`PLAN-EJECUCION.md`](./PLAN-EJECUCION.md), no en el eje de theming.

@ -75,6 +75,39 @@ rotate/drag), **reCAPTCHA v2** (checkbox + server scoring). UIX contributes: the
orchestrator/challenge split, the network-agnostic contract, full accessibility
(arrow-key trace + live region) and the polymorphic skin.
## Talla y tema
**20 clave(s) pública(s)** en `lib/recipes/base.ts` (bloque `proof-of-human`), con sus pasos por talla y el nombre RESUELTO que consume la receta.
Es el contrato vivo: cada clave es un `--{componente}-{ranura}` que un tema
puede escribir, y el guard R-5.4 comprueba que ninguna miente.
> Su demo todavía **no** tiene pestaña `Tokens` (el paso 11 del protocolo
> §7 llegó después de que este componente cerrara): la tabla de aquí es la
> fuente hasta que la tenga.
| Token (`--proof-of-human-…`) | Valor por defecto |
| ---------------------------- | ------------------------------------------------------------ |
| `min-height-sm` | `calc(var(--size-sm-control-height) * 3)` |
| `min-height-md` | `calc(var(--size-md-control-height) * 3)` |
| `min-height-lg` | `calc(var(--size-lg-control-height) * 3)` |
| `min-height` | `var(--proof-of-human-min-height-md) _(resuelto por talla)_` |
| `radius` | `var(--radius-md)` |
| `bg` | `var(--color-surface-raised)` |
| `border` | `var(--color-border-default)` |
| `border-width` | `var(--border-width)` |
| `verified-border` | `var(--color-fulfill-solid)` |
| `failed-border` | `var(--color-risk-solid)` |
| `locked-opacity` | `0.55` |
| `tolerance-opacity` | `0.5` |
| `guide-opacity` | `0.65` |
| `guide-width` | `var(--border-width-thick, 2px)` |
| `trail-width` | `4px` |
| `goal-width` | `3px` |
| `goal-opacity` | `0.8` |
| `token-size` | `1.25rem` |
| `token-radius` | `var(--radius-full)` |
| `token-focus-offset` | `3px` |
## Comparativa
| Capability | UIX | GeeTest | Turnstile/hCaptcha | Arkose | reCAPTCHA v2 |

Loading…
Cancel
Save

Powered by TurnKey Linux.