e3c8979e8d
- 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>
4.0 KiB
4.0 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | params | output | tested | tests | test_file_path | file_path | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| vault_layout_ensure | function | go | infra | 1.0.0 | impure | func VaultLayoutEnsure(vaultPath string, dryRun bool) (LayoutReport, error) | Normaliza el layout de un vault al esquema hibrido canónico data/{raw,processed,exports} + knowledge/{decisions,domains,models,benchmarks,test_documents}. Migra directorios legacy en la raíz del vault a su ubicación correcta; idempotente. |
|
false | error_go_core |
|
|
LayoutReport con: VaultPath (ruta resuelta), Created (dirs creados), Migrated (renombres ejecutados, formato 'src -> dst'), AlreadyOK (destinos que ya existían), Skipped (entradas en raíz no reconocidas, no tocadas), DryRun (flag). Error si el path no existe, no es directorio, o hay conflicto de merge (mismo nombre de archivo en src y dst). | true |
|
functions/infra/vault_layout_ensure_test.go | functions/infra/vault_layout_ensure.go |
Ejemplo
// Previsualizar sin tocar disco:
report, err := VaultLayoutEnsure("/home/lucas/vaults/turismo_spain", true)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Would migrate: %v\n", report.Migrated)
fmt.Printf("Would create: %v\n", report.Created)
// Ejecutar la migración:
report, err = VaultLayoutEnsure("/home/lucas/vaults/turismo_spain", false)
if err != nil {
log.Fatalf("migration failed: %v", err)
}
fmt.Printf("Migrated: %v\n", report.Migrated)
fmt.Printf("Created: %v\n", report.Created)
fmt.Printf("Skipped: %v\n", report.Skipped)
Comportamiento detallado
Directorios gestionados:
| Raíz (legacy) | Destino canónico |
|---|---|
raw/ |
data/raw/ |
processed/ |
data/processed/ |
exports/ |
data/exports/ |
decisions/ |
knowledge/decisions/ |
domains/ |
knowledge/domains/ |
models/ |
knowledge/models/ |
benchmarks/ |
knowledge/benchmarks/ |
test_documents/ |
knowledge/test_documents/ |
README.md / README.txt |
knowledge/README.md |
Lógica de migración (por cada entrada conocida):
- Solo
srcexiste → rename atómicosrc→dst, registrado enMigrated. - Solo
dstexiste → ya migrado, registrado enAlreadyOK. - Ambos existen (dir) → merge: mueve cada hijo de
src/adst/; error si mismo nombre. Registrado enMigratedpor hijo. - Ambos existen (archivo README) → error inmediato con paths concretos.
- Ninguno existe → crea
dstvacío, registrado enCreated.
Archivos/dirs no reconocidos en la raíz (.git, vault_index.db, archivos custom) se registran en Skipped y no se tocan.
Idempotencia: segunda ejecución sobre un vault ya migrado reporta todo en AlreadyOK y no toca disco.
Notas
LayoutReport es un tipo local de esta función (no un tipo del registry). El struct exportado vive en functions/infra/vault_layout_ensure.go junto con la función.
Para aplicar la migración a múltiples vaults en batch, invocar desde un pipeline que lea los paths de vault.yaml (ver vault_manifest_read_go_infra) y llame a VaultLayoutEnsure en cada uno.