Fase F: quinto stub de pineal cerrado.
- layout — pipeline Sankey: columnas por longest-path en el DAG
(back-edges detectadas por DFS y descartadas para romper ciclos),
valor de nodo = max(entrante, saliente), apilado vertical por columna
escalado a la altura, una pasada de barycenter para reducir cruces,
anclas de cada banda en los bordes de sus nodos.
- ribbon — teselado de bandas como triangle-strip con curva S
(x lineal, y por smoothstep → tangentes horizontales). paint_ribbon
+ paint_sankey (ribbons al fondo, nodos encima).
Painters agnósticos (trait Canvas). 6 tests verdes (columnas, ciclos
sin loop infinito, proporcionalidad, conteo de draw calls).
Pineal: 5/6 stubs cerrados. Resta mesh (viz de grafos: force-directed
+ Sugiyama + tree layout — módulo, no stub).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>