b9716a7cd6
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>
2.9 KiB
2.9 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path, params, output
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | tested | tests | test_file_path | file_path | params | output | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| audit_data_table_usage | function | go | infra | 1.0.0 | impure | AuditDataTableUsage(registryRoot string) ([]DataTableUsageEntry, error) | Escanea apps C++ del registry que declaran uses_modules: [data_table_cpp] y detecta anti-patrones en su uso de data_table::render: ImGui::BeginTable inline, State stack-local (no persistente), render sin BeginChild host, event sink ignorado, y enlace cmake faltante. |
|
false | error_go_core | false | functions/infra/audit_data_table_usage.go |
|
Slice de DataTableUsageEntry, uno por app C++ con uses_modules: [data_table_cpp]. Status: ok (sin findings warn/error), warn (hay findings), n/a (no declara data_table_cpp). |
Ejemplo
import "fn-registry/functions/infra"
entries, err := infra.AuditDataTableUsage("/home/lucas/fn_registry")
if err != nil {
panic(err)
}
for _, e := range entries {
if e.Status == "warn" {
fmt.Printf("[%s] %s\n", e.AppID, e.DirPath)
for _, f := range e.Findings {
fmt.Printf(" %s (%s) %s:%d %s\n", f.Kind, f.Severity, f.File, f.Line, f.Snippet)
}
}
}
Expuesto via CLI (una vez integrado en fn doctor):
fn doctor data-table # tabla legible
fn doctor data-table --json # JSON para agentes
Cuando usarla
- Tras anadir
data_table_cppa un nuevo app, verifica que el patron canonico se sigue. - Como gate pre-merge cuando se toca código de integración de data_table.
- Periodicamente para detectar apps que usan
ImGui::BeginTabledirectamente en lugar dedata_table::render. - Para auditar que el event sink (
TableEvent/events_out) se consume donde se necesita interactividad.
Gotchas
isInsideFunctionBodyes heuristica de balance de llaves: falsos positivos posibles con lambdas o structs anonimos. Ruido bajo en codigo real.no_child_hostmira 30 lineas hacia atras deldata_table::render(. Si el BeginChild esta mas lejos (extraido en helper), se reportara falso positivo. Severidadwarn, noerror.inline_begintablesuprime findings cuando el archivo contienedata_tableymodulesen su path relativo (evita ruido del modulo mismo).- Apps cuyo directorio no existe en el PC local (sub-repos no clonados) se marcan
warn: directory_missingen vez de analizarse. Esperado en entorno multi-PC. cmake_missing_linkusaif(TARGET fn_module_data_table)pattern (conditional link). La funcion detecta la presencia de la stringfn_module_data_tableen CMakeLists.txt, sea entarget_link_librarieso en el guard.