Skip to main content

Hard Compiler & Linter Gates

La práctica de revertir o bloquear inmediatamente los cambios del agente de IA si el compilador (tsc, rustc) o un linter rápido (Biome, Ruff) devuelven un código de salida no nulo.

1. Visión general del concepto y problema sistémico

Los modelos de IA tienden a escribir código que visualmente parece impecable, pero falla al intentar compilarse. Si un desarrollador acepta un diff sin una verificación automática estricta:

  • Se acumulan desajustes de tipos (Type Mismatches) en el proyecto.
  • Se importan módulos que fueron eliminados hace tres meses.
  • Se rompen acuerdos sobre la limpieza del código (Dead Code, variables no utilizadas, reglas de formato contradictorias).

Deterministic Linter Gates transforman al linter y al compilador en un censor implacable. No se permite que el agente deje su código en el repositorio hasta que el exit_code == 0 sea confirmado por el sistema de verificación.

2. Taxonomía arquitectónica y modelo mental

┌─────────────────────────────────────────────────────────────┐
│                 DETERMINISTIC GATE PIPELINE                 │
├─────────────────────────────────────────────────────────────┤
│ AGENT PROPOSES PATCH                                        │
│   • Writes code directly or via unified diff                │
├─────────────────────────────────────────────────────────────┤
│                          │                                  │
│                          ▼ TRIGGER HARNESS                  │
│   1. Format & Lint: `biome check --write`                   │
│   2. Strict Types: `tsc --noEmit --strict`                  │
│   3. Security Audit: `pnpm audit --audit-level=high`        │
├─────────────────────────────────────────────────────────────┤
│                          │                                  │
│                 ┌────────┴────────┐                         │
│                 ▼                 ▼                         │
│           [ EXIT CODE 0 ]   [ EXIT CODE != 0 ]              │
│                 │                 │                         │
│                 ▼                 ▼                         │
│          COMMIT & PROCEED   AUTOMATIC GIT ROLLBACK          │
│                             & FEED ERROR BACK TO AGENT      │
└─────────────────────────────────────────────────────────────┘

3. Pipeline técnico y mecánica interna

01. Prohibición de any y supresión de errores

En la configuración de Biome / ESLint se activa la regla estricta:

{
  "rules": {
    "suspicious": { "noExplicitAny": "error" },
    "correctness": { "noUnusedVariables": "error" }
  }
}

Si el agente intenta usar any para eludir rápidamente un error de tipado, el gate rechaza inmediatamente el cambio con un requerimiento claro: "Especifica un discriminated union en lugar de any".

02. Protección contra rutas de importación rotas

El gate ejecuta una verificación de resolución de módulos. Si el modelo alucina y llama a import { helper } from '@/lib/helpers', que no existe en el sistema de archivos, el compilador lo detecta en 40 milisegundos, evitando que el código llegue al commit.

4. Escenarios prácticos de ingeniería en producción

01. Prohibición de any y supresión de errores

En la configuración de Biome / ESLint se activa la regla estricta:

{
  "rules": {
    "suspicious": { "noExplicitAny": "error" },
    "correctness": { "noUnusedVariables": "error" }
  }
}

Si el agente intenta usar any para eludir rápidamente un error de tipado, el gate rechaza inmediatamente el cambio con un requerimiento claro: "Especifica un discriminated union en lugar de any".

02. Protección contra rutas de importación rotas

El gate ejecuta una verificación de resolución de módulos. Si el modelo alucina y llama a import { helper } from '@/lib/helpers', que no existe en el sistema de archivos, el compilador lo detecta en 40 milisegundos, evitando que el código llegue al commit.

5. Errores comunes, trampas y seguridad

  • Bucle de retroalimentación lento (Slow Feedback Loop): Si la verificación toma 45 segundos, el agente trabajará extremadamente lento. Ejecuta la verificación solo en archivos modificados (tsc --build o staged-files check) en lugar de recompilar todo el monorepo.
  • Ciclo de auto-sabotaje: Si el linter exige un formato y el prompt del sistema del agente instruye a escribir de otra manera, el agente y el linter lucharán eternamente. Las configuraciones de formato deben tomarse exclusivamente de los archivos de configuración del proyecto (biome.json, .prettierrc).
/ Preguntas frecuentesSchema.org FAQPage

FAQ: Hard Compiler & Linter Gates

Las advertencias menores en el código del agente son síntomas de alucinaciones ocultas. Si se pasa por alto un `any` 'insignificante' o una importación no utilizada, el siguiente agente lo tomará como norma de estilo del proyecto, y en un mes la base de código se convertirá en espagueti.
/ Enlaces internos
Todos los términos