split(0121): epic + 3 sub-issues — design/doctor/apply

0121 era scope demasiado grande para 1 orquestador (batch + new function +
new subcmd + N edits). Split:

- 0121a chore: design-e2e batch (Claude orquesta N fn-recopilador paralelos)
- 0121b feature: audit_e2e_coverage + fn doctor e2e-coverage subcmd
       (tipo feature_app_simple, apto /autonomous-task)
- 0121c chore: aplicar propuestas via N /autonomous-task add_e2e_check

Cada hijo tiene Acceptance verificable + tipo orquestador declarado.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-19 00:22:23 +02:00
parent 78450b7039
commit 2b5c30a022
4 changed files with 178 additions and 5 deletions
+14 -5
View File
@@ -1,8 +1,8 @@
---
id: "0121"
title: "Cobertura e2e_checks: design-e2e batch sobre apps sin contrato"
status: pendiente
type: chore
title: "EPIC: Cobertura e2e_checks masiva (design + doctor + apply)"
status: in-progress
type: epic
domain:
- registry-quality
- meta
@@ -15,10 +15,19 @@ blocks:
related:
- "0068"
created: 2026-05-18
updated: 2026-05-18
tags: [e2e_checks, recopilador, batch, coverage]
updated: 2026-05-19
tags: [e2e_checks, recopilador, batch, coverage, epic]
---
# Sub-issues
- `0121a` — design-e2e batch (yo orquesto N fn-recopilador paralelos, propuestas en `dev/proposals_e2e_checks_0121/`)
- `0121b``audit_e2e_coverage_go_infra` + `fn doctor e2e-coverage` (via /autonomous-task, tipo feature_app_simple)
- `0121c` — aplicar propuestas: N `/autonomous-task add_e2e_check` (1 por app) en paralelo
Cierra el epic cuando los 3 hijos cierren + coverage >=80%.
# 0121 — Cobertura e2e_checks masiva via fn-recopilador batch
## Problema
+53
View File
@@ -0,0 +1,53 @@
---
id: "0121a"
title: "design-e2e batch: fn-recopilador paralelo sobre apps sin contrato"
status: pendiente
type: chore
domain:
- registry-quality
scope: registry
priority: alta
depends:
- "0120"
blocks:
- "0121c"
related:
- "0121"
- "0068"
created: 2026-05-19
updated: 2026-05-19
tags: [e2e_checks, recopilador, batch, design]
---
# 0121a — Design-e2e batch
## Problema
>20 apps sin bloque `e2e_checks` en `app.md`. Sin contrato, `fn-analizador` no puede validar y el bucle reactivo opera amputado.
## Decision
Lanzar `fn-recopilador` en modo `design-e2e <app>` en paralelo sobre TODAS las apps sin contrato. NO via `/autonomous-task` (no encaja en tipos soportados) — orquestacion manual desde Claude (1 mensaje, N tool_use blocks).
Cada output = propuesta de bloque YAML guardada en `dev/proposals_e2e_checks_0121/<app>.yaml`. Humano (o 0121c) aplica via PR.
## Tareas
1. Listar apps sin `e2e_checks:` con grep -L.
2. Spawn `fn-recopilador design-e2e <app>` paralelo (1 Agent call con N tool_use blocks).
3. Crear carpeta `dev/proposals_e2e_checks_0121/` y volcar 1 yaml por app.
4. Commit la carpeta a master. Push.
## Acceptance
- [ ] `dev/proposals_e2e_checks_0121/` existe con >=1 yaml por app sin contrato detectada.
- [ ] Cada yaml es directamente pegable al `e2e_checks:` del `app.md` correspondiente.
- [ ] Index file `dev/proposals_e2e_checks_0121/README.md` lista las apps + path al yaml.
- [ ] Commit + push a master del registry.
## DoD
- **Donde**: carpeta `dev/proposals_e2e_checks_0121/` visible en repo.
- **Latencia**: batch completo <10 min.
- **Como vuelve**: `ls dev/proposals_e2e_checks_0121/` o `cat README.md`.
- **Onboarding**: "Para aplicar las propuestas a una app concreta, copia el yaml al `app.md` o lanza /autonomous-task 0121c-<app>."
@@ -0,0 +1,54 @@
---
id: "0121b"
title: "audit_e2e_coverage_go_infra + fn doctor e2e-coverage subcmd"
status: pendiente
type: feature
domain:
- registry-quality
scope: registry
priority: alta
depends:
- "0120"
blocks: []
related:
- "0121"
created: 2026-05-19
updated: 2026-05-19
tags: [doctor, coverage, e2e_checks, fn-constructor]
---
# 0121b — fn doctor e2e-coverage
## Problema
No hay forma de medir cuantas apps tienen `e2e_checks` declarado. Sin metrica, no se puede gatear coverage ni reportar progreso de 0121.
## Decision
1. Crear funcion del registry `audit_e2e_coverage_go_infra` que escanea `apps/`, `cpp/apps/`, `projects/*/apps/`, parsea frontmatter `app.md`, devuelve `{total, with_checks, missing[], coverage_pct}`.
2. Anadir subcomando `fn doctor e2e-coverage` en `cmd/fn/doctor.go` que invoca la funcion + formatea output (text + `--json`).
## Tareas
1. Crear funcion via `fn-constructor` (Go, domain `infra`).
2. Editar `cmd/fn/doctor.go` para anadir subcmd `e2e-coverage`.
3. Tests unitarios de la funcion.
4. `./fn doctor e2e-coverage` muestra reporte.
## Acceptance
- [ ] `audit_e2e_coverage_go_infra` indexada en registry.db con `signature`, `params_schema`, tests >=1.
- [ ] `fn doctor e2e-coverage --json` devuelve JSON con campos `{total, with_checks, missing, coverage_pct}`.
- [ ] `fn doctor e2e-coverage` (text) muestra tabla legible.
- [ ] Sin warnings en `fn doctor` global.
## DoD
- **Donde**: terminal (`fn doctor e2e-coverage`).
- **Latencia**: <2s.
- **Como vuelve**: `fn doctor` rutinario tras editar `app.md`.
- **Onboarding**: "Antes de cerrar issue que toca app, ejecuta `fn doctor e2e-coverage` para no bajar coverage."
## Tipo orquestador
`feature_app_simple` (1 funcion + 1 subcmd, scope acotado, criterios verificables). Apto para `/autonomous-task 0121b`.
+57
View File
@@ -0,0 +1,57 @@
---
id: "0121c"
title: "Aplicar propuestas e2e_checks: N /autonomous-task add_e2e_check paralelos"
status: pendiente
type: chore
domain:
- registry-quality
scope: registry
priority: media
depends:
- "0121a"
- "0121b"
blocks:
- "0122"
related:
- "0121"
created: 2026-05-19
updated: 2026-05-19
tags: [e2e_checks, autonomous, batch, apply]
---
# 0121c — Aplicar propuestas e2e
## Problema
0121a deja propuestas en `dev/proposals_e2e_checks_0121/<app>.yaml`. Aplicarlas 1 a 1 a mano es trabajo de N PRs idempotentes — perfecto para `/autonomous-task add_e2e_check` en paralelo.
## Decision
Por cada `<app>.yaml`:
1. Si la app cumple coverage objetivo y la propuesta no tiene riesgos altos → `/autonomous-task 0121c-<app>` con spec que apunta al yaml.
2. Cada autonomous-task abre PR en el sub-repo `dataforge/<app>` con el bloque pegado.
3. Humano (o futuro `fn-revisor` de 0122) mergea.
## Tareas
1. Listar propuestas pendientes en `dev/proposals_e2e_checks_0121/`.
2. Para cada app: spawn `/autonomous-task` con task_spec inline (path al yaml + target app.md).
3. Coleccionar PR URLs en `dev/proposals_e2e_checks_0121/PRS.md`.
4. Cuando `fn doctor e2e-coverage >=80%`, cerrar issue.
## Acceptance
- [ ] PR creado por cada propuesta no rechazada.
- [ ] `fn doctor e2e-coverage --json` reporta `coverage_pct >= 80`.
- [ ] `dev/proposals_e2e_checks_0121/PRS.md` lista cada PR URL + estado (open/merged/closed).
## DoD
- **Donde**: PRs en sub-repos Gitea + reporte coverage.
- **Latencia**: 1 autonomous-task = <5 min por app. Paralelo razonable: 5 simultaneos.
- **Como vuelve**: `cat dev/proposals_e2e_checks_0121/PRS.md` para ver estado.
- **Onboarding**: "Si un PR queda open, revisa manual o re-lanza `/autonomous-task 0121c-<app>` para reanudar (idempotente por regla 6 orquestador)."
## Tipo orquestador
`add_e2e_check` (1 PR por app, scope minimal). Multiples ejecuciones independientes — paraleliza sin colision (sub-repos distintos).