113 lines
5.0 KiB
Markdown
113 lines
5.0 KiB
Markdown
# 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.0–1.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
|
||
```
|