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.2 KiB
0055 — docker_tui: refactor para usar funciones docker_* del registry
APP Metadata
| Campo | Valor |
|---|---|
| ID | 0055 |
| Estado | pendiente |
| Prioridad | alta |
| Tipo | refactor — apps/docker_tui/ |
Dependencias
- 12 funciones del registry ya existentes:
docker_pull_image_go_infra,docker_list_containers_go_infra,docker_remove_container_go_infradocker_remove_image_go_infra,docker_remove_network_go_infra,docker_create_network_go_infradocker_stop_container_go_infra,docker_start_container_go_infra,docker_list_images_go_infradocker_inspect_container_go_infra,docker_run_container_go_infra,docker_container_logs_go_infra
- Tipos relacionados en
functions/infra/(Container, Image, Network).
Contexto
fn doctor uses-functions (2026-05-07) detecto que apps/docker_tui/ ejecuta el CLI docker directamente via shell.RunWithTimeout en views/docker.go (ListContainers, StartContainer, StopContainer...). Cero consumo del registry.
Como en 0054, la TUI fue construida antes de que existieran las funciones equivalentes en functions/infra/. Las 12 docker_* del registry parsean output JSON de docker CLI y devuelven tipos Go — exactamente lo que la TUI necesita.
Tras sincronizar app.md (2026-05-07) las 12 funciones se quitaron — ahora refleja la realidad, pero la deuda registry-first persiste.
Objetivo
Reemplazar views/docker.go (y similares) por llamadas a functions/infra/docker_*.go. Resultado:
apps/docker_tui/views/docker.goimportafn-registry/functions/infra.app.mddeclara las 12 docker_* funciones enuses_functions.- TUI sigue funcionando identica (acciones lentas se mantienen lentas, no es regresion).
fn doctor uses-functionsreporta docker_tui limpio.
Arquitectura
Archivos afectados
apps/docker_tui/views/docker.go— sustituir todas las llamadas inline a docker CLI por funciones del registry.apps/docker_tui/app.md— anadir 12 deps enuses_functions.- Probable:
apps/docker_tui/handlers/o similar segun estructura.
Tareas
Fase 1 — preparacion
1.1 Listar callsites a docker CLI: grep -rn 'shell\.Run.*docker\|exec\.Command.*"docker"' apps/docker_tui/.
1.2 Mapear cada accion TUI (start, stop, list, logs, inspect, ...) a la funcion del registry equivalente.
1.3 Anadir replace fn-registry => ../.. en go.mod si falta.
Fase 2 — migracion list/inspect (read-only primero)
2.1 ListContainers → infra.DockerListContainers.
2.2 ListImages → infra.DockerListImages.
2.3 InspectContainer → infra.DockerInspectContainer.
2.4 Validar que tipos retornados encajan con lo que la UI espera (Container, Image).
Fase 3 — migracion lifecycle (write)
3.1 StartContainer → infra.DockerStartContainer.
3.2 StopContainer → infra.DockerStopContainer.
3.3 RemoveContainer → infra.DockerRemoveContainer.
3.4 PullImage → infra.DockerPullImage.
3.5 RemoveImage → infra.DockerRemoveImage.
Fase 4 — migracion network/run/logs
4.1 CreateNetwork → infra.DockerCreateNetwork.
4.2 RemoveNetwork → infra.DockerRemoveNetwork.
4.3 RunContainer → infra.DockerRunContainer.
4.4 ContainerLogs → infra.DockerContainerLogs.
Fase 5 — tests + docs
5.1 Lanzar TUI manualmente, verificar todas las acciones funcionan (smoke test).
5.2 Actualizar app.md uses_functions.
5.3 fn index + fn doctor uses-functions limpio.
5.4 Update CHANGELOG.md.
Riesgos
- Las funciones del registry parsean output JSON; si el TUI dependia de output text-mode, las firmas cambian. Mitigacion: las funciones del registry ya exponen tipos Go estructurados, mejor ergonomia.
- Acciones largas (PullImage, RunContainer con stream): verificar que las funciones del registry soportan streaming o callback. Si no, abrir proposal para extender.
- Tests existentes con mocks de docker CLI rompen. Mitigacion: usar un docker daemon real para integration tests.
Decisiones de diseno
- Como en
0054, NO crear adapter layer. Llamadas directas. - Si una accion del TUI necesita algo que el registry no expone (ej. flags raros), abrir proposal
extend_existing_functionantes de duplicar.