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é.
Hallazgos del ciclo
/ctochat-sim (ramacto/chat-sim-rewrite). Los tres se verificaron corriendo el comando, no leyendo config. Relacionado: #19 (este repo tampoco corre tests en CI).npm run lintsale 127 — eslint no instalado y cero archivos de config en el reponpm run lint; echo $?session-lifecycle.test.tscompara el set GLOBAL de sesiones de browser; rojo determinista desde que hay un 2º archivo que abre sesiónnpx vitest run src/__tests__/chat-sim/ src/components/chat-sim/npm run typechecksale con 2 errores preexistentes enhero-shader/npx tsc --noEmitPor 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íbeMath.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 porquetsces 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.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.tsusarequestAnimationFramecon 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.
mainya está rojo por otra causa (#21) y mezclarlos hace irrastreable cuál arregló qué.