Skip to content

EPIC: los gates de calidad del repo no miden nada (lint 127, 1 test concurrency-unsafe, typecheck rojo) #23

Description

@A-PachecoT

Hallazgos del ciclo /cto chat-sim (rama cto/chat-sim-rewrite). Los tres se verificaron corriendo el comando, no leyendo config. Relacionado: #19 (este repo tampoco corre tests en CI).

# Hallazgo Comando que lo muestra
#24 npm run lint sale 127 — eslint no instalado y cero archivos de config en el repo npm run lint; echo $?
#25 session-lifecycle.test.ts compara el set GLOBAL de sesiones de browser; rojo determinista desde que hay un 2º archivo que abre sesión npx vitest run src/__tests__/chat-sim/ src/components/chat-sim/
#26 npm run typecheck sale con 2 errores preexistentes en hero-shader/ npx tsc --noEmit

Por qué van juntos: son la misma clase — un gate cuyo verde no significa lo que su nombre promete.

El #24 es el peor: los invariantes 4 y 5 de .cofoundy/specs/architecture-v1.md ("purity by lint": core/ prohíbe Math.random, Date, fetch, window, document) están especificados como enforced por lint, y el lint nunca corrió. El #26 importa más de lo que parece porque tsc es el único gate real contra una mutación pura de tipos — TS los borra en runtime, así que ningún test los atrapa.

Mitigante medido, no supuesto: core/ sí es puro de hecho.

$ grep -rnE 'Math\.random|new Date|Date\.now|fetch\(|window\.|document\.' src/components/chat-sim/core/*.ts
compile.ts:2:// Pure by lint (invariant 4): no Math.random, Date, fetch, window, document in this file.
types.ts:2:// core/ is pure by lint (invariant 4, T-001 acceptance #6): no Math.random, Date, fetch, window,
…

6 hits, los 6 son comentarios que declaran el invariante. Cero violaciones reales. La disciplina aguantó por convención — que es exactamente lo que la arquitectura decía no querer depender de ("purity by lint, not convention").

Descartado tras revisar: core/playhead.ts usa requestAnimationFrame con un comentario que argumenta por qué no viola el invariante 4. Parecía una racionalización pero no lo es: architecture-v1.md §1 especifica rAF como el mecanismo del playhead, así que es el diseño documentado, no una impureza colada. Queda como criterio de aceptación en #24 (que la regla lo resuelva explícitamente en vez de por comentario), no como issue propio.

Guardrails: ninguno se arregla en la rama del ciclo. main ya está rojo por otra causa (#21) y mezclarlos hace irrastreable cuál arregló qué.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions