Diagnostic reference · 7 properties · 7 failure modes
Referencia diagnóstica · 7 propiedades · 7 modos de falla
The Seven GS Diseases
Las Siete Enfermedades GS
Each GS property has a named failure mode at score 0. These names exist to make the failure recognizable — the same way medicine names diseases to enable diagnosis and treatment. The names are not criticism; they are categories. Knowing which disease a codebase has tells you exactly which cure to apply.
Cada propiedad GS tiene un modo de falla nombrado en puntaje 0. Estos nombres existen para hacer que la falla sea reconocible — de la misma manera que la medicina nombra enfermedades para habilitar diagnóstico y tratamiento. Los nombres no son crítica; son categorías. Saber qué enfermedad tiene una base de código te dice exactamente qué cura aplicar.
Score 0 · Self-describing
Puntaje 0 · Auto-descriptivo
Empty Map
Mapa Vacío
What it looks like
Cómo se ve
- No README with purpose (only setup instructions).Sin README con propósito (solo instrucciones de setup).
- No SPEC.md or equivalent — no single document that says what the system is supposed to do.Sin SPEC.md o equivalente — ningún documento que diga qué se supone que hace el sistema.
- No architectural constitution — nothing tells the AI what it must never do.Sin constitución arquitectónica — nada le dice a la IA qué nunca debe hacer.
- Intent lives in the original author's head. A new developer (or AI) reading the codebase cannot determine what it is supposed to do or why it is structured as it is.La intención vive en la cabeza del autor original. Un nuevo desarrollador (o IA) que lee el código no puede determinar qué se supone que debe hacer ni por qué está estructurado así.
How AI makes it worse
Cómo la IA lo empeora
Every session begins with a clean slate. The AI reconstructs intent from code shape alone — which produces a reconstruction, not a memory. It will correctly infer what the code does but not why constraints exist, which means it will "optimize" them away. The drift is silent and consistent: each session erodes a little more of the original intent, and no one notices until behavior changes in production.
Cada sesión comienza desde cero. La IA reconstruye la intención solo desde la forma del código — lo que produce una reconstrucción, no una memoria. Inferirá correctamente qué hace el código, pero no por qué existen las restricciones, lo que significa que las "optimizará" eliminándolas. La deriva es silenciosa y consistente: cada sesión erosiona un poco más de la intención original, y nadie lo nota hasta que el comportamiento cambia en producción.
Cure: Write SPEC.md (overview + vision + constraints). The sentinel tree recipe at /sentinel produces it in one session — 90 minutes, new or existing project.
Cura: Escribe SPEC.md (resumen + visión + restricciones). La receta del árbol sentinel en /sentinel lo produce en una sesión — 90 minutos, proyecto nuevo o existente.
→ Run the full audit
→ Corre la auditoría completa
Score 0 · Bounded
Puntaje 0 · Acotado
Spreading Boundary
Frontera Expansiva
What it looks like
Cómo se ve
- Files over 400–500 lines — common in AI-accelerated codebases where one prompt adds to an existing file rather than creating a new one.Archivos de más de 400–500 líneas — comunes en bases de código aceleradas por IA donde un prompt agrega a un archivo existente en lugar de crear uno nuevo.
- Functions that do multiple things; no single declared responsibility per function.Funciones que hacen múltiples cosas; sin responsabilidad única declarada por función.
- Modules without a single declared responsibility — a service layer that reaches directly into the database; controllers with business logic.Módulos sin responsabilidad única declarada — una capa de servicio que accede directamente a la base de datos; controladores con lógica de negocio.
- Boundaries that were clear at the start but have crept outward with each AI-generated addition.Fronteras que eran claras al inicio pero que se han expandido con cada adición generada por IA.
How AI makes it worse
Cómo la IA lo empeora
The AI's tool read window is capped. A file that exceeds the read budget is silently truncated — the AI edits against an incomplete view of the file. It adds code that contradicts what it couldn't see. Large files also produce large prompts, which increases token cost and reduces generation quality for every session that touches them. The pattern compounds: the more you add, the less the AI can see, the worse the additions get.
La ventana de lectura de herramientas de la IA tiene un límite. Un archivo que excede el presupuesto de lectura es truncado silenciosamente — la IA edita contra una vista incompleta del archivo. Agrega código que contradice lo que no pudo ver. Los archivos grandes también producen prompts grandes, lo que aumenta el costo en tokens y reduce la calidad de generación para cada sesión que los toca. El patrón se compone: mientras más agregas, menos puede ver la IA, peores son las adiciones.
Cure: Declare explicit size limits in the architectural constitution. Set max_file_length: 400 and max_function_length: 50 as enforced quality gates. Add them to SPEC.md's Quality Gates section — the sentinel tree recipe at /sentinel includes them by default.
Cura: Declara límites de tamaño explícitos en la constitución arquitectónica. Establece max_file_length: 400 y max_function_length: 50 como gates de calidad aplicados. Agrégalos a la sección de Gates de Calidad de SPEC.md — la receta del árbol sentinel en /sentinel los incluye por defecto.
→ Run the full audit
→ Corre la auditoría completa
Score 0 · Composable
Puntaje 0 · Componible
Tangled Web
Red Enmarañada
What it looks like
Cómo se ve
- Circular imports — module A imports from module B which imports from module A.Importaciones circulares — el módulo A importa del módulo B que importa del módulo A.
- A single change in one module requires changes in five others.Un solo cambio en un módulo requiere cambios en otros cinco.
- Feature flags that span module boundaries; direct writes from one module into another's internal state.Feature flags que cruzan fronteras de módulos; escrituras directas de un módulo al estado interno de otro.
- No declared dependency direction — any layer can call any other layer freely.Sin dirección de dependencias declarada — cualquier capa puede llamar a cualquier otra libremente.
How AI makes it worse
Cómo la IA lo empeora
The AI cannot model the full blast radius of a change without reading every transitively dependent file. Without clean boundaries, every task requires a large context window to be safe. Hallucinated side effects proliferate — the AI assumes a boundary exists and acts as if it does, generating changes that are safe in isolation but break dependencies it couldn't see. Each session adds new entanglement at the speed of generation.
La IA no puede modelar el radio de explosión completo de un cambio sin leer cada archivo transitivamente dependiente. Sin fronteras limpias, cada tarea requiere una ventana de contexto grande para ser segura. Los efectos secundarios alucinados proliferan — la IA asume que existe una frontera y actúa como si así fuera, generando cambios que son seguros en aislamiento pero rompen dependencias que no pudo ver. Cada sesión agrega nuevo enmarañamiento a velocidad de generación.
Cure: Declare module interfaces in SPEC.md. Enforce no-circular-deps in CI. Name the allowed dependency directions in the architectural constitution: "domain → application → infrastructure, never reversed." The sentinel tree recipe at /sentinel generates this architecture section automatically from your interview answers.
Cura: Declara las interfaces de módulos en SPEC.md. Aplica no-circular-deps en CI. Nombra las direcciones de dependencias permitidas en la constitución arquitectónica: "dominio → aplicación → infraestructura, nunca invertido." La receta del árbol sentinel en /sentinel genera esta sección de arquitectura automáticamente desde las respuestas de tu entrevista.
→ Run the full audit
→ Corre la auditoría completa
Score 0 · Verifiable
Puntaje 0 · Verificable
Unbound Spec
Spec Sin Límites
What it looks like
Cómo se ve
- No test files, or tests that only test internal implementation details — not user-visible behavior.Sin archivos de prueba, o pruebas que solo verifican detalles de implementación interna — no comportamiento visible para el usuario.
- No integration or end-to-end tests; the system has never been run from end to end in a test harness.Sin pruebas de integración o end-to-end; el sistema nunca ha sido ejecutado de extremo a extremo en un harness de pruebas.
- Coverage reports that look healthy but test nothing behavioral — 80% coverage, 0% behavioral confidence.Reportes de cobertura que parecen saludables pero no prueban nada de comportamiento — 80% de cobertura, 0% de confianza conductual.
- The spec describes behavior that cannot be run to verify.La spec describe comportamiento que no puede ejecutarse para verificar.
How AI makes it worse
Cómo la IA lo empeora
Without executable tests, the AI has no way to verify whether what it generated is correct. It generates, the generation looks plausible, and the session closes. The defect is discovered in production or not at all. Coverage statistics become meaningless because coverage measures execution, not correctness. The AI will also generate new tests to match its new code — ensuring they pass — rather than writing tests that bind the spec to behavior.
Sin pruebas ejecutables, la IA no tiene forma de verificar si lo que generó es correcto. Genera, la generación parece plausible, y la sesión cierra. El defecto se descubre en producción o no se descubre. Las estadísticas de cobertura se vuelven sin sentido porque la cobertura mide ejecución, no corrección. La IA también generará nuevas pruebas para que coincidan con su nuevo código — asegurándose de que pasen — en lugar de escribir pruebas que vinculen la spec al comportamiento.
Cure: Add behavioral tests before structural refactoring (oracle tests first rule). Declare the test pyramid in SPEC.md: unit at function boundaries, integration at module boundaries, end-to-end at use case boundaries. Each feature in SPEC.md should have at least one acceptance criterion that maps to a runnable test.
Cura: Agrega pruebas de comportamiento antes de refactorización estructural (regla oracle tests primero). Declara la pirámide de pruebas en SPEC.md: unitarias en fronteras de función, integración en fronteras de módulo, end-to-end en fronteras de caso de uso. Cada feature en SPEC.md debe tener al menos un criterio de aceptación que mapee a una prueba ejecutable.
→ Run the full audit
→ Corre la auditoría completa
Score 0 · Auditable
Puntaje 0 · Auditable
Amnesia Stack
Pila Amnésica
What it looks like
Cómo se ve
- Commit messages like "fix" or "update" or "wip" — no Conventional Commits, no context, no traceability.Mensajes de commit como "fix" o "update" o "wip" — sin Conventional Commits, sin contexto, sin trazabilidad.
- No ADR directory — architectural decisions that cannot be traced to any document.Sin directorio de ADRs — decisiones arquitectónicas que no pueden rastrearse a ningún documento.
- A codebase that reflects many past decisions whose rationale is unknown and now lost.Una base de código que refleja muchas decisiones pasadas cuya racionalidad es desconocida y ahora está perdida.
- No way to answer: "Why is this constraint here?" or "Who decided to use this pattern, and when?"Sin forma de responder: "¿Por qué está aquí esta restricción?" o "¿Quién decidió usar este patrón, y cuándo?"
How AI makes it worse
Cómo la IA lo empeora
The AI encounters a decision that looks suboptimal — an unusual data model, a non-standard pattern, a constraint that seems arbitrary — and "corrects" it. The constraint was intentional. The ADR that would have explained why it exists does not exist. The AI has no way to distinguish intentional tradeoffs from bugs. Over many sessions, every unusual-but-correct decision gets gradually normalized away. The codebase becomes consistent, conventional, and wrong in exactly the ways that matter.
La IA encuentra una decisión que parece subóptima — un modelo de datos inusual, un patrón no estándar, una restricción que parece arbitraria — y la "corrige". La restricción era intencional. El ADR que habría explicado por qué existe no existe. La IA no tiene forma de distinguir entre tradeoffs intencionales y bugs. A lo largo de muchas sesiones, cada decisión inusual-pero-correcta se va normalizando gradualmente. La base de código se vuelve consistente, convencional, y equivocada exactamente en las formas que importan.
Cure: Write ADR-000 for the foundational architecture. Declare Conventional Commits enforcement in the architectural constitution. An ADR-000 takes 20 minutes; recovering from months of undocumented AI drift takes much longer. The sentinel tree recipe at /sentinel generates ADR-000 automatically.
Cura: Escribe ADR-000 para la arquitectura fundacional. Declara el cumplimiento de Conventional Commits en la constitución arquitectónica. Un ADR-000 tarda 20 minutos; recuperarse de meses de deriva de IA no documentada tarda mucho más. La receta del árbol sentinel en /sentinel genera ADR-000 automáticamente.
→ Run the full audit
→ Corre la auditoría completa
Score 0 · Defended
Puntaje 0 · Defendido
Open Gates
Puertas Abiertas
What it looks like
Cómo se ve
- No input validation at API boundaries — user-supplied data flows directly into queries or business logic.Sin validación de input en los boundaries de API — los datos del usuario fluyen directamente a queries o lógica de negocio.
- Secrets hardcoded in source files — API keys, passwords, connection strings in committed code.Secretos codificados en archivos fuente — API keys, contraseñas, cadenas de conexión en código commiteado.
- Error messages that expose internal stack traces or database structure to end users.Mensajes de error que exponen stack traces internos o estructura de base de datos a usuarios finales.
- No distinction between authenticated and unauthenticated routes in the codebase or the spec.Sin distinción entre rutas autenticadas y no autenticadas en la base de código ni en la spec.
How AI makes it worse
Cómo la IA lo empeora
The AI generates code that reflects the patterns in the existing codebase. If the existing code has no input validation, the AI adds new endpoints without validation — because that is the pattern it observes. If secrets are in source files, new secrets land in source files. If error responses leak internals, new error responses leak internals. The failure mode is not AI malice; it is AI pattern replication at speed. Every new endpoint is a new attack surface, generated in the style of the existing undefended codebase.
La IA genera código que refleja los patrones en la base de código existente. Si el código existente no tiene validación de input, la IA agrega nuevos endpoints sin validación — porque ese es el patrón que observa. Si los secretos están en archivos fuente, los nuevos secretos aterrizan en archivos fuente. Si las respuestas de error filtran internos, las nuevas respuestas de error filtran internos. El modo de falla no es malicia de la IA; es replicación de patrones de IA a velocidad. Cada nuevo endpoint es una nueva superficie de ataque, generada en el estilo de la base de código existente no defendida.
Cure: Declare the trust boundary in SPEC.md. Add a Defended section to the architectural constitution: validation required at every API boundary, secrets in environment files only, error responses never leak internals. Once declared, the AI will generate defensive code by default — because the pattern it observes is the defended one.
Cura: Declara el trust boundary en SPEC.md. Agrega una sección de Defendido a la constitución arquitectónica: validación requerida en cada boundary de API, secretos solo en archivos de entorno, las respuestas de error nunca filtran internos. Una vez declarado, la IA generará código defensivo por defecto — porque el patrón que observa es el defendido.
→ Run the full audit
→ Corre la auditoría completa
Score 0 · Executable
Puntaje 0 · Ejecutable
Frozen Spec
Spec Congelada
What it looks like
Cómo se ve
- A SPEC.md or README that describes behavior the system does not actually exhibit.Un SPEC.md o README que describe comportamiento que el sistema no exhibe realmente.
- Features documented as complete that do not pass tests — or for which no tests exist.Features documentadas como completas que no pasan pruebas — o para las que no existen pruebas.
- A CI pipeline that does not exist or is not enforced on the main branch.Un pipeline de CI que no existe o no se aplica en la rama main.
- A project that cannot be run from a clean clone without tribal knowledge — missing env vars, undocumented setup steps, dependencies that aren't in the manifest.Un proyecto que no puede ejecutarse desde un clone limpio sin conocimiento tribal — variables de entorno faltantes, pasos de setup no documentados, dependencias que no están en el manifiesto.
How AI makes it worse
Cómo la IA lo empeora
The AI reads the spec and believes it. It generates code consistent with the documented (but non-executable) state, not the actual (running but different) state. The spec and the system diverge further with each session. The AI confidently produces correct code for a spec that does not match reality — and because the code looks right, the divergence is hard to detect until a critical feature fails in production. The spec becomes a fiction that the AI maintains with increasing confidence.
La IA lee la spec y la cree. Genera código consistente con el estado documentado (pero no ejecutable), no con el estado real (en ejecución pero diferente). La spec y el sistema divergen más con cada sesión. La IA produce con confianza código correcto para una spec que no coincide con la realidad — y porque el código parece correcto, la divergencia es difícil de detectar hasta que una feature crítica falla en producción. La spec se convierte en una ficción que la IA mantiene con creciente confianza.
Cure: The spec must be executable — every claim in it must be verified by a running test. Run the test suite as the first thing in every AI session. If tests fail, fix them before writing new features. A frozen spec that doesn't match a passing test suite is not a spec; it is documentation debt that will cost more to resolve with each session that passes.
Cura: La spec debe ser ejecutable — toda afirmación en ella debe ser verificada por una prueba en ejecución. Corre la suite de pruebas como lo primero en cada sesión de IA. Si las pruebas fallan, arréglales antes de escribir nuevas features. Una spec congelada que no coincide con una suite de pruebas pasando no es una spec; es deuda de documentación que costará más resolver con cada sesión que pase.
→ Run the full audit
→ Corre la auditoría completa
Quick Reference
Referencia Rápida