6ad82167bb
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.1 KiB
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. |
|
false | error_go_core |
|
functions/infra/audit_modules_drift.go |
|
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/lucas/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_modulesdelapp.mdytarget_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-pushantes de mergear cambios de modulos.
Gotchas
- Apps sin
CMakeLists.txt(Python, bash, etc.) se saltan — el drift check no aplica. - Modulos IDs en
uses_modulesllevan sufijo_<lang>(ej.data_table_cpp); los link targets sonfn_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 comoextra_links(falso positivo aceptable).