feat: spawn de ejecutores en la flota tmux (flow 0012, gap 1 cerrado)
- spawn_fleet_agent (bash/functions/infra): lanza un Claude como window de la sesion tmux de un perfil fleet (no kitty suelta), con --skill para arrancar en un modo (ej. /orquestador), --prompt-file para ejecutores autocontenidos, y --role para marcar el goal.json via mark_claude_role. Asi ejecutores y orquestador viven en la flota, visibles en fleetview y conmutables con /fleet focus. - skill /orquestador: paso 2 ahora prefiere spawn_fleet_agent sobre kitty cuando se opera dentro de un perfil fleet ($FLEET_SOCKET seteado); tabla de funciones del grupo actualizada. Validado en vivo: el orquestador arranca en la flota fleet2 en modo (MODO ORQUESTADOR activo), role=orchestrator marcado, pinneado arriba en la TUI; los 9 ejecutores existentes intactos. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -81,6 +81,26 @@ queda en telemetría):
|
||||
el comando canónico exacto y devuelve el log donde se ve el arranque. Valida que el dir y el
|
||||
prompt_file existan y que kitty esté instalado.
|
||||
|
||||
#### En la flota tmux (PREFERIDO cuando operas en un perfil fleet)
|
||||
|
||||
Si estás dentro de un perfil FleetView (variable `$FLEET_SOCKET` seteada — eres el orquestador de
|
||||
una flota tmux montada con `launch_fleetclaude`), **NO lances kitties sueltas**: lanza cada
|
||||
ejecutor como una **window de la flota tmux** con `spawn_fleet_agent`, para que viva en la flota,
|
||||
se vea en la TUI `fleetview` y sea conmutable con `/fleet focus`:
|
||||
|
||||
```bash
|
||||
./fn run spawn_fleet_agent --socket "$FLEET_SOCKET" --session "$FLEET_SESSION" \
|
||||
--cwd <dir-aislado> --prompt-file /tmp/orq_<slug>.md --title "<subtarea>"
|
||||
# devuelve el window_id; despues escribe el DoD-contrato del ejecutor:
|
||||
./fn run set_dod_contract <sessionId-del-ejecutor> "<DoD golden+edge+error>" pending
|
||||
```
|
||||
|
||||
- `spawn_fleet_agent_bash_infra` crea la window tmux + arranca claude con el prompt autocontenido
|
||||
(o `--skill <name>` para arrancar en un modo), y con `--role executor|orchestrator` marca su
|
||||
`goal.json` (via `mark_claude_role`). El aislamiento git (sub-repo / worktree / scope) sigue
|
||||
imponiéndose en el prompt igual que con kitty.
|
||||
- Usa kitty (arriba) solo para secundarios que deban vivir **fuera** de un perfil fleet.
|
||||
|
||||
### 3. Aislamiento git obligatorio por secundario (regla de oro)
|
||||
|
||||
**Dos Claudes en el MISMO working tree comparten `HEAD` y el índice; sus `git checkout` se
|
||||
@@ -303,6 +323,8 @@ El orquestador no hace polling caro: drena la cola **cuando actúa** (cuando la
|
||||
| `drain_fleet_events_py_infra` | Consumir la cola de transiciones del watcher (`~/.claude/fleet/events.jsonl`), agrupada por clasificación + urgentes |
|
||||
| `classify_fleet_termination_go_infra` | Clasificar el estado de terminación de un agente (RECLAMA/MAL_LANZADO/DICE_TERMINADO/ESTANCADO/TRABAJANDO) — lo usa el watcher |
|
||||
| `list_claude_fleet_go_infra` | Fleet tipado con goal/phase/`dod_contract`/`dod_status`/`role` + window tmux (alimenta `/fleet` y el watcher) |
|
||||
| `spawn_fleet_agent_bash_infra` | Lanzar un ejecutor (o el orquestador) como window de la flota tmux — preferido sobre kitty cuando hay perfil fleet |
|
||||
| `mark_claude_role_py_infra` | Marcar `role` (orchestrator/executor) en el goal.json de un Claude resolviendo PID→sessionId |
|
||||
|
||||
## Ejemplo end-to-end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user