chore: auto-commit (9 archivos)

- .claude/commands/autopilot.md
- dev/proposals_e2e_checks_0121/altsnap_jitter_test.yaml
- dev/proposals_e2e_checks_0121/app_hub_launcher.yaml
- dev/proposals_e2e_checks_0121/element_matrix_chat.yaml
- dev/proposals_e2e_checks_0121/footprint_geo_stack.yaml
- dev/proposals_e2e_checks_0121/metabase_registry.yaml
- dev/proposals_e2e_checks_0121/script_navegador.yaml
- dev/proposals_e2e_checks_0121/services_monitor.yaml
- dev/proposals_e2e_checks_0121/tables_qa.yaml

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-19 01:41:49 +02:00
parent bed8a802a0
commit 32bb2cbd25
9 changed files with 1106 additions and 7 deletions
+56 -7
View File
@@ -1,11 +1,11 @@
---
name: autopilot
description: Modo full-auto. Toma issue o flow con DoD definido, valida readiness, ejecuta hasta cerrarlo sin interaccion humana. Auto-selecciona opciones Recomendadas. Spawnea subagentes. No pregunta. Para.
description: Modo full-auto self-Q&A. Toma issue o flow con DoD definido, valida readiness, ejecuta hasta cerrarlo sin interaccion humana. Ante cada decision se autoformula la pregunta, se autoresponde con razonamiento explicito, y avanza. Spawnea subagentes. Para.
---
# /autopilot — Modo autonomo end-to-end
# /autopilot — Modo autonomo end-to-end con self-Q&A
Ejecuta un issue o flow **hasta cierre** sin intervencion humana. Auto-selecciona la opcion **Recomendada** en cualquier decision, spawnea subagentes en paralelo, y persiste estado en `task_runs`. **No usa `AskUserQuestion`**: si una decision no tiene Recomendado claro, ABORTA con razon antes de improvisar.
Ejecuta un issue o flow **hasta cierre** sin intervencion humana. Ante cada decision, Claude **se formula la pregunta a si mismo y se la responde** (self-Q&A) con razonamiento trazable, en vez de abortar. Auto-prefiere la opcion **Recomendada** cuando exista; cuando no, decide en base a evidencia del codigo, registry, y reglas. Cada Q&A queda persistido en `task_runs.events_json[]` para auditoria. Spawnea subagentes en paralelo y persiste estado en `task_runs`.
Diferencia con comandos relacionados:
@@ -86,8 +86,8 @@ Si `FALTA` esta presente: opcionalmente autopilot ofrece spawnear `fn-constructo
Durante toda la ejecucion de `/autopilot`:
1. **NO invocar `AskUserQuestion`** bajo ningun caso. Si surge una decision sin Recomendado obvio, ABORT con `status=needs_human` + razon.
2. **Auto-pick "Recommended"** en cualquier flag con opciones (mocks vs prod, default branch, etc.) — usar primer item etiquetado como recomendado en el archivo / convencion del proyecto.
1. **NO invocar `AskUserQuestion` al humano**. En su lugar, **self-Q&A loop**: cuando surja una decision, Claude la formaliza como `Question -> Options -> Reasoning -> Choice` y persiste el bloque en `task_runs.events_json[]`. Ver seccion "Self-Q&A loop" mas abajo. Solo ABORTA con `status=needs_human` si la decision toca: (a) destructivo sin rollback (`--force`, `git reset --hard`, `DROP TABLE`), (b) credenciales/secrets, (c) paths protegidos, (d) contradice DoD explicito del issue. En esos casos, NUNCA self-answer — escala al humano.
2. **Auto-pick "Recommended"** en cualquier flag con opciones (mocks vs prod, default branch, etc.) — usar primer item etiquetado como recomendado en el archivo / convencion del proyecto. Si no hay marcado, self-Q&A con justificacion.
3. **Acciones destructivas prohibidas sin flag explicito**: `git reset --hard`, `git push --force`, `rm -rf` fuera de `/tmp/`, `DROP TABLE`, `--no-verify`, `--force`. Si una accion las requiere -> ABORT.
4. **Hooks NO se saltan**. Si pre-commit falla, fix raiz; si excede scope, ABORT (NO `--no-verify`).
5. **Paths protegidos** de `dev/autonomous_protected_paths.json` se respetan exactamente.
@@ -110,7 +110,50 @@ Durante toda la ejecucion de `/autopilot`:
8. **Timeout** default 60 min. Override con `--max-minutes`.
9. **Idempotencia**: re-lanzar `/autopilot <target>` sobre el mismo target reanuda desde el ultimo `task_run` exitoso (lookup por `issue_id` o `flow_id` en `task_runs`).
10. **No self-modification**: NUNCA tocar `.claude/agents/`, `.claude/commands/`, `.claude/rules/`, `.claude/scripts/`, `.claude/CLAUDE.md`.
11. **Trazabilidad**: cada decision se persiste en `task_runs.events_json[]` con `{ts, agent, action, evidence, diff_summary, auto_choice}`.
11. **Trazabilidad**: cada decision se persiste en `task_runs.events_json[]` con `{ts, agent, action, evidence, diff_summary, auto_choice, self_qa?}`.
---
## Self-Q&A loop (corazon del modo)
Cuando aparece una decision sin Recomendado explicito, **NO abortar y NO preguntar al humano**. Claude:
1. **Formula la pregunta** en una frase. Una sola pregunta por bloque, especifica, contestable.
2. **Lista opciones** (2-4). Misma forma que `AskUserQuestion` interno: `label + description`. Si solo hay una opcion viable, indicalo (`Options: [A] only viable`).
3. **Razona en 1-3 lineas** apoyandote en: registry (`mcp__registry__fn_search`), reglas (`.claude/rules/`), tests previos, archivos del repo, convenciones del proyecto.
4. **Elige** y marca `confidence: high|med|low`. Si `low` y la accion no es trivialmente reversible -> ABORT con `status=needs_human` y adjunta el bloque Q&A.
5. **Persiste** en `events_json[]` con shape:
```json
{
"ts": "...",
"agent": "autopilot",
"action": "self_qa",
"self_qa": {
"question": "Crear el flag enabled=false o ya enabled=true?",
"options": [
{"label": "enabled=false", "rationale": "TBD doctrina (feature_flags.md): merge codigo terminado pero NO expuesto"},
{"label": "enabled=true", "rationale": "feature ya tiene tests verde y DoD 100%"}
],
"choice": "enabled=false",
"confidence": "high",
"reasoning": "feature_flags.md regla: 'cuando se activa: cambiar enabled:true y rellenar enabled_at'. Activar va en commit posterior."
}
}
```
6. **Avanza** sin esperar.
**Tope de self-Q&A**: `--max-self-answers` (default 20). Si se excede -> ABORT `status=overdeliberating` con dump de todas las Q&A. Una iteracion del bucle que necesita >5 Q&A es señal de DoD vago — abortar.
**Cuando NO usar self-Q&A (ABORT en vez de auto-responder)**:
| Caso | Razon |
|---|---|
| Destructivo sin rollback (`git reset --hard`, `rm -rf` fuera `/tmp/`, `DROP TABLE`, `--no-verify`, `--force`) | Coste de error infinito |
| Credenciales/tokens/secrets | Riesgo de exfiltracion |
| Paths protegidos (`dev/autonomous_protected_paths.json`) | Regla dura del orquestador |
| Contradiccion explicita con DoD del issue | DoD es contrato |
| Decision arquitectonica multi-app (renombrar tabla compartida, romper API publica) | Blast radius > 1 artefacto |
| `confidence: low` + accion no reversible | Self-Q&A no garantiza acierto sin oraculo |
---
@@ -171,6 +214,7 @@ iterations: 3 / 10
duration: 18 min / 60
dod_checks: 5/5 pass
proposals: 2 creadas, 1 auto-aplicada
self_qa: 7 (6 high / 1 med / 0 low)
agents_spawned: fn-constructor x2, fn-recopilador x1
commits: 4 (3 feat + 1 refactor)
branch: master (registry-only, push directo)
@@ -226,6 +270,7 @@ estimated_iter: 3-5
| `--dry-run` | off | Plan + dispatch simulado, no aplica cambios |
| `--allow-construct-missing` | off | Si flow tiene `FALTA: crear <id>`, spawn fn-constructor antes |
| `--auto-apply-proposals` | `safe` | Pasado a fn-orquestador en Path A |
| `--max-self-answers N` | 20 | Tope de bloques Self-Q&A por run. Excedido -> ABORT `overdeliberating` |
---
@@ -240,6 +285,8 @@ estimated_iter: 3-5
| `aborted_protected_path` | Cambio en path protegido | Humano revisa intent |
| `iterations_exhausted` | Excedido `--max-iterations` | Humano evalua si vale subir tope |
| `sandbox_breach` | Diff fuera del worktree | ABORT critico, audit |
| `overdeliberating` | Excedido `--max-self-answers` | DoD probablemente vago — humano refina criterios |
| `low_confidence_abort` | Self-Q&A devolvio `confidence: low` en accion no reversible | Humano valida la decision concreta |
---
@@ -250,7 +297,9 @@ estimated_iter: 3-5
| `/autopilot` sin pre-check DoD | Trabajar sin criterio de exito = bucle infinito |
| Auto-relleno de DoD inventada | Criterios falsos -> falso "done" |
| Merge a master sin tests verde | Master no deployable |
| `AskUserQuestion` desde dentro | Rompe el contrato autonomo |
| `AskUserQuestion` al humano | Rompe el contrato autonomo — usa self-Q&A loop |
| Self-Q&A sin razonamiento explicito | Decision opaca, no auditable |
| Self-Q&A con `confidence: high` en accion destructiva sin oraculo | Confianza injustificada — escalar |
| Salto de hooks (`--no-verify`) | Encubre bugs reales |
| Tocar mas issues que el target | Scope creep silencioso |
| Borrar archivos sin backup en events_json | Pierde auditoria |