# /autonomous-task — Lanza fn-orquestador (Fase 6 del ciclo reactivo) Lanza el meta-orquestador autonomo que recorre el bucle CONSTRUIR → EJECUTAR → RECOPILAR → ANALIZAR → MEJORAR sobre un issue, sin intervencion humana, hasta convergencia / estancamiento / timeout / limite de iteraciones. Issue 0069. Pre-condiciones obligatorias (chequear ANTES de despachar): 1. Migration `fn_operations/migrations/006_task_runs.sql` aplicada. 2. Subagentes `fn-constructor`, `fn-executor`, `fn-recopilador`, `fn-analizador`, `fn-mejorador`, `fn-orquestador` presentes en `.claude/agents/`. 3. `dev/autonomous_protected_paths.json` existe. 4. `master` local up-to-date con `origin/master`. 5. Branch `auto/` NO existe ya. 6. `gh auth status` OK (necesario para PR draft al converger). 7. Tipo de tarea soportado: `feature_app_simple`, `bugfix_with_repro`, `refactor_safe`, `add_e2e_check`. Si alguna pre-condicion falla → ABORT con razon. NO improvisar. --- ## Argumento `$ARGUMENTS` — `` o `` + flags opcionales. ``` /autonomous-task 0070 /autonomous-task 0070 --max-iterations 15 --max-minutes 90 /autonomous-task 0070 --auto-apply-proposals safe /autonomous-task 0070 --dry-run /autonomous-task path/to/spec.yaml --branch auto/custom-name ``` Flags: - `--max-iterations N` tope de iteraciones (default 10) - `--max-minutes M` timeout total (default 60) - `--auto-apply-proposals` `none|safe|aggressive` (default `safe`) - `--branch NAME` rama TBD (default `auto/`) - `--dry-run` simula, NO aplica --- ## Comportamiento 1. **Verificar pre-condiciones** con script bash (ver arriba). Si alguna falla, reportar y salir. 2. **Despachar a `fn-orquestador`** via Agent tool con `subagent_type=fn-orquestador`. Pasar: - `issue_id` o `task_spec` - flags resueltos - paths protegidos (leidos de `dev/autonomous_protected_paths.json`) 3. **El subagente:** - Crea worktree aislado `/tmp/fn_orq__/` desde `master`. - Persiste estado en `task_runs` (operations.db del app target o repo root). - Despacha por fases a los 5 subagentes especializados. - Aplica proposals filtradas por `--auto-apply-proposals`. - Termina con: `converged` (PR draft creado) | `stalled` | `timeout` | `iterations_exhausted` | `needs_human` | `aborted`. 4. **Reportar resultado al humano** con: - `status`, `iterations / max`, `duration / max` - `branch`, `worktree`, `PR draft url` si converged - `proposals creadas / aplicadas` - `last run_id` y status - Resumen iter-por-iter del `progress_json` --- ## Reglas duras (no negociables) - Sandbox de rama EN WORKTREE — nunca toca master ni el working tree del humano. - No merge automatico — PR draft siempre. - No `--no-verify`, no `--force`, no skip hooks. - Paths protegidos via `dev/autonomous_protected_paths.json`. - Watchdog: 2 iteraciones con mismo set de fails → `status=stalled`. - Auditoria total en `task_runs.progress_json`. - No self-modification: NO toca `.claude/agents/` ni `.claude/commands/`. --- ## Integracion con call_monitor (issue 0085) El orquestador puede leer `projects/fn_monitoring/apps/call_monitor/operations.db` para: - Consultar `function_stats` antes de decidir que funciones usar/reusar. - Filtrar proposals existentes via `mcp__registry__fn_proposal --status pending` para evitar duplicados. - Loggear sus invocaciones via el hook PostToolUse (automatico). Tras converger, el `call_monitor propose` ejecutado por el humano (o futuro cron) absorbera las nuevas violations / copied_code / fails para alimentar la siguiente ronda. --- ## Tipos NO soportados - Diseño arquitectura nuevo (humano decide). - Decisiones UX subjetivas. - Cambios BD productiva. - Cualquier cosa que toque secrets/credenciales. - Self-modification del propio orquestador. Si el issue contiene criterios no-verificables programaticamente, ABORT con `status=needs_human`. --- ## Output canonico ``` === /autonomous-task: 0070 === status: converged iterations: 7 / 10 duration: 23 min / 60 branch: auto/0070 worktree: /tmp/fn_orq_0070_1731612345 PR draft: https://github.com/.../pull/123 proposals: 3 creadas, 2 auto-aplicadas last run_id: e2e_run_abc123 (status: pass) Iter: 1. construir → ok (2 funciones nuevas) 2. ejecutar → ok 3. analizar → fail (2/8 checks) 4. mejorar → 3 proposals (2 auto-applicadas) 5. construir → ok (re-build tras patches) 6. analizar → pass 7. recopilador → ok (operations.db integra) Siguiente: revisar PR draft + fn proposal list -s pending --target-id 0070 ```