Cambios visuales pedidos por el usuario:
1. Colores simplificados a 3 buckets independientes del ring:
- done (completado/completed) -> green-500 #22c55e
- planned (in-progress) -> amber-500 #f59e0b
- todo (resto: pendiente/locked/...) -> violet-500 #a855f7
Ring sigue separando geografia, color cuenta el estado.
2. Hash-distribute unknown domains: nodos sin domain valido (61 sobre 167)
ya no se amontonan en sector 17. Se distribuyen via FNV-1a(id) % 18
entre los 18 sectores canonicos.
3. Anti-collision grid 2D por bin (ring,sector). compute_ring_layout
distribuia solo radialmente; ahora main.cpp resuelve bins poblados
con un grid rows x cols (con brick offset entre filas) que ocupa
tanto eje radial como angular del sector. Determinista (sort by id).
self-test: 167 nodes, 0 parse_errors, 0 unmapped. Linux + Windows OK.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- kNodeRadius 18 -> 10 (mas cards caben sin pisarse)
- ring_radii expandidos { 0, 200, 380, 600, 900, 1200 } (mas banda por anillo)
- bin_padding 18 -> 28 (margen entre anillos)
- Initial zoom = auto-fit (Min(canvas) * 0.92 / 2400) en lugar de zoom=1
- Boton 'Fit view' reemplaza 'Reset view'
- Flows ahora 1.55x mayores que issues + outline cyan permanente para
destacar entre la marea de 160 circulos
- Render en 2 pasadas: issues primero (background), flows on top
- Labels de ID siempre visibles en flows (no condicionado al zoom)
- Ring bands con tint sutil por status para legibilidad
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- main.cpp scan dev/issues + dev/flows con std::filesystem
- parsea cada .md con parse_md_frontmatter_cpp_core (nueva fn pure)
- cuenta por status/domain/kind, lista nodos en panel Tree
- panel Inspector muestra detalle del nodo seleccionado (DoD, depends, related)
- --self-test imprime conteos a stdout (exit 0 si parse_errors=0)
- Reload manual via boton o tecla F5
- discover_registry_root: FN_REGISTRY_ROOT env o walk-up desde cwd
- uses_functions actualizado con parse_md_frontmatter_cpp_core
- CMakeLists.txt incluye el .cpp del parser
Smoke test 166 nodos parseados (159 issues + 7 flows), 0 parse errors.
Fase A del epic 0109. Sigue: 0109b layout anillos + render estatico.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Initial scaffold via init_cpp_app_bash_pipelines:
- main.cpp con Tree + Inspector panels (placeholders)
- app.md con trio icon (tree-structure + #c026d3) + e2e_checks
- CMakeLists.txt via add_imgui_app
- appicon.ico generado con generate_app_icon_py_infra
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>