# PRINCIPIO: VALIDACIÓN OBLIGATORIA

**Versión:** 1.0.0
**Fecha:** 2025-12-08
**Tipo:** Principio Fundamental - HERENCIA OBLIGATORIA
**Aplica a:** TODOS los agentes sin excepción

---

## DECLARACIÓN DEL PRINCIPIO

```
╔══════════════════════════════════════════════════════════════════════╗
║                                                                       ║
║       BUILD PASA + LINT PASA = REQUISITO MÍNIMO                      ║
║                                                                       ║
║  "Código que no compila NO está terminado."                          ║
║  "Tarea con errores NO está completada."                             ║
║                                                                       ║
╚══════════════════════════════════════════════════════════════════════╝
```

---

## REGLA INQUEBRANTABLE

```
┌─────────────────────────────────────────────────────────────────────┐
│                                                                      │
│   NINGUNA tarea se marca como COMPLETADA si:                        │
│                                                                      │
│   • Build falla                                                      │
│   • Lint tiene errores críticos                                      │
│   • Carga limpia falla (para DDL)                                   │
│   • Tests fallan (si existen)                                       │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘
```

---

## VALIDACIONES POR CAPA

### Database (DDL)
```bash
# OBLIGATORIO
cd @DB_SCRIPTS
./{RECREATE_CMD}           # Carga limpia DEBE pasar

# Verificación
psql -d {DB_NAME} -c "\dt {schema}.*"   # Tablas creadas
psql -d {DB_NAME} -c "\di {schema}.*"   # Índices creados
```

### Backend (NestJS)
```bash
# OBLIGATORIO
cd @BACKEND_ROOT
npm run build              # DEBE pasar
npm run lint               # DEBE pasar

# Adicional
npm run test               # Si hay tests, DEBEN pasar
npm run start:dev          # DEBE iniciar sin errores
```

### Frontend (React)
```bash
# OBLIGATORIO
cd @FRONTEND_ROOT
npm run build              # DEBE pasar
npm run lint               # DEBE pasar

# Adicional
npm run typecheck          # DEBE pasar
npm run dev                # DEBE iniciar sin errores
```

---

## FLUJO DE VALIDACIÓN

```
TERMINAR IMPLEMENTACIÓN
         │
         ▼
┌─────────────────────┐
│    EJECUTAR BUILD   │
└──────────┬──────────┘
           │
           ▼
┌─────────────────────┐       ┌─────────────────────┐
│   ¿BUILD PASA?      │──NO──►│ CORREGIR ERRORES    │
└──────────┬──────────┘       └──────────┬──────────┘
           │ SÍ                          │
           │◄────────────────────────────┘
           ▼
┌─────────────────────┐       ┌─────────────────────┐
│   EJECUTAR LINT     │──NO──►│ CORREGIR ERRORES    │
│   ¿LINT PASA?       │       └──────────┬──────────┘
└──────────┬──────────┘                  │
           │ SÍ                          │
           │◄────────────────────────────┘
           ▼
┌─────────────────────┐       ┌─────────────────────┐
│   EJECUTAR TESTS    │──NO──►│ CORREGIR TESTS      │
│   ¿TESTS PASAN?     │       └──────────┬──────────┘
└──────────┬──────────┘                  │
           │ SÍ                          │
           │◄────────────────────────────┘
           ▼
┌─────────────────────┐
│  ✅ TAREA COMPLETA  │
└─────────────────────┘
```

---

## QUÉ HACER CUANDO FALLA

### Build Falla
```markdown
1. NO marcar tarea como completada
2. Leer el error completo
3. Identificar archivo y línea
4. Corregir el error
5. Volver a ejecutar build
6. Repetir hasta que pase
```

### Lint Falla (Errores)
```markdown
1. NO marcar tarea como completada
2. Distinguir errores de warnings
   - Errores (error): DEBEN corregirse
   - Warnings (warn): Pueden ignorarse (pero mejor corregir)
3. Corregir todos los errores
4. Volver a ejecutar lint
5. Repetir hasta que pase
```

### Carga Limpia Falla (DDL)
```markdown
1. NO marcar tarea como completada
2. NO ejecutar fix manual en BD
3. Leer el error de PostgreSQL
4. Corregir archivo DDL
5. Volver a ejecutar carga limpia completa
6. Repetir hasta que pase
```

### Tests Fallan
```markdown
1. NO marcar tarea como completada
2. Identificar test que falla
3. Determinar si:
   a. El código tiene bug → Corregir código
   b. El test está desactualizado → Actualizar test
4. Volver a ejecutar tests
5. Repetir hasta que pasen
```

---

## EXCEPCIONES (MUY LIMITADAS)

```yaml
Puede marcarse completa SIN tests:
  - Si no existen tests para el módulo (pero build y lint DEBEN pasar)
  - Se documenta: "Tests pendientes de crear"

Puede tener warnings de lint:
  - Si son warnings menores (no errores)
  - Se documenta: "N warnings de lint pendientes"

NUNCA puede marcarse completa:
  - Con build fallando
  - Con errores de lint
  - Con carga limpia fallando
```

---

## REPORTE DE VALIDACIÓN

En toda entrega incluir:

```markdown
## Validaciones

| Validación | Comando | Resultado |
|------------|---------|-----------|
| Build | `npm run build` | ✅ Pasa / ❌ Falla |
| Lint | `npm run lint` | ✅ Pasa / ⚠️ Warnings / ❌ Errores |
| Tests | `npm run test` | ✅ Pasa / ❌ Falla / ⏭️ N/A |
| Carga Limpia | `./{RECREATE_CMD}` | ✅ Pasa / ❌ Falla / ⏭️ N/A |

**Estado:** ✅ Validaciones completas / ❌ Pendiente corrección
```

---

## CONSECUENCIAS DE IGNORAR

```
❌ Código que no compila entregado
   → Bloquea a otros agentes/desarrolladores

❌ Errores de lint ignorados
   → Código inconsistente, bugs potenciales

❌ Tests fallando ignorados
   → Regresiones, bugs en producción

❌ DDL con errores
   → BD inconsistente, datos corruptos
```

---

## CHECKLIST RÁPIDO

```
Antes de marcar CUALQUIER tarea como completada:

[ ] Build pasa sin errores
[ ] Lint pasa sin errores (warnings OK)
[ ] Tests pasan (si existen)
[ ] Carga limpia pasa (si es DDL)
[ ] Aplicación inicia correctamente
```

---

## REFERENCIAS SIMCO

- **@VALIDAR** - Proceso completo de validación
- **@OP_DDL** - Validación específica de database
- **@OP_BACKEND** - Validación específica de backend
- **@OP_FRONTEND** - Validación específica de frontend

---

**Este principio es OBLIGATORIO y NO puede ser ignorado por ningún agente.**

---

**Versión:** 1.0.0 | **Sistema:** SIMCO | **Tipo:** Principio Fundamental
