## uses_functions 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 (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//.cpp` listados en el `CMakeLists.txt` con el `uses_functions` del `app.md`. Cada `.cpp` linkado debe aparecer como `_cpp_` en el `.md`. Excepciones: ver mas abajo. Convencion: - **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`.