Files
fn_registry/functions/infra/audit_modules_drift.md
T
egutierrez 7913116a8e chore: auto-commit (129 archivos)
- .claude/agents/fn-analizador/SKILL.md
- .claude/agents/fn-constructor/SKILL.md
- .claude/agents/fn-executor/SKILL.md
- .claude/agents/fn-mejorador/SKILL.md
- .claude/agents/fn-orquestador/SKILL.md
- .claude/agents/fn-recopilador/SKILL.md
- .claude/commands/app.md
- .claude/commands/compile.md
- .claude/commands/cpp-app.md
- .claude/commands/create_functions.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-01 22:23:12 +02:00

2.1 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, file_path, params, output
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports file_path params output
audit_modules_drift function go infra 1.0.0 impure AuditModulesDrift(root string) ([]ModuleDriftCheck, error) Detecta drift entre app.md uses_modules y CMakeLists.txt fn_module_<name> link calls. Para cada app C++ con CMakeLists.txt: parsea uses_modules + regex sobre target_link_libraries. Devuelve por-app: declared/linked/missing/extra/OK.
audit
modules
cmake
drift
doctor
cpp
false error_go_core
gopkg.in/yaml.v3
functions/infra/audit_modules_drift.go
name desc
root Raiz del repositorio fn_registry. Se escanean apps/*, projects/*/apps/*.
Slice de ModuleDriftCheck (uno por app C++ con CMakeLists.txt). Apps sin CMakeLists son saltadas.

Ejemplo

import "fn-registry/functions/infra"

checks, err := infra.AuditModulesDrift("$HOME/fn_registry")
if err != nil { panic(err) }
for _, c := range checks {
    if !c.OK {
        fmt.Printf("DRIFT %s: missing=%v extra=%v\n", c.AppID, c.MissingLinks, c.ExtraLinks)
    }
}

Tambien expuesto via CLI:

fn doctor modules           # tabla legible
fn doctor modules --json    # JSON para agentes

Cuando usarla

Tras anadir/quitar un modulo a la app:

  • Verifica que el uses_modules del app.md y target_link_libraries(... PRIVATE fn_module_*) del CMakeLists.txt coinciden.
  • Tras renombrar un modulo, detecta apps que quedaron con la version antigua.
  • Como gate en /full-git-push antes de mergear cambios de modulos.

Gotchas

  • Apps sin CMakeLists.txt (Python, bash, etc.) se saltan — el drift check no aplica.
  • Modulos IDs en uses_modules llevan sufijo _<lang> (ej. data_table_cpp); los link targets son fn_module_<name> (sin sufijo). La funcion strippa el sufijo antes de comparar.
  • Regex acepta fn_module_<name> en cualquier parte del CMakeLists — comentarios incluidos. Si un comentario referencia un modulo no usado, se reporta como extra_links (falso positivo aceptable).