Nueve issues nuevos cubriendo deudas tecnicas descubiertas tras ejecutar fn doctor por primera vez: - 0054 deploy_server: reimplementa SSH/systemd/rsync inline en lugar de usar funciones del registry (alta). - 0055 docker_tui: usa docker CLI directo via shell en lugar de docker_* del registry (alta). - 0056 audit_uses_functions: heuristica Python no detecta `from pkg.subpkg import X` (media). - 0057 audit_uses_functions: deteccion de simbolos Go con abreviaturas falla en algunos casos (baja). - 0058 kanban uses_functions sync deferido por WIP en curso (baja). - 0059 doble tracking de apps/*/app.md (fn_registry + sub-repo) inconsistencia (media). - 0060 fn doctor secrets: subcomando para audit secrets en TODOS los repos (media). - 0061 integrar notify_telegram en deploy_server + bucle reactivo (media, depende de 0054). - 0062 politica de deprecacion para 704 funciones sin consumidores (baja, research). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.9 KiB
0054 — deploy_server: refactor registry-first (SSH/systemd/rsync/health/docker-compose)
APP Metadata
| Campo | Valor |
|---|---|
| ID | 0054 |
| Estado | pendiente |
| Prioridad | alta |
| Tipo | refactor — apps/deploy_server/ |
Dependencias
- 13 funciones del registry ya existentes y testeadas:
ssh_check_go_infra,ssh_exec_go_infra,ssh_upload_go_infra,ssh_config_read_go_infra,ssh_config_find_go_infrasystemd_install_go_infra,systemd_restart_go_infra,systemd_status_go_infra,systemd_generate_unit_go_infra(pure)rsync_deploy_bash_infra,docker_compose_remote_deploy_bash_infrahealth_check_http_go_infravps_setup_app_go_infra
- Pipelines
deploy_app_remote_go_infraysetup_vps_app_go_infraorquestan varias.
Contexto
fn doctor uses-functions (2026-05-07) detecto que apps/deploy_server/ no importa NADA del registry. Toda la logica SSH/systemd/rsync/health/docker-compose esta reimplementada inline en deployer.go (d.sshCheck, d.sshExec, d.rsyncDeploy, d.healthCheck, d.generateUnit, d.installUnit, deployDockerCompose).
Esta es la violacion mas grande de la regla registry-first.md actualmente activa. La app fue construida antes de que existieran las funciones del registry equivalentes; las funciones se crearon despues pero deploy_server quedo sin migrar.
Tras sincronizar app.md (2026-05-07) las 13 funciones se quitaron del frontmatter — ahora refleja la realidad pero la deuda real (registry-first compliance) sigue.
Objetivo
Reemplazar implementaciones inline de deployer.go por llamadas a las funciones del registry. Resultado:
apps/deploy_server/*.goimportafn-registry/functions/infrayfn-registry/functions/cybersecuritysegun corresponda.app.mddeclara las 13 funciones enuses_functions.- Los tests existentes siguen pasando.
fn doctor uses-functionsreportadeploy_server_go_infrasin drift.
Arquitectura
Archivos afectados
apps/deploy_server/deployer.go— ELIMINAR metodossshCheck,sshExec,sshUpload,rsyncDeploy,healthCheck,generateUnit,installUnity reemplazar por llamadas a funciones del registry.apps/deploy_server/docker_compose.go— sustituirdeployDockerComposepordocker_compose_remote_deploy_bash_infra.apps/deploy_server/handlers.go(probable) — actualizar callsites.apps/deploy_server/app.md— anadir las 13 deps enuses_functions.apps/deploy_server/go.mod— anadirreplace fn-registry => ../..si no esta.
Tareas
Fase 1 — preparacion
1.1 Listar callsites actuales en deployer.go (grep -n 'd\.\(sshCheck\|sshExec\|sshUpload\|rsyncDeploy\|healthCheck\|generateUnit\|installUnit\)\|deployDockerCompose').
1.2 Verificar firmas de las funciones del registry vs los metodos inline. Documentar diferencias (parametros distintos, error wrapping).
1.3 Anadir replace directive en go.mod si falta.
Fase 2 — migracion SSH
2.1 Reemplazar d.sshCheck por infra.SshCheck.
2.2 Reemplazar d.sshExec por infra.SshExec.
2.3 Reemplazar d.sshUpload por infra.SshUpload.
2.4 Test build: go build en deploy_server.
Fase 3 — migracion systemd
3.1 Reemplazar d.generateUnit por infra.SystemdGenerateUnit.
3.2 Reemplazar d.installUnit por infra.SystemdInstall.
3.3 Reemplazar restart/status por infra.SystemdRestart, infra.SystemdStatus.
Fase 4 — migracion rsync + http + docker-compose
4.1 Reemplazar d.rsyncDeploy por shell-out a bash/functions/infra/rsync_deploy.sh (es bash, no Go).
4.2 Reemplazar d.healthCheck por infra.HealthCheckHTTP.
4.3 Reemplazar deployDockerCompose por shell-out a bash/functions/infra/docker_compose_remote_deploy.sh.
Fase 5 — tests + docs
5.1 Correr tests existentes. Si hay mocks de los metodos privados, actualizar.
5.2 Actualizar app.md uses_functions con las 13 IDs (orden alfabetico).
5.3 fn index y fn doctor uses-functions debe reportar deploy_server limpio.
5.4 Update CHANGELOG.md con la migracion.
Riesgos
- Las firmas inline pueden tener parametros adicionales que las del registry no exponen. Mitigacion: si la diferencia es real, abrir proposal para extender la funcion del registry, NO duplicar inline.
- Tests con mocks de metodos privados rompen. Mitigacion: convertir a integration tests contra docker container o servidor SSH local.
- Build cross-platform: si
infrapaquete tiene CGo y deploy_server cross-compila, validar build linux/windows.
Decisiones de diseno
- No crear adapter layer. Llamada directa a las funciones del registry. Si la firma cambia entre version, se actualiza el callsite — el costo es bajo y mantiene la regla registry-first sin ceremonia.
- Las funciones bash (
rsync_deploy,docker_compose_remote_deploy) se invocan viaos/execconbash <script_path>. NO portar a Go solo para "estar en el mismo lenguaje" — la version bash funciona y es la que el registry mantiene.