chore: auto-commit (7 archivos)
- .mcp.json - bash/functions/pipelines/full_git_push.sh - python/pyproject.toml - python/uv.lock - bash/functions/infra/jupyter_mcp_serve.md - bash/functions/infra/jupyter_mcp_serve.sh - dev/issues/0166-app-to-app-dependencies-tracking.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
---
|
||||
id: "0166"
|
||||
title: "Rastrear dependencias entre apps (app→app) para clonado/build reproducible"
|
||||
status: pendiente
|
||||
type: enhancement
|
||||
domain:
|
||||
- registry-quality
|
||||
- build
|
||||
scope: registry-only
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-31
|
||||
updated: 2026-05-31
|
||||
tags: [build, apps, dependencies, clone, migration]
|
||||
---
|
||||
# 0166 — Rastrear dependencias entre apps (app→app)
|
||||
|
||||
## APP Metadata
|
||||
|
||||
| Campo | Valor |
|
||||
|-------|-------|
|
||||
| **ID** | 0166 |
|
||||
| **Estado** | pendiente |
|
||||
| **Prioridad** | media |
|
||||
| **Tipo** | enhancement — metadata de apps + `fn app clone` / `fn doctor` |
|
||||
|
||||
## Contexto
|
||||
|
||||
Durante la migración a Linux nativo (PC `lucas-linux`, 2026-05-31) al levantar los
|
||||
servicios systemd hubo que clonar+compilar los apps de servicio. El build de
|
||||
**`sqlite_api`** (`projects/fn_monitoring/apps/sqlite_api`) falló con:
|
||||
|
||||
```
|
||||
handlers.go:13:2: package fn-registry/apps/data_factory/datafactory is not in std
|
||||
```
|
||||
|
||||
`sqlite_api` **importa un paquete de otro app** (`apps/data_factory/datafactory`).
|
||||
Como `data_factory` no estaba clonado, no compilaba. Hubo que clonarlo a mano para
|
||||
desbloquear el build. No hay forma declarada de saber, antes de clonar/compilar un app,
|
||||
**qué otros apps necesita**.
|
||||
|
||||
## Problema
|
||||
|
||||
- `fn app clone <id>` clona solo el repo pedido; no arrastra los apps de los que depende.
|
||||
- `fn sync locations` lista paths por PC pero no relaciones app→app.
|
||||
- El grafo de dependencias entre apps es implícito (vive solo en los `import` de Go),
|
||||
así que clonar el subset correcto en una máquina nueva es ensayo-error.
|
||||
|
||||
## Objetivo
|
||||
|
||||
Hacer explícitas y consultables las dependencias **app→app**, para que:
|
||||
|
||||
1. Se pueda **saber** qué apps dependen de qué apps (consulta / reporte).
|
||||
2. `fn app clone <id>` pueda **arrastrar** los apps-dependencia (o al menos avisarlos).
|
||||
3. `fn doctor` detecte clones incompletos (app presente pero su dep ausente).
|
||||
|
||||
## Propuesta (a concretar)
|
||||
|
||||
1. **Metadata declarada** en `app.md`: añadir campo `depends_on_apps: [<id>...]`
|
||||
en el frontmatter (análogo a `uses_functions`/`uses_types` de las funciones).
|
||||
2. **Detección automática** (validación): un audit que parsee los `import` de cada app,
|
||||
detecte imports de la forma `fn-registry/apps/<X>/...` o `.../projects/.../apps/<X>/...`
|
||||
y compare con `depends_on_apps` (igual que `audit_uses_functions` para funciones).
|
||||
- Caso semilla confirmado: `sqlite_api` → `data_factory`.
|
||||
3. **`fn app clone --with-deps <id>`**: resuelve el cierre transitivo de `depends_on_apps`
|
||||
y clona todo lo necesario a las rutas de `pc_locations`.
|
||||
4. **`fn doctor`**: marcar `[incomplete-clone]` si un app está clonado pero falta un
|
||||
`depends_on_apps`.
|
||||
|
||||
## Notas
|
||||
|
||||
- Relacionado (mismo arrastre de migración, issues aparte si procede):
|
||||
- Los `repo_url` de varios apps de servicio (`registry_api`, `services_api`) apuntan al
|
||||
alias `gitea.organic-machine.com` que **no resuelve**; el host real es
|
||||
`gitea-dgg044oo04woo4ggcsws4gk0.organic-machine.com`. `fn app clone` falla por eso.
|
||||
- Los `go.mod` de los apps de servicio requieren `go mod tidy` antes de compilar
|
||||
(deps faltantes con go 1.26).
|
||||
|
||||
## Criterio de hecho
|
||||
|
||||
- [ ] Campo `depends_on_apps` documentado y poblado al menos en `sqlite_api`.
|
||||
- [ ] Audit que detecta imports app→app y reporta drift vs `depends_on_apps`.
|
||||
- [ ] `fn app clone` resuelve dependencias (o las avisa).
|
||||
Reference in New Issue
Block a user