Reparación, no trabajo nuevo. `edc019515` salió con la mitad del componente:
la receta, el CSS, el README, la demo y la ficha entraron; el ledger R-5.4, el
guard y la entrada del §8 se quedaron fuera, y en su lugar viajaron fragmentos
de OTRA sesión (rating-group). Causa medida: en esta rama el ÍNDICE de git es
un recurso compartido — entre el `git add` verificado y el `git commit` otra
sesión hizo su propio `reset` + `add`, y el commit fotografió su índice, no el
mío. Verificar el árbol indexado no basta si alguien puede reescribirlo
DESPUÉS de mirarlo; la verificación y el commit tienen que ir en la misma
invocación. Sin esto `npm run theming:sentinel -- toggle` falla: el contrato
tiene 126 claves y el ledger no tenía ninguna.
Lo que entra:
- **Ledger** (`theming-sentinel-exceptions.ts`): las 8 adjudicaciones medidas
de toggle (los cinco pasos de `rounded` que la demo no expone,
`disabled-opacity`, y el par de transición que ES lo que el guard congela)
y la excepción POR PATRÓN de sus 48 claves de tono — la cascada de paleta,
medida aquí: con `data-color=primary` `--toggle-primary-solid` no mueve nada
y `--palette-solid` sobre el mismo nodo repinta; quita `data-color` y
`--toggle-neutral-solid` pinta otra vez.
- **Guard** (`theming-sentinel.ts`): el barrido de VARIOS ejes como producto
cartesiano (un solo eje da la misma secuencia de siempre), el valor `null`
que QUITA el atributo, el mismo barrido en el pase de HOVER, y el override
de toggle. 36/126 → 70/126 sin adjudicar nada. Los 12 componentes con
`sweepAttr` re-verificados uno a uno: cero regresiones, cero STALE.
- **`PLAN-theming.md` §8**: la entrada de toggle.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>