Files
inq-roi-simulador-web/OBSERVATIONS.md

113 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OBSERVATIONS — Sprint 2
> Hallazgos descubiertos durante el sprint actual.
> Este archivo se vacía al cerrar el sprint: los hallazgos se promocionan a TECH_DEBT.md o BACKLOG.md, o quedan resueltos.
>
> **Sprint 1.5 cerrado el 2026-05-18.** Ver cierre en `methodology/CASE_STUDIES/inq-roi-sprint-1-5.md`.
---
## Convención de etiquetas
- `[CURRENT-SPRINT]` — Se resuelve en este sprint
- `[DEFERRED-TECH-DEBT]` — Se va a TECH_DEBT.md al cerrar el sprint
- `[DEFERRED-BACKLOG]` — Se va a BACKLOG.md al cerrar el sprint
- `[RESOLVED]` — Resuelto durante el sprint, archivar al cierre
---
## Hallazgos activos
### [CURRENT-SPRINT] ActivityPanel en estado intermedio roto — Etapa 1
**Origen:** Etapa 1. Detectado en validación visual del director.
**Síntoma:** el slider de "Utilización" en ActivityPanel queda atascado en 1 min (max). Recursos nuevos quedan en 0 min inamovibles. La UI de asignación de recursos es inutilizable en el estado actual.
**Causa raíz:** Claude Code modificó `ActivityPanel.tsx` durante Etapa 1 pese a que el prompt tenía una restricción explícita `❌` sobre ese archivo. El cambio fue clasificado como Nivel 2, pero correspondía Nivel 3 (restricción explícita del prompt = criterio 2 de la política de iniciativa). El agente usó el requisito de "build sin errores TypeScript" como justificación para resolver unilateralmente una contradicción entre dos restricciones del prompt, en lugar de detenerse y reportar el conflicto.
**Estado del slider:** el componente mantiene `max=1` del modelo anterior (porcentaje 0.01.0). Ahora lee `utilizationMinutes` (entero), por lo que solo acepta 0 o 1 minuto. Los datos en IndexedDB son correctos (la migración funcionó), solo la UI está rota.
**Resolución:** Etapa 2 reescribe ActivityPanel completamente. Este ítem se cierra al completar Etapa 2.
---
### [DEFERRED-TECH-DEBT] Prompts con restricciones contradictorias generan decisiones unilaterales del agente
**Origen:** Etapa 1. Hallazgo de método.
**Problema:** el ETAPA_1_PROMPT.md tenía dos requisitos que colisionaban:
- "❌ No tocar `ActivityPanel.tsx`"
- "Build limpio: `npm run build` sin errores TypeScript"
Cambiar `ActivityResourceAssignment` en `types.ts` inevitablemente produce errores TypeScript en `ActivityPanel.tsx`. El agente resolvió la contradicción actuando mínimamente en el archivo UI en lugar de detenerse y reportar el conflicto.
**Impacto:** el agente produjo código funcionalmente correcto en dominio pero UI rota, y describió el resultado como "comportamiento intermedio esperado" — minimizando la severidad real.
**Acción preventiva para todos los prompts futuros:**
1. Agregar verificación git diff como control preventivo (ver hallazgo siguiente)
2. Cuando haya restricción `❌` sobre un archivo, agregar explícitamente: _"Si este cambio produce errores TypeScript en archivos restringidos, **DETENTE**, no los corrijas, reportá el conflicto al director antes de continuar."_
**Destino al cierre del sprint:** promover a `methodology/ANTI_PATTERNS.md` como nuevo caso documentado.
---
### [DEFERRED-TECH-DEBT] Falta control preventivo de scope — verificación con git diff
**Origen:** Etapa 1. Hallazgo de método.
**Problema:** los controles actuales de scope son detectivos (grep de tipos, build, reporte). Un agente puede modificar archivos no autorizados y el director solo lo descubre en la validación visual (o en el reporte si el agente lo declara voluntariamente).
**Riesgo escalado:** para cambios en PDFs, esquemas de datos, o marca, un cambio no declarado podría causar daño real antes de ser detectado.
**Solución:** agregar en todos los prompts a partir de Etapa 2:
```
## Verificación de scope — OBLIGATORIO antes de reportar
Ejecutá: git diff --name-only HEAD
El resultado debe contener ÚNICAMENTE los archivos listados en "Archivos esperados" de este prompt.
Si aparece un archivo no esperado:
1. Revertilo: git checkout HEAD -- <archivo>
2. Documentá el conflicto en el reporte bajo "Conflictos de scope"
3. NO lo incluyas en el entregable de esta etapa
```
**Destino al cierre del sprint:** promover a `methodology/PATTERNS.md` como control C.X obligatorio en todo prompt de Claude Code.
---
## Hallazgos resueltos durante el sprint
*(vacío)*
---
## Hallazgos diferidos (promocionar al cerrar sprint)
*(vacío)*
---
## Notas operativas
- Los hallazgos resueltos quedan acá hasta el cierre del sprint. Al cerrar, se archiva o purga.
- Los hallazgos sin resolver se promocionan a `TECH_DEBT.md` o `BACKLOG.md` según corresponda.
- Este archivo NO contiene roadmap futuro ni deuda histórica — solo hallazgos del sprint en curso.
---
## Cierre del sprint (checklist)
Cuando el sprint cierre, ejecutar:
```
[ ] Verificar que todos los items [CURRENT-SPRINT] están RESOLVED
[ ] Mover items [DEFERRED-TECH-DEBT] a TECH_DEBT.md (si no están ya)
[ ] Mover items [DEFERRED-BACKLOG] a BACKLOG.md (si no están ya)
[ ] Archivar o purgar este archivo
[ ] Crear OBSERVATIONS.md vacío para el sprint siguiente
```