feat(cpp/viz): split orphan TUs as separate fn entries (ADR 0003)
Cuando una funcion del registry parte su .cpp en varios TUs por testabilidad o separacion ImGui-vs-puro, cada TU adicional se registra como entrada propia con su .md en lugar de extender file_path para listar varios archivos. Aplicado a: - graph_labels_select_cpp_viz: helpers puros (compute_degrees + labels_select). - graph_viewport_selection_cpp_viz: clear/add/toggle/is_selected puros. - graph_types_cpp_viz: TU de update_bounds + find_node_by_user_data. graph_labels y graph_viewport actualizados para declarar las nuevas entradas en uses_functions. Razon detallada en docs/adr/0003 + regla actualizada en .claude/rules/uses_functions.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,12 +4,32 @@ Cuando un .cpp llama a otra funcion del registry, el `.md` del CONSUMIDOR
|
||||
debe anadir la dependencia a `uses_functions`. El indexer NO lo deduce
|
||||
automaticamente para C++ (parser no trivial).
|
||||
|
||||
Como auditar:
|
||||
Como auditar (funciones huerfanas):
|
||||
sqlite3 registry.db "SELECT id FROM functions WHERE lang='cpp' AND uses_functions='[]';"
|
||||
|
||||
Como auditar (drift entre `CMakeLists.txt` y `app.md`):
|
||||
- Cruzar los `${CMAKE_SOURCE_DIR}/functions/<dom>/<name>.cpp` listados en el
|
||||
`CMakeLists.txt` con el `uses_functions` del `app.md`. Cada `.cpp` linkado
|
||||
debe aparecer como `<name>_cpp_<dom>` en el `.md`. Excepciones: ver mas abajo.
|
||||
|
||||
Convencion:
|
||||
- Funciones de framework (cpp/framework/) no estan indexadas — sus consumos
|
||||
se anotan en `notes:` del huerfano (no en uses_functions).
|
||||
- Apps (`cpp/apps/`, `projects/*/apps/`) no estan en el grafo de uses_functions
|
||||
del registry — los huerfanos solo consumidos por apps llevan nota en `notes:`.
|
||||
- DEMO_ONLY en primitives_gallery se etiqueta `notes: scaffolding/demo`.
|
||||
- **Framework code** (`cpp/framework/app_base.cpp`) — no esta indexado.
|
||||
- **Funciones bundled en `fn_framework`** — son funciones del registry cuyo
|
||||
`.cpp` se compila dentro del static lib `fn_framework` (lista en
|
||||
`cpp/CMakeLists.txt`, target `add_library(fn_framework STATIC ...)`):
|
||||
`tokens`, `icon_font`, `app_settings`, `app_about`, `fps_overlay`,
|
||||
`panel_menu`, `app_menubar`, `layouts_menu`, `logger`, `log_window`,
|
||||
`gl_loader`, `layout_storage`, `selectable_text`. Las apps las usan
|
||||
transitivamente (incluyen `core/logger.h`, llaman `fn_log::log_info`),
|
||||
pero NO listan estos `.cpp` en su `CMakeLists.txt` (multiple-definition)
|
||||
ni los declaran en `uses_functions` del `app.md`. Excepcion: si una app
|
||||
toca una API que no este en fn_framework (raro), declara la dep.
|
||||
- **TU adicional de un parent function** (ej. `graph_labels_select.cpp` que
|
||||
va con `graph_labels.cpp`) — desde 2026-05-04 se registra como entrada
|
||||
propia con su `.md` (ver ADR 0003). El parent declara la nueva entrada
|
||||
en su `uses_functions`. Las apps que enlazan ambos `.cpp` listan ambas
|
||||
IDs en `uses_functions` del `app.md`.
|
||||
- **Apps** (`apps/`, `cpp/apps/`, `projects/*/apps/`) son leaves del grafo:
|
||||
declaran `uses_functions` en `app.md` pero ninguna funcion del registry
|
||||
las cita.
|
||||
- DEMO_ONLY en `primitives_gallery` se etiqueta `notes: scaffolding/demo`.
|
||||
|
||||
Reference in New Issue
Block a user