Files
fn_registry/functions/infra/audit_app_location.md
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.5 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
audit_app_location function go infra 1.0.0 impure func AuditAppLocation(repoRoot string) ([]AppLocationViolation, error) Detecta artefactos (apps y analyses) ubicados en carpetas de lenguaje (cpp/apps/, python/apps/, bash/apps/, frontend/apps/, y sus equivalentes /analysis/). Estas ubicaciones violan la convencion del registry (issue 0096): los artefactos deben vivir en apps/ o analysis/ en la raiz, o en projects/*/apps/ y projects/*/analysis/. Retorna una lista de AppLocationViolation con la ruta relativa, kind (app|analysis) y lang (cpp|python|bash|frontend).
doctor
audit
location
artefacts
registry
false error_go_core
os
path/filepath
name desc
repoRoot Ruta absoluta a la raiz del repositorio fn_registry. Todas las rutas en las violaciones son relativas a este directorio.
Lista de AppLocationViolation con (Path, Kind, Lang) por cada artefacto mal ubicado. Vacia si no hay violaciones. Error si un directorio prohibido existe pero no es legible. true
detecta app.md en directorio prohibido cpp/apps
directorios prohibidos inexistentes no producen error
detecta analysis.md en directorio prohibido python/analysis
functions/infra/audit_app_location_test.go functions/infra/audit_app_location.go

Ejemplo

violations, err := AuditAppLocation("$HOME/fn_registry")
if err != nil {
    log.Fatal(err)
}
for _, v := range violations {
    fmt.Printf("[%s/%s] %s → mover a apps/%s o projects/.../apps/%s\n",
        v.Lang, v.Kind, v.Path,
        filepath.Base(v.Path), filepath.Base(v.Path))
}
// Ejemplo de salida:
// [cpp/app] cpp/apps/my_tool → mover a apps/my_tool o projects/.../apps/my_tool

Cuando usarla

Usar como check de fn doctor artefacts o en pre-commit para detectar artefactos que se crearon en la carpeta del lenguaje equivocada. Invocar despues de fn index para validar el estado del repo.

Gotchas

  • Solo revisa subdirectorios de nivel 1 dentro de cada directorio prohibido. No escanea recursivamente.
  • Un subdirectorio sin app.md ni analysis.md NO se reporta (ej. cpp/apps/bar/ sin manifest = ignorado).
  • Los artefactos en apps/, analysis/, projects/*/apps/ y projects/*/analysis/ son ubicaciones canonicas y NO se comprueban.
  • AppLocationViolation esta definida en el mismo paquete (infra), no como tipo separado del registry.