Files
fn_registry/functions/infra/vault_doctor.md
T
egutierrez e3c8979e8d chore: auto-commit (95 archivos)
- cmd/fn/doctor.go
- cmd/fn/main.go
- cpp/apps/primitives_gallery/playground/tables/CMakeLists.txt
- cpp/apps/primitives_gallery/playground/tables/data_table.cpp
- cpp/apps/primitives_gallery/playground/tables/data_table_logic.cpp
- cpp/apps/primitives_gallery/playground/tables/data_table_logic.h
- cpp/apps/primitives_gallery/playground/tables/self_test.cpp
- cpp/apps/primitives_gallery/playground/tables/tql.cpp
- cpp/apps/primitives_gallery/playground/tables/viz.cpp
- cpp/apps/primitives_gallery/playground/tables/viz.h
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 00:50:34 +02:00

2.4 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
vault_doctor function go infra 1.0.0 impure func VaultDoctor(repoRoot string) ([]VaultDoctorEntry, error) Audita la salud de todos los vaults declarados en projects/*/vaults/vault.yaml. Comprueba existencia del directorio, layout estándar, presencia del índice, staleness y drift entre disco e índice. Read-only.
vault
doctor
health
audit
vault_manifest_read_go_infra
vault_index_open_go_infra
false error_go_core
fmt
os
path/filepath
strings
time
true
TestVaultDoctor_OK
TestVaultDoctor_MissingDir
TestVaultDoctor_NoIndex
TestVaultDoctor_LayoutDrift
TestVaultDoctor_EmptyVault
functions/infra/vault_doctor_test.go functions/infra/vault_doctor.go
name desc
repoRoot Ruta absoluta a la raiz del fn_registry (donde están projects/ y registry.db).
Slice de VaultDoctorEntry con Status (ok/warning/error), Issues, DiskFiles, IndexedFiles y LastIndexedAt por vault. Error fatal solo si los manifests no se pueden leer.

Checks aplicados

Check Condición Severidad
directory_missing e.Path no existe en disco error
layout_missing no hay data/ ni knowledge/ en la raíz del vault warning
non_standard_layout no hay data//knowledge/ pero sí otros subdirectorios (ej. imagegen_models) warning
index_missing no existe vault_index.db warning
index_stale algún archivo en disco tiene mtime > MAX(indexed_at) warning
index_drift count disco != count en tabla files warning
empty_vault DiskFiles == 0 warning

Ejemplo

entries, err := infra.VaultDoctor("/home/lucas/fn_registry")
for _, e := range entries {
    fmt.Printf("%-30s  %-8s  files=%d  issues=%v\n",
        e.VaultName, e.Status, e.DiskFiles, e.Issues)
}

Notas

  • Función read-only: nunca escribe en disco ni en ninguna base de datos.
  • countDiskFiles usa filepath.WalkDir sin hash (cheap) — excluye vault_index.db*, .git/ y ficheros ocultos.
  • isIndexStale también usa WalkDir; compara mtime de archivos con MAX(indexed_at) de la BD.
  • El VaultIndexOpen de sólo lectura no crea el DB (si no existe, retorna error y se reporta index_missing).