Files
fn_registry/docs/diary/2026-05-07.md
T
egutierrez 2a3d780347 feat(doctor): add fn doctor CLI + 14 functions for system management
Adds `fn doctor` read-only diagnostic command with subcommands artefacts,
services, sync, uses-functions, unused, and --json flag for agents.
Each subcommand wraps a registry function in functions/infra/.

New functions:
- artefact_doctor, services_status, pc_locations_drift,
  audit_uses_functions, find_unused_functions (Go diagnostics)
- backup_sqlite_db, rotate_backups, wait_for_http, wait_for_port,
  port_kill, tail_journal, pre_commit_hook_install (bash utilities)
- notify_telegram (Go HTTP)
- backup_all pipeline (tag launcher)

Plus prior session leftovers (scan_secrets_in_dirty, append_diary_entry,
git utilities, http_session_cookie_middleware, compile/full-git pipelines).

Fixes pc_locations_drift filepath.Join bug with absolute dir_path.
Documents fn doctor in CLAUDE.md, .claude/rules/fn_doctor.md (rule 23),
docs/architecture.md, CHANGELOG.md (2026-05-07), and diary entry.

First fn doctor uses-functions run found drift in 7/12 apps (deuda
para sincronizar app.md con imports reales).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 01:42:10 +02:00

4.4 KiB

2026-05-07

01:39 — fn doctor + 14 funciones nuevas para gestion del sistema

Sesion completa: del analisis de huecos del registry a CLI funcionando + diagnostico real ejecutando.

Hecho

  • Razonamiento gap analysis del registry actual (1051 funciones, 18 apps, 9 analyses): identificadas 10 categorias de funcionalidad ausente — backup/snapshot, doctor/health, secrets, cleanup/orphans, notify, lifecycle, ops cross-app, test coverage, sync verification, utils chicos.
  • Plan en 5 fases con priorizacion top-5: backup, doctor, audit_uses_functions, notify_telegram, wait_for_http.
  • Fase 1 — 8 funciones bash/go base: backup_sqlite_db, rotate_backups, wait_for_http, wait_for_port, port_kill, tail_journal, pre_commit_hook_install, notify_telegram_go_infra. Todas creadas via fn-constructor en paralelo (4+4).
  • Fase 2 — 5 funciones diagnostico Go en functions/infra/: artefact_doctor, services_status, pc_locations_drift, audit_uses_functions, find_unused_functions. Tests pasan. 5 paralelos.
  • Fase 3 — pipeline backup_all_bash_pipelines (tag launcher): orquesta backups de registry.db + cada operations.db + vaults con rsync --link-dest.
  • Fase 4 — fn doctor CLI (cmd/fn/doctor.go): subcomandos artefacts|services|sync|uses-functions|unused|all, flag --json. Wrapper fino sobre las 5 funciones de Fase 2. Registrado en cmd/fn/main.go y printUsage.
  • Documentacion: .claude/rules/fn_doctor.md (regla 23 en INDEX), seccion CLI en .claude/CLAUDE.md, capa diagnostica en docs/architecture.md, entrada 2026-05-07 en CHANGELOG.md.

Bug encontrado y arreglado

  • pc_locations_drift_go_infra: filepath.Join(absoluto, absoluto) → path corrupto tipo /home/lucas/fn_registry/home/lucas/fn_registry/.... Sintoma: TODOS los artefactos reportados como missing_on_disk. Fix: chequear filepath.IsAbs antes de unir (pc_locations_drift.go:79 y :135).
  • go.mod: golang.org/x/net movido a deps directas via go mod tidy tras anadir notify_telegram (transitiva promovida).

Hallazgos de la primera ejecucion

  • fn doctor artefacts → 25/27 OK. Falla chart_demo_cpp_viz y shaders_lab_cpp_gfx por git_not_initialized (sub-repos no clonados en este PC, esperado).
  • fn doctor services → 8 services registrados, solo sqlite_api.service activo en este PC (puerto 8484 listening).
  • fn doctor sync → sin drift tras el fix.
  • fn doctor uses-functionsdrift real en 7/12 apps: auto_metabase, dag_engine, deploy_server, docker_tui, kanban, metabase_registry, script_navegador. Apps declaran funciones que no usan O usan funciones no declaradas en app.md. Pendiente sincronizar.
  • fn doctor unused → muchas funciones core (compose2, curry2, chunk, flat_map_slice, etc.) sin consumidores aun. Esperado mientras el registry crece antes que las apps.

Comandos clave

# Build
CGO_ENABLED=1 go build -tags fts5 -o fn ./cmd/fn/

# Verificar todo
./fn index
./fn doctor                    # texto humano
./fn doctor --json > out.json  # para agentes
./fn doctor uses-functions     # ver drift de imports
./fn doctor unused             # funciones huerfanas

# Backup completo (cron-friendly)
bash bash/functions/pipelines/backup_all.sh ~/backups/fn_registry

Numeros

  • 1051 → 1065 funciones tras fn index (14 nuevas).
  • 19 apps, 9 analyses, 4 projects, 3 vaults sin cambios.
  • fn doctor uses-functions deja mapeada deuda de sincronizacion en 7 apps.

Lo siguiente que pega

  • Sincronizar uses_functions en los 7 app.md con drift detectado por fn doctor uses-functions.
  • Decidir limpieza de funciones core sin consumidores (fn doctor unused): mantener (futuro), tag deprecated, o borrar.
  • Cron diario de backup_all apuntando a ~/backups/fn_registry.
  • Considerar notify_telegram integrado en deploy_server para alertas de fallos.
  • Extender fn doctor con subcomando secrets que invoque scan_secrets_in_dirty sobre todos los repos (apps + analyses) en una pasada.

Archivos tocados

  • Nuevos: 14 pares .sh/.go + .md en bash/functions/{infra,pipelines}/ y functions/infra/. cmd/fn/doctor.go. .claude/rules/fn_doctor.md. docs/diary/2026-05-07.md.
  • Modificados: cmd/fn/main.go (case doctor), .claude/CLAUDE.md, .claude/rules/INDEX.md, docs/architecture.md, CHANGELOG.md, go.mod, go.sum.
  • Sin commit: 74 archivos en git status pendientes de revision por humano.