Files
fn_registry/docs/capabilities/doctor.md
T
egutierrez 47fac22230 chore: auto-commit (799 archivos)
- .claude/CLAUDE.md
- .claude/commands/subagentes.md
- .claude/rules/INDEX.md
- .mcp.json
- bash/functions/cybersecurity/analyze_dns.md
- bash/functions/cybersecurity/audit_http_headers.md
- bash/functions/cybersecurity/audit_ssh_config.md
- bash/functions/cybersecurity/check_firewall.md
- bash/functions/cybersecurity/detect_suspicious_users.md
- bash/functions/cybersecurity/encrypt_file.md
- ...

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

49 lines
2.9 KiB
Markdown

# Capability Group: doctor
Funciones de diagnostico read-only del registry y sus artefactos. Componen `fn doctor` — el entrypoint unico de auditoria del ecosistema. No modifican nada.
## Funciones del grupo
| ID | Firma corta | Que hace |
|---|---|---|
| `artefact_doctor_go_infra` | `ArtefactDoctor(registryRoot string) ([]ArtefactCheck, error)` | Estado git/venv/app.md/upstream de cada app y analysis |
| `audit_capability_groups_go_infra` | `AuditCapabilityGroups(root string) ([]CapabilityGroupAudit, error)` | Drift entre INDEX.md, tags en BD y docs en disco |
| `audit_copied_code_go_infra` | `AuditCopiedCode(registryRoot string) ([]CopiedCodeEntry, error)` | Cuerpos de funcion copiados del registry sin import |
| `audit_cpp_apps_go_infra` | `AuditCppApps(registryRoot string) ([]CppAppAudit, error)` | Conformidad C++ con cpp/PATTERNS.md |
| `audit_ml_env_go_infra` | `AuditMlEnv(registryRoot string) (MlEnvReport, error)` | Entorno ML: GPUs, CUDA, venv, paquetes clave |
| `audit_uses_functions_go_infra` | `AuditUsesFunctions(registryRoot string) ([]UsesFunctionsAudit, error)` | Drift uses_functions declarado vs imports reales |
| `find_unused_functions_go_infra` | `FindUnusedFunctions(registryRoot string) ([]UnusedFunction, error)` | Funciones del registry sin consumidores |
| `frontend_doctor_bash_infra` | `frontend_doctor(project_dir: string) -> diagnostics_stdout` | Diagnostico frontend: node_modules, builds, tipos |
| `pc_locations_drift_go_infra` | `PcLocationsDrift(registryRoot string, pcID string) ([]LocationDrift, error)` | Drift pc_locations BD vs disco local |
| `services_status_go_infra` | `ServicesStatus(registryRoot string) ([]ServiceStatus, error)` | Apps con tag service + systemctl + puerto |
| `vault_doctor_go_infra` | `VaultDoctor(repoRoot string) ([]VaultDoctorEntry, error)` | Estado de vaults: symlinks, manifest, integridad |
## Ejemplo canonico
```go
// Todas las funciones siguen el mismo patron:
// reciben registryRoot (raiz del repo) y retornan slice de resultados + error.
import "fn-registry/functions/infra"
audits, err := infra.AuditCapabilityGroups("/home/lucas/fn_registry")
if err != nil { log.Fatal(err) }
for _, a := range audits {
if !a.OK { fmt.Printf("%s: %v\n", a.Group, a.Issues) }
}
// fn doctor las compone todas via subcomandos:
// fn doctor artefacts → ArtefactDoctor
// fn doctor services → ServicesStatus
// fn doctor sync → PcLocationsDrift
// fn doctor uses-functions → AuditUsesFunctions
// fn doctor unused → FindUnusedFunctions
// fn doctor cpp-apps → AuditCppApps
// fn doctor capabilities → AuditCapabilityGroups
```
## Fronteras
- **Read-only**: ninguna funcion del grupo escribe, modifica estado ni mata procesos.
- **No incluye**: funciones de reparacion/fix (esas son acciones derivadas descritas en `.claude/rules/fn_doctor.md`).
- **No incluye**: `e2e_checks` ni `assertion eval` — esos son pasos del bucle reactivo, no diagnostico pasivo.