Snapshot de WIP acumulado de sesiones previas antes de merge wave 1
del flow 0008 (kanban_cpp + agent_runner_api + DoD schema).
Incluye:
- dev/flows/0008-kanban-cpp-and-agent-workflows.md
- dev/issues/0112-0119*.md (7 sub-issues)
- WIP previo en cmd/fn/doctor.go, registry/*, modules/, cpp/, etc.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
App skill_tree: mapa interactivo de issues+flows en anillos concentricos por estado (roadmap)
in-progress
epic
meta
cpp-stack
cross-stack
media
0069
0085
0086
0087
0100
2026-05-17
2026-05-17
skill-tree
roadmap
meta
cpp
imgui
gamification
0109 — skill_tree app (roadmap)
Vision
App C++ ImGui que muestra los 79 issues + 7 flows del registry como un mapa de capacidades en anillos concentricos por estado (centro = completado, exterior = locked/deferred), con sectores radiales por dominio. Click en nodo → panel Inspector con DoD + funciones del registry asociadas + 2 botones:
Generate ideas (claude -p) → escribe a tabla idea_drafts para revision manual.
Run autonomous-task (fn-orquestador) → spawn subagente en sandbox auto/<issue> con tail de logs.
Centro NO es nodo — es HUD overlay con LV, XP, conteos por dominio. Animacion lerp 1s cuando un nodo migra de anillo (cambio de status). Sin fisicas — layout estatico y determinista.
Por que
Discovery visual: lo que hoy es ls dev/issues/ + lectura individual de 79 .md, se reduce a panoramica de 5s.
Dispatcher unificado: lanzar claude -p o /autonomous-task desde 1 click contextual (hoy: copiar ID + tipear comando).
Gamificacion derivada (XP/nivel) sin inflar nada artificial — todo deriva de trabajo real (status frontmatter + telemetria).
No-goals (fuera de scope)
NO editor de issues. Solo lectura + dispatch. Editar issue = boton "Open in editor" → code <path>.
NO orquestador propio. Reusa fn-orquestador + /autonomous-task (issue 0069).
NO base de datos paralela de issues. registry.db y dev/issues/*.md siguen siendo fuente unica.
Modelo
Tipos de nodo
Tipo
Origen
Ring
Render
Issue (epic)
dev/issues/NNNN-*.md (type=epic)
segun status
nodo grande, color accent del dominio
Issue (feature/bugfix/refactor/...)
mismo, otros types
segun status
nodo medio, tono mas claro
Flow
dev/flows/NNNN-*.md
segun status (flow.status)
nodo distinto shape (rombo)
Aristas
issue.depends / issue.blocks → DAG (linea solida).
flow.related_issues → linea punteada flow → issue.
On-hover: aristas al cinturon perimetral de funciones del registry (uses_functions cruzado con tags del issue).
Estado lock/unlock (DERIVADO — nunca manual)
Status visual
Regla
done
status=completado (issues) o status=completed (flows)
in-progress
status=in-progress
unlocked
status=pendiente Y todos depends[] resueltos
locked
status=pendiente Y algun depends[] no resuelto
bloqueado
status=bloqueado
deferred
status=deferred
Flows sin depends usan related_issues — flow unlocked si todos los related estan done.
XP / nivel
xp_value por tipo: epic=10, feature=3, bugfix=1, refactor=2, chore=1, docs=1, flow=5.
xp_total = SUM(xp_value WHERE status in {completado, completed}).
level = floor(sqrt(xp_total)).
HUD muestra: LV X · N done · M open · K in-progress · domains mastered: ....
Layout: anillos concentricos
Ring
Radio (px)
Que contiene
Notas
0
0 - 150
completado
Si > 30 nodos, mostrar top-N por recencia + bucket "+N mas"
1
150 - 280
in-progress
Pulse animation suave
2
280 - 450
unlocked pendiente
Color pleno, clickable
3
450 - 650
locked (depends sin cumplir)
Gris, aristas hacia bloqueantes
4
650+
deferred + bloqueado
Semi-transparente
Cada ring subdividido en 18 sectores radiales = 1 dominio (allowlist de dev/TAXONOMY.md). Aristas curvas hacia el centro siguiendo el sector. Cuando un issue cambia status → lerp 1s entre posicion vieja y nueva.
Stack tecnico
App C++ ImGui via fn::run_app (scaffolder init_cpp_app_bash_pipelines).
Viz: graph_renderer_cpp_viz (solo draw — sin force layout) + graph_viewport_cpp_viz + graph_labels_cpp_viz + graph_spatial_hash_cpp_core (picking O(1)).
Layout: nueva fn compute_ring_layout_cpp_core (pure) — input [{node_id, status, domain, recency}], output [{node_id, x, y, ring, sector}].