Los tres fixes descritos en ETAPA_3B_PROMPT.md se verificaron como ya
implementados en el commit de Etapa 3 (a65bec4):
- Fix 1 (repintado canvas): mode en deps de useEffect en HeatmapCanvas.tsx
existía desde el MVP — bug observado en estado intermedio de Etapa 3.
- Fix 2 (localStorage): useHeatmapMode() con lazy initializer + conectado
en ReportPage.tsx.
- Fix 3 (zoom position): bottom left: 12 en BpmnCanvas.tsx.
528 tests Vitest verdes. Build limpio.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4.0 KiB
OBSERVATIONS — Sprint 5
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 4 cerrado el 2026-06-18. Observaciones archivadas — ítems migrados a BACKLOG.md y TECH_DEBT.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
[RESOLVED] Etapa 1 — Workspace loading fix + carry-over skeleton
Estado: OK formal del director — 2026-06-19.
Fix principal: process-store.ts y useReportData.ts usaban getSession() sin timeout; reemplazados por getSessionSafe(). Error Boundary + estado error inline con retry button agregados.
Carry-over a Etapa 2: WorkspaceSkeleton.tsx fue creado pero el spinner del router-level guard (TanStack Router) intercepta antes de que el componente monte. El skeleton no aparece en la práctica. Corregir en Etapa 2 como Fix 0 (bajo esfuerzo).
SupabaseAuthService.ts: su getSession() directo documentado como excepción intencional (necesita el objeto sesión real, no es barrera descartable). Sin callers activos. Migrar a getSessionSafe() cuando tenga callers — pendiente registrar en TECH_DEBT.
Hallazgos resueltos durante el sprint
[RESOLVED] Etapa 2 — Zoom BPMN fix + controles + skeleton
Estado: OK formal del director — 2026-06-19.
Fixes: fit-viewport 'auto' agregado (una línea), zoom-in/zoom-out en esquina inferior derecha (Lucide icons, 1.2x factor, límites 0.1x–4x), skeleton wired correctamente en WorkspacePage (guard isLoading simple sin !currentProcess).
Carry-over a Etapa 3: controles de zoom solapan el logo bpmn.io (esquina inferior derecha). Fix: mover a esquina inferior izquierda (left: 12 en lugar de right: 12). Una línea CSS.
[RESOLVED] Etapa 3 — Heatmap gradiente 4 stops + persistencia de modo + zoom position
Estado: pendiente OK formal del director. Fixes Etapa 3:
colors.ts: gradiente continuo verde→amarillo→naranja→rojo (interpolación genérica N-stops), modos'percentile'/'minmax'reemplazan'relative'/'absolute'useHeatmapMode.ts(hook nuevo): persiste preferencia enlocalStoragecon lazy initializer enuseStateReportPage.tsx: reemplazauseState<HeatmapMode>('relative')poruseHeatmapMode()BpmnCanvas.tsx: zoom-in/zoom-out movidos deright:12aleft:12(evita solapar logo bpmn.io)- PDF: leyenda de 4 stops con interpolación. Tests: 528 Vitest verdes. E2E recalibrados con distancia euclidiana.
Fixes Etapa 3B verificados (incluidos en Etapa 3):
- Fix 1 (repintado de canvas al cambiar toggle):
modeya estaba como dependencia deluseEffectenHeatmapCanvas.tsxdesde el MVP. El bug fue observado durante implementación intermedia; resuelto con los renombres de Etapa 3. - Fix 2 (persistencia localStorage):
useHeatmapMode()con lazy initializer correcto;ReportPageusa el hook. - Fix 3 (zoom position):
left: 12enBpmnCanvas.tsx.
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.mdoBACKLOG.mdsegú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