feat(gate): fase B de P0 — la puerta existe y sabe fallar
El hallazgo mayor confirmado de la auditoría 2026-08-26: ~16 validadores y
429 ficheros de test que nada ejecutaba (sin CI en ninguna rama de la
historia, hooks .sample, eidos-lint sin script npm). Esta fase los cablea:
- `check:gate` (scripts/check-gate.ts): svelte-check con política — src/
debe cero; web/ se mide contra el ledger menguante scripts/check-debt.ts
(34 ficheros, 71 errores congelados; sólo puede bajar, la disciplina de
theming-census-debt). Guard anti-vacío: sin marcador COMPLETED o con
conteo que no cuadra, falla — un gate que no inspeccionó nada no pasa.
- `eidos:lint` deja de ser invocación cruda (exit 1 real en invalid/dead).
- `gate`: check:gate → validadores rápidos → vitest al final. `lint` queda
deliberadamente FUERA: hay ~2.300 ficheros de deuda de formato
preexistente (nunca se formateó el repo entero; el one-shot pendiente es
`npm run format` en árbol quieto y re-añadirlo — documentado en el hook).
- scripts/hooks/pre-push: la fuente del hook, SIN armar. Se armó en
caliente, bloqueó el push legítimo del eje theming (secuencia mal: verde
primero, puerta después) y se desarmó — de paso la puerta demostró que
sabe fallar, que era el requisito de verificación de la fase.
- .prettierrc endOfLine:auto — neutraliza la clase CRLF/autocrlf de
Windows (~350 falsos rojos), sin cambiar formato real.
Verificación: check:gate exit 0 sobre HEAD (71 dentro del ledger, src/ a
cero tras 9d6533cb7 del eje navigation-menu) · sondeo individual del resto
de miembros del gate: verdes salvo los adjudicados en fase A.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
|
|
|
/**
|
|
|
|
|
* Per-file svelte-check ERROR debt for the demo tree (`web/`).
|
|
|
|
|
*
|
|
|
|
|
* The ledger only SHRINKS (the theming-census-debt discipline): an entry
|
|
|
|
|
* records how many type errors a demo file carried when the gate was armed
|
|
|
|
|
* (P0 fase A, audit 2026-08-26). `check-gate` fails when a file exceeds its
|
|
|
|
|
* entry or when a file not named here errors at all; when a file drops below
|
|
|
|
|
* its entry, lower the entry in the same change. Framework source (`src/`)
|
|
|
|
|
* has no ledger — it owes zero.
|
|
|
|
|
*
|
feat(eidos)!: un tema DICE lo que es — appearance obligatorio en ThemeDefinition, una sola fuente de verdad
39edbc8db dejaba la apariencia como OPCION del que renderiza
(RenderThemeCssOptions.appearance, pasada a mano por generated-css.ts):
apply() y renderCss() salian mudos, y habia DOS fuentes de verdad porque
la apariencia ya vivia implicita en el sufijo del id (/-(light|dark)$/).
Forma firmada por el autor:
- ThemeDefinition.appearance: ThemeEffective (el tipo de $libs/theme, sin
union nueva), OBLIGATORIO. Tres palabras: mode = la preferencia
(data-mode) · theme = lo pintado (data-theme) · appearance = que ES el
tema. No `colorScheme`: ese nombre es de la paleta derivada de seed.
- renderThemeCss lo lee del TEMA y lo emite SIEMPRE como primera
declaracion; la opcion desaparece sin shim. apply(), renderCss() y el
generador lo emiten gratis.
- El sufijo del id baja a convencion de BUSQUEDA del resolver: el
validador exige el campo (gate de forma, el que protege documentos) y
cierra la contradiccion sufijo<->apariencia (gate semantico). Un tema
nuevo por EidosConfigPatch sin el campo cae en el primero.
- Todo bloque que pinta una apariencia la declara: el bloque del seed
(applyColorScheme, que admite forzar el donante) emite color-scheme
desde la apariencia del tema DONANTE resuelto, no del mode crudo;
helper #resolveSchemeDonorThemeId compartido para resolverlo una vez.
- Documento persistido v1 -> v2, sin migracion: nadie puede adivinar la
apariencia de un tema viejo.
generated/ no cambia ni un byte (las dos lineas ya estaban; ahora vienen
del tema): renderGeneratedBaseEidosCss() sigue en 5751 nombres unicos /
8034 ocurrencias, contrato y censo quietos. Suite eidos + value-channels
460/460 (8 tests nuevos, 4 mutaciones probadas). check 71 -> 73: los dos
son web/routes/alpha/lib/docs-theme.ts sin appearance — el arbol
congelado pierde el tipo por diseño y entra en el ledger con la unica
excepcion escrita (crece SOLO cuando el framework se mueve bajo el arbol
provisional); grafito.ts y theme-variants.ts ya fallaban por literal y no
suben. src/ a cero. check:gate OK, eidos:lint 0.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
4 weeks ago
|
|
|
* THE ONE EXCEPTION (signed by the author, 2026-09-13): the ledger GROWS only
|
|
|
|
|
* when the framework moves under the provisional tree — `web/routes` is frozen
|
|
|
|
|
* pending a full rebuild, so its demos cannot follow a contract change, and
|
|
|
|
|
* holding the framework still to spare them would be the tail wagging the dog.
|
|
|
|
|
* Every raise names its cause on the entry. Nothing else may raise a number.
|
|
|
|
|
*
|
feat(gate): fase B de P0 — la puerta existe y sabe fallar
El hallazgo mayor confirmado de la auditoría 2026-08-26: ~16 validadores y
429 ficheros de test que nada ejecutaba (sin CI en ninguna rama de la
historia, hooks .sample, eidos-lint sin script npm). Esta fase los cablea:
- `check:gate` (scripts/check-gate.ts): svelte-check con política — src/
debe cero; web/ se mide contra el ledger menguante scripts/check-debt.ts
(34 ficheros, 71 errores congelados; sólo puede bajar, la disciplina de
theming-census-debt). Guard anti-vacío: sin marcador COMPLETED o con
conteo que no cuadra, falla — un gate que no inspeccionó nada no pasa.
- `eidos:lint` deja de ser invocación cruda (exit 1 real en invalid/dead).
- `gate`: check:gate → validadores rápidos → vitest al final. `lint` queda
deliberadamente FUERA: hay ~2.300 ficheros de deuda de formato
preexistente (nunca se formateó el repo entero; el one-shot pendiente es
`npm run format` en árbol quieto y re-añadirlo — documentado en el hook).
- scripts/hooks/pre-push: la fuente del hook, SIN armar. Se armó en
caliente, bloqueó el push legítimo del eje theming (secuencia mal: verde
primero, puerta después) y se desarmó — de paso la puerta demostró que
sabe fallar, que era el requisito de verificación de la fase.
- .prettierrc endOfLine:auto — neutraliza la clase CRLF/autocrlf de
Windows (~350 falsos rojos), sin cambiar formato real.
Verificación: check:gate exit 0 sobre HEAD (71 dentro del ledger, src/ a
cero tras 9d6533cb7 del eje navigation-menu) · sondeo individual del resto
de miembros del gate: verdes salvo los adjudicados en fase A.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
|
|
|
* Populated by fase A from the svelte-check run on alpha-0.1-background.
|
|
|
|
|
*/
|
|
|
|
|
export const CHECK_DEBT: Record<string, number> = {
|
|
|
|
|
'web/routes/alpha/+layout@.svelte': 3,
|
|
|
|
|
'web/routes/alpha/components/button/+page.svelte': 5,
|
|
|
|
|
'web/routes/alpha/lib/Playground.svelte': 3,
|
feat(eidos)!: un tema DICE lo que es — appearance obligatorio en ThemeDefinition, una sola fuente de verdad
39edbc8db dejaba la apariencia como OPCION del que renderiza
(RenderThemeCssOptions.appearance, pasada a mano por generated-css.ts):
apply() y renderCss() salian mudos, y habia DOS fuentes de verdad porque
la apariencia ya vivia implicita en el sufijo del id (/-(light|dark)$/).
Forma firmada por el autor:
- ThemeDefinition.appearance: ThemeEffective (el tipo de $libs/theme, sin
union nueva), OBLIGATORIO. Tres palabras: mode = la preferencia
(data-mode) · theme = lo pintado (data-theme) · appearance = que ES el
tema. No `colorScheme`: ese nombre es de la paleta derivada de seed.
- renderThemeCss lo lee del TEMA y lo emite SIEMPRE como primera
declaracion; la opcion desaparece sin shim. apply(), renderCss() y el
generador lo emiten gratis.
- El sufijo del id baja a convencion de BUSQUEDA del resolver: el
validador exige el campo (gate de forma, el que protege documentos) y
cierra la contradiccion sufijo<->apariencia (gate semantico). Un tema
nuevo por EidosConfigPatch sin el campo cae en el primero.
- Todo bloque que pinta una apariencia la declara: el bloque del seed
(applyColorScheme, que admite forzar el donante) emite color-scheme
desde la apariencia del tema DONANTE resuelto, no del mode crudo;
helper #resolveSchemeDonorThemeId compartido para resolverlo una vez.
- Documento persistido v1 -> v2, sin migracion: nadie puede adivinar la
apariencia de un tema viejo.
generated/ no cambia ni un byte (las dos lineas ya estaban; ahora vienen
del tema): renderGeneratedBaseEidosCss() sigue en 5751 nombres unicos /
8034 ocurrencias, contrato y censo quietos. Suite eidos + value-channels
460/460 (8 tests nuevos, 4 mutaciones probadas). check 71 -> 73: los dos
son web/routes/alpha/lib/docs-theme.ts sin appearance — el arbol
congelado pierde el tipo por diseño y entra en el ledger con la unica
excepcion escrita (crece SOLO cuando el framework se mueve bajo el arbol
provisional); grafito.ts y theme-variants.ts ya fallaban por literal y no
suben. src/ a cero. check:gate OK, eidos:lint 0.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
4 weeks ago
|
|
|
// 0 → 2 (2026-09-13): `ThemeDefinition.appearance` became mandatory and
|
|
|
|
|
// these two theme literals do not declare it. The frozen tree cannot follow.
|
|
|
|
|
'web/routes/alpha/lib/docs-theme.ts': 2,
|
|
|
|
|
// Also missing `appearance` since 2026-09-13 — masked: TS reports the nested
|
|
|
|
|
// `content.subtle` error per literal and suppresses the outer one. Fixing the
|
|
|
|
|
// inner error surfaces `appearance` in the same count; this cannot reach 0.
|
feat(gate): fase B de P0 — la puerta existe y sabe fallar
El hallazgo mayor confirmado de la auditoría 2026-08-26: ~16 validadores y
429 ficheros de test que nada ejecutaba (sin CI en ninguna rama de la
historia, hooks .sample, eidos-lint sin script npm). Esta fase los cablea:
- `check:gate` (scripts/check-gate.ts): svelte-check con política — src/
debe cero; web/ se mide contra el ledger menguante scripts/check-debt.ts
(34 ficheros, 71 errores congelados; sólo puede bajar, la disciplina de
theming-census-debt). Guard anti-vacío: sin marcador COMPLETED o con
conteo que no cuadra, falla — un gate que no inspeccionó nada no pasa.
- `eidos:lint` deja de ser invocación cruda (exit 1 real en invalid/dead).
- `gate`: check:gate → validadores rápidos → vitest al final. `lint` queda
deliberadamente FUERA: hay ~2.300 ficheros de deuda de formato
preexistente (nunca se formateó el repo entero; el one-shot pendiente es
`npm run format` en árbol quieto y re-añadirlo — documentado en el hook).
- scripts/hooks/pre-push: la fuente del hook, SIN armar. Se armó en
caliente, bloqueó el push legítimo del eje theming (secuencia mal: verde
primero, puerta después) y se desarmó — de paso la puerta demostró que
sabe fallar, que era el requisito de verificación de la fase.
- .prettierrc endOfLine:auto — neutraliza la clase CRLF/autocrlf de
Windows (~350 falsos rojos), sin cambiar formato real.
Verificación: check:gate exit 0 sobre HEAD (71 dentro del ledger, src/ a
cero tras 9d6533cb7 del eje navigation-menu) · sondeo individual del resto
de miembros del gate: verdes salvo los adjudicados en fase A.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
|
|
|
'web/routes/alpha/lib/theme-variants.ts': 4,
|
|
|
|
|
'web/routes/alpha/sheet/[variant]/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/background/balastro/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/background/beam/beam.svelte': 2,
|
|
|
|
|
'web/routes/demos/animations/background/bends/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/background/distorsion/distorsion.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/background/dither/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/background/floating-lines/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/background/galaxy/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/background/grainient/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/background/hyperspeed/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/background/letters/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/background/line-waves/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/background/orb/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/background/particles/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/background/veil/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/text/blur/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/text/count/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/text/focus/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/animations/text/gradient/+page.svelte': 1,
|
|
|
|
|
'web/routes/demos/heroscrolling/+page.svelte': 11,
|
|
|
|
|
'web/routes/demos/heroscrolling/hero-scrolling.svelte': 14,
|
|
|
|
|
'web/routes/otros/players/Giradiscos.svelte': 2,
|
|
|
|
|
'web/routes/otros/players/SoporteSingle.svelte': 1,
|
feat(eidos)!: un tema DICE lo que es — appearance obligatorio en ThemeDefinition, una sola fuente de verdad
39edbc8db dejaba la apariencia como OPCION del que renderiza
(RenderThemeCssOptions.appearance, pasada a mano por generated-css.ts):
apply() y renderCss() salian mudos, y habia DOS fuentes de verdad porque
la apariencia ya vivia implicita en el sufijo del id (/-(light|dark)$/).
Forma firmada por el autor:
- ThemeDefinition.appearance: ThemeEffective (el tipo de $libs/theme, sin
union nueva), OBLIGATORIO. Tres palabras: mode = la preferencia
(data-mode) · theme = lo pintado (data-theme) · appearance = que ES el
tema. No `colorScheme`: ese nombre es de la paleta derivada de seed.
- renderThemeCss lo lee del TEMA y lo emite SIEMPRE como primera
declaracion; la opcion desaparece sin shim. apply(), renderCss() y el
generador lo emiten gratis.
- El sufijo del id baja a convencion de BUSQUEDA del resolver: el
validador exige el campo (gate de forma, el que protege documentos) y
cierra la contradiccion sufijo<->apariencia (gate semantico). Un tema
nuevo por EidosConfigPatch sin el campo cae en el primero.
- Todo bloque que pinta una apariencia la declara: el bloque del seed
(applyColorScheme, que admite forzar el donante) emite color-scheme
desde la apariencia del tema DONANTE resuelto, no del mode crudo;
helper #resolveSchemeDonorThemeId compartido para resolverlo una vez.
- Documento persistido v1 -> v2, sin migracion: nadie puede adivinar la
apariencia de un tema viejo.
generated/ no cambia ni un byte (las dos lineas ya estaban; ahora vienen
del tema): renderGeneratedBaseEidosCss() sigue en 5751 nombres unicos /
8034 ocurrencias, contrato y censo quietos. Suite eidos + value-channels
460/460 (8 tests nuevos, 4 mutaciones probadas). check 71 -> 73: los dos
son web/routes/alpha/lib/docs-theme.ts sin appearance — el arbol
congelado pierde el tipo por diseño y entra en el ledger con la unica
excepcion escrita (crece SOLO cuando el framework se mueve bajo el arbol
provisional); grafito.ts y theme-variants.ts ya fallaban por literal y no
suben. src/ a cero. check:gate OK, eidos:lint 0.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
4 weeks ago
|
|
|
// Also missing `appearance` since 2026-09-13 — masked by the nested `inset-*`
|
|
|
|
|
// shadow error TS reports per literal; fixing it surfaces `appearance`, same count.
|
feat(gate): fase B de P0 — la puerta existe y sabe fallar
El hallazgo mayor confirmado de la auditoría 2026-08-26: ~16 validadores y
429 ficheros de test que nada ejecutaba (sin CI en ninguna rama de la
historia, hooks .sample, eidos-lint sin script npm). Esta fase los cablea:
- `check:gate` (scripts/check-gate.ts): svelte-check con política — src/
debe cero; web/ se mide contra el ledger menguante scripts/check-debt.ts
(34 ficheros, 71 errores congelados; sólo puede bajar, la disciplina de
theming-census-debt). Guard anti-vacío: sin marcador COMPLETED o con
conteo que no cuadra, falla — un gate que no inspeccionó nada no pasa.
- `eidos:lint` deja de ser invocación cruda (exit 1 real en invalid/dead).
- `gate`: check:gate → validadores rápidos → vitest al final. `lint` queda
deliberadamente FUERA: hay ~2.300 ficheros de deuda de formato
preexistente (nunca se formateó el repo entero; el one-shot pendiente es
`npm run format` en árbol quieto y re-añadirlo — documentado en el hook).
- scripts/hooks/pre-push: la fuente del hook, SIN armar. Se armó en
caliente, bloqueó el push legítimo del eje theming (secuencia mal: verde
primero, puerta después) y se desarmó — de paso la puerta demostró que
sabe fallar, que era el requisito de verificación de la fase.
- .prettierrc endOfLine:auto — neutraliza la clase CRLF/autocrlf de
Windows (~350 falsos rojos), sin cambiar formato real.
Verificación: check:gate exit 0 sobre HEAD (71 dentro del ledger, src/ a
cero tras 9d6533cb7 del eje navigation-menu) · sondeo individual del resto
de miembros del gate: verdes salvo los adjudicados en fase A.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
|
|
|
'web/routes/temas/_lib/grafito.ts': 2,
|
|
|
|
|
'web/routes/temas/animations/panel-cascade/+page.svelte': 1,
|
|
|
|
|
'web/routes/temas/sema/_lib/audition.ts': 1,
|
|
|
|
|
'web/routes/temas/sema/+page.svelte': 1,
|
|
|
|
|
'web/routes/temas/tema/+page.svelte': 1,
|
|
|
|
|
'web/routes/uix/components/aura/+page.svelte': 1,
|
|
|
|
|
'web/routes/uix/components/slider/+page.svelte': 1
|
|
|
|
|
};
|