- package.json: `gate` = `npm run lint && npm run check:gate && …`. La deuda
de formato era la razón para dejarlo fuera; el one-shot 468a9d113 la cerró.
- .git-blame-ignore-revs (nuevo) con 468a9d113. `git blame` lo usa con
`git config blame.ignoreRevsFile .git-blame-ignore-revs`; Gitea 1.18 no lo
lee.
- scripts/hooks/pre-push: el comentario decía «NOT ARMED until fase A is
green» y «lint is deliberately NOT in the gate yet»; ahora describe la
cadena real (lint → check:gate con src/ y scripts/ a cero → validadores →
apps:check → suite). Copiado a .git/hooks/pre-push, byte-idéntico.
- docs/testing-and-tooling.md: el bucle corto y §The gate dejan de decir que
lint no está y que scripts/ no se tipa, y nombran apps:check.
Verificación sobre este árbol: `npm run gate` exit 0 en 548 s (con un agente
de solo lectura corriendo en paralelo) — lint «All matched files use Prettier
code style!» · check:gate OK (89 de web/ en el ledger) · docs:check 0/0 en 820
· arts 0 · blocks 0 · packs 0 · rtl 0 · translations 0 errores · eidos:lint 0
inválidos · apps:check (1391 ficheros 0 errores, smoke boot 27/27 y 0 errores)
· suite 466/466 ficheros, 5445/5445 tests.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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>