# Propuestas e2e_checks — issue 0121a

Generadas por `fn-recopilador design-e2e` paralelo, 2026-05-19.

## Estado (13/26 apps cubiertas)

### Wave 1 (5 apps)

| App | YAML | Lang | Stack | Checks | Severidad mix | Estado |
|---|---|---|---|---|---|---|
| deploy_server | [deploy_server.yaml](deploy_server.yaml) | go | net/http + CGO sqlite | 4 | critical | propuesta |
| registry_api | [registry_api.yaml](registry_api.yaml) | go | net/http + CGO+FTS5 | 7 | 6 critical + 1 warning | propuesta |
| shaders_lab | [shaders_lab.yaml](shaders_lab.yaml) | cpp | imgui + mingw-w64 | 3 | 2 critical + 1 warning | propuesta |
| auto_metabase | [auto_metabase.yaml](auto_metabase.yaml) | py | httpx + CLI argparse | 4 | critical | propuesta |
| dag_engine | [dag_engine.yaml](dag_engine.yaml) | go | net/http + vite/react + CGO+FTS5 | 6 | 5 critical + 1 warning | propuesta |

### Wave 2 (8 apps)

| App | YAML | Lang | Stack | Checks | Severidad mix | Estado |
|---|---|---|---|---|---|---|
| services_api | [services_api.yaml](services_api.yaml) | go | net/http + SSH cross-PC + sqlite custom schema | 6 | 3 critical + 3 warning | propuesta |
| registry_mcp | [registry_mcp.yaml](registry_mcp.yaml) | go | mcp-go stdio + CGO+FTS5 | 5 | 4 critical + 1 warning | propuesta |
| sqlite_api | [sqlite_api.yaml](sqlite_api.yaml) | go | net/http read-only + CGO+FTS5 | 7 | 4 critical + 2 warning + 1 (auth WIP) | propuesta |
| registry_dashboard | [registry_dashboard.yaml](registry_dashboard.yaml) | cpp | imgui + cpp-httplib + WS RFC6455 | 7 | 3 critical + 4 warning | propuesta |
| primitives_gallery | [primitives_gallery.yaml](primitives_gallery.yaml) | cpp | imgui + 44 .cpp registry (build gate de toda API C++) | 6 | 2 critical + 4 warning | propuesta |
| pipeline_launcher | [pipeline_launcher.yaml](pipeline_launcher.yaml) | go | bubbletea TUI + CGO+FTS5 | 5 | 3 critical + 2 warning | propuesta |
| docker_tui | [docker_tui.yaml](docker_tui.yaml) | go | bubbletea TUI + go-duckdb + docker CLI | 6 | 3 critical + 3 warning | propuesta |
| fn_match | [fn_match.yaml](fn_match.yaml) | go | subcmd de ./fn + FTS5 fuzzy match (hook helper) | 5 | 2 critical + 3 warning | propuesta |

## Wave 3 (13 apps restantes, pendiente)

apps/:
- altsnap_jitter_test, app_gestion, app_hub_launcher, footprint_geo_stack, metabase_registry, script_navegador, services_monitor, set_exe_icon, tables_qa, text_editor_smoke

projects/*/apps/:
- element_agents/apps/element_matrix_chat, element_agents/apps/agents_and_robots, online_data_recopilation/apps/odr_console

## Advertencias detectadas (laterales)

### Bugs/drift descubiertos durante design-e2e

- **dag_engine** — `apps/dag_engine/registry.db` (262 KB) viola `db_locations.md` (registry.db SOLO en raiz). Reaparicio tras borrado de 2026-05-16. Issue separado pendiente.
- **dag_engine** — `pnpm build` roto por Mantine API drift (`StepTimeline.tsx:49` + `main.tsx:1`). Check `build_frontend` queda en `severity: warning` hasta arreglar.
- **dag_engine** — falta flag `--migrate-only` en binario. Check `migrations_apply` usa `list` como proxy.
- **deploy_server** — flag `--db` no expuesto en `cmdServe`. Check smoke usa BD por defecto del cwd hasta arreglar.
- **pipeline_launcher** — migracion `003_logs` falta en `operations.db`. Detectada por recopilador via PRAGMA table_info.
- **docker_tui** — `go.work` con path absoluto `/home/lucas/.local_agentes/backend` → build no portable. Check `build` queda en `severity: warning`.

### Correcciones de stack en mis prompts (telemetria para mi)

- **sqlite_api**: yo asumi Python, era Go. Recopilador corrigio.
- **registry_dashboard**: yo asumi Go+React+Vite, era C++ ImGui puro (cliente HTTP+WS). Recopilador corrigio + adapto checks.
- **fn_match**: yo asumi binario propio, es subcomando de `./fn`. Recopilador corrigio.

## Hallazgos arquitectonicos

- **primitives_gallery** es build gate de toda la API C++ del registry: 44 .cpp linkados (gfx + viz + core + 3d + sql + ...). Si una funcion C++ rompe su cabecera, falla aqui primero. Considerar moverlo a un job critico de CI.
- **services_api** usa schema custom en operations.db (no fn_operations standard: `service_state` + `service_transition`). `ops_audit` debe manejar schemas custom.
- **registry_mcp** test `mcp_handshake_stdio` arranca pipes in-process — replica el JSON-RPC que Claude Code usa al arrancar. Es el check de mayor valor por linea del wave 2.

## Siguiente paso

Wave 3 (13 apps restantes) → completar coverage propuestas.

Despues:
- 0121b (`fn doctor e2e-coverage` via /autonomous-task tipo feature_app_simple) — apto para `/autopilot`.
- 0121c (aplicar propuestas: N /autonomous-task add_e2e_check) — paraleliza sub-repos.

## Como aplicar manualmente (sin orquestador)

```bash
cd apps/<app>
# Pegar el bloque e2e_checks: del yaml al frontmatter de app.md
$EDITOR app.md
git add app.md && git commit -m "feat: add e2e_checks (issue 0121)"
git push
```
