El orquestador identificaba cada agente por el campo tmux_window (@N), pero
el window_id de tmux cambia cuando un pane entra/sale de windows (el focus de
la flota usa break-pane + join-pane, que recrean windows). El pane_id (%N) en
cambio es estable durante toda la vida del pane: es el identificador correcto.
- claude_fleet.go: nuevo campo ClaudeFleet.PaneID `json:"pane_id"`. Se mantiene
TmuxWindow (lo necesita el focus internamente); esto AÑADE pane_id, no lo
reemplaza.
- resolve_pane_ids.go (+ .md, .go test): nueva función del registry
ResolvePaneIDs(socket, pids) -> map[pid]pane_id. Lista los panes del socket
(tmux -L <socket> list-panes -a) y para cada PID sube por el árbol de procesos
(PPID en /proc) hasta dar con un pane_pid. Reutiliza runTmux y procPPID del
paquete infra. Best-effort: tmux/socket caído o PID sin pane -> "" sin crash.
Núcleo testeable con inyección de la salida tmux y del resolvedor de PPID.
- list_claude_fleet.go: ListClaudeFleet() puebla PaneID resolviendo cada PID
vivo contra $FLEET_SOCKET (default "fleet"). Solo la entrada pública lo hace;
ListClaudeFleetFrom() queda intacta (cero coste tmux en tests y en el bucle
de render de fleetview).
Tag de grupo: orchestration.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fase 1, piezas 1+2:
- ClaudeFleet + list_claude_fleet ganan DodContract/DodStatus/Role,
leidos de goals/<sessionId>.json (.dod_contract/.dod_status/.role).
Aditivo: fleetview sigue compilando.
- classify_fleet_termination (pura): clasifica el estado de terminacion
de un agente (RECLAMA/MAL_LANZADO/DICE_TERMINADO/ESTANCADO/TRABAJANDO)
con precedencia fija, para que un watcher sin LLM decida. 34 tests.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sistema FleetView para centralizar la flota de procesos Claude Code vivos en una
sola ventana kitty + tmux (socket aislado -L fleet) con un panel TUI:
- list_claude_fleet (+ tipo claude_fleet): escanea ~/.claude/sessions + goals +
runtime, valida procesos vivos (anti-PID-reciclado), join por sessionId.
- list_resumable_claudes (+ tipo resumable_claude): sesiones cerradas reanudables.
- wrappers tmux: tmux_new_claude_window (con --resume), tmux_swap_window_into_console
(preserva ancho del sidebar), tmux_map_claude_panes.
- launch_kittyclaude: comando entrypoint; instala atajos alt+flechas/enter/n/0/k/r,
mouse on, remain-on-exit off; fija el ancho del sidebar con hooks.
- docs/capabilities/claude-fleet.md + entrada en el INDEX.
Incluye ademas funciones datascience en progreso (excel/duckdb/postgres) y ajustes
varios de docs e infra de otra sesion, agrupados aqui para no perderlos.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>