85 lines
3.9 KiB
Markdown
85 lines
3.9 KiB
Markdown
# 0044 — Auditar 52 funciones C++ huerfanas y poblar uses_functions
|
|
|
|
## Metadata
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | 0044 |
|
|
| **Estado** | pendiente |
|
|
| **Prioridad** | media |
|
|
| **Tipo** | chore — registry hygiene |
|
|
|
|
## Dependencias
|
|
|
|
Ninguna.
|
|
|
|
---
|
|
|
|
## Objetivo
|
|
|
|
Resolver las 52 funciones C++ que aparecen sin `uses_functions` en `registry.db`: o son legitimamente independientes, o se usan pero no se registra la dependencia (caso `fps_overlay` que se invoca desde `app_base.cpp` pero no aparece). Resultado: `uses_functions` reflejando la verdad.
|
|
|
|
## Contexto
|
|
|
|
Ejemplos detectados:
|
|
- `fps_overlay` — usado por `app_base.cpp`, no registrado.
|
|
- `tokens` — usado por 16+ componentes, ya registrado bien.
|
|
- `tween_curves`, `orbit_camera`, `time_series_buffer`, `graph_force_layout`, `plot_theme` — sin consumidores visibles. Verificar si estan en gallery/chart_demo o son scaffolding.
|
|
- `app_settings`, `app_about`, `app_menubar`, `icon_font` — usados por `app_base.cpp`, no registrados.
|
|
|
|
## Arquitectura
|
|
|
|
Este issue NO modifica codigo C++. Solo modifica:
|
|
|
|
- Frontmatter `.md` de funciones huerfanas para anadir `uses_functions: [...]` reflejando llamadas reales.
|
|
- Eventualmente borrar funciones que se confirmen sin uso real ni plan de uso (con el OK del usuario via comment en el issue).
|
|
|
|
## Tareas
|
|
|
|
### Fase 1 — Lista exacta
|
|
|
|
1.1 Generar la lista actual:
|
|
```bash
|
|
sqlite3 registry.db "SELECT id FROM functions WHERE lang='cpp' AND uses_functions = '[]' ORDER BY id;"
|
|
```
|
|
1.2 Para cada id, hacer `grep -rn "<name>" cpp/ projects/*/apps/*/` y ver donde se invoca.
|
|
|
|
### Fase 2 — Categorizar
|
|
|
|
Para cada huerfana, asignar uno de estos estados (anotar en una tabla en este issue):
|
|
- **USED** — se invoca desde otra funcion/app. Anadir el caller a `uses_functions` del consumidor (no del huerfano).
|
|
- **DEMO_ONLY** — solo en `primitives_gallery` o demos. OK como esta. Documentar en `.md` como `# scaffolding/demo only`.
|
|
- **PLANNED** — sin uso pero hay issue/plan futuro. Anotar en `.md` con referencia.
|
|
- **DEAD** — sin uso real ni plan. Candidato a borrar (preguntar al usuario antes).
|
|
|
|
### Fase 3 — Actualizar frontmatter
|
|
|
|
3.1 Para cada **USED**: editar el `.md` del CONSUMIDOR para anadir el huerfano a su `uses_functions`. Ejemplo: `app_base.cpp` consume `fps_overlay_cpp_core`, `app_settings_cpp_core`, `app_about_cpp_core`, `app_menubar_cpp_core`, `icon_font_cpp_core`, `tokens_cpp_core`. Pero `app_base` NO esta en functions/ del registry — es un .cpp del framework. **Corregir**: si `app_base.cpp` no esta indexado, registrar como funcion en `cpp/framework/` o documentar la convencion en notes.
|
|
3.2 Para **DEMO_ONLY**: anadir nota en frontmatter `notes: "demo en primitives_gallery, scaffolding"`.
|
|
3.3 Para **PLANNED**: anadir `notes: "planned use in issue NNNN"`.
|
|
3.4 Para **DEAD**: listar en este issue y abrir un sub-issue de delete (no borrar de oficio).
|
|
|
|
### Fase 4 — Reindex
|
|
|
|
4.1 `./fn index` para regenerar `registry.db`.
|
|
4.2 Verificar:
|
|
```bash
|
|
sqlite3 registry.db "SELECT COUNT(*) FROM functions WHERE lang='cpp' AND uses_functions = '[]';"
|
|
```
|
|
La cifra debe bajar significativamente (objetivo: <20 huerfanas reales).
|
|
|
|
### Fase 5 — Documentar la convencion
|
|
|
|
5.1 Anadir a `.claude/rules/uses_functions.md` (NEW) la regla: cada vez que un .cpp llama a otra funcion del registry, el `.md` del CONSUMIDOR debe listar la dependencia en `uses_functions`. El indexer no lo deduce automaticamente (el codigo C++ no es trivial de parsear).
|
|
|
|
## Decisiones
|
|
|
|
- No borrar funciones sin OK explicito.
|
|
- `app_base.cpp` no esta hoy indexado como funcion del registry (es framework). Si decidimos indexarlo, eso es 0048 — ahora solo registramos en uses_functions de los CONSUMIDORES que si esten indexados (gallery, dashboard, etc.).
|
|
|
|
## Validacion
|
|
|
|
- `uses_functions` poblados para los casos reales (verificable por SQL).
|
|
- `cpp/PATTERNS.md` (de 0041) referencia esta convencion.
|
|
- Nada compilado se rompe (este issue NO toca .cpp/.h).
|