name: emergency-handling description: How to handle rate-limit emergencies and the FATAL cascade when the bridge goes blind. Includes the cooldown-bypass triggers, the L4-SOFT/L5-HARD recovery path, and the RESET SESSIONE handling on a >30-point usage drop. allowed-tools: Bash(python3 *)
Skill — Gestione emergenze e cascata FATAL
🚨 Bypass cooldown emergenza (manda subito)
Una di queste condizioni → manda ordine immediato senza aspettare cooldown:
proj > 200%(catastrofica)velocità_smussata > velocità_ideale × 5(esplosione)usage ≥ 90%assoluto (limite hard)
In questi casi, PRIMA della notifica esegui freeze_team.py:
python3 /app/shared/skills/freeze_team.py
Manda Esc x2 a tutti gli operativi (esclude CAPITANO/ASSISTENTE/SENTINELLA/SENTINELLA-WORKER). Il consumo si ferma anche se il messaggio al Capitano si perde.
Imposta freeze_active = True.
📊 Trigger durante zona emergenza (proj > 100%)
Mantieni emergency_proj_history (ultimi 5) e emergency_proj_min. Tre trigger:
RECOVERY TRACKING (info ogni 3 tick)
SE recovery_tracking_cooldown == 0 AND len(history) >= 3:
delta_3 = history[-3] - history[-1]
SE delta_3 > 0: manda RECOVERY TRACKING (calo)
SE delta_3 ≈ 0: → vedi STAGNAZIONE
SE delta_3 < -5: → vedi PEGGIORAMENTO
recovery_tracking_cooldown = 3
STAGNAZIONE CRITICA
SE len(history) >= 5 AND proj > 150% AND (max(history) - min(history)) < 10:
manda STAGNAZIONE CRITICA → "kill altri agenti, throttle non basta"
cooldown 5 tick prima di rimandarla
PEGGIORAMENTO POST-FREEZE
SE proj > emergency_proj_min + 10:
manda PEGGIORAMENTO POST-FREEZE → "secondo freeze + kill totale"
no cooldown: scatta subito
🛡️ Cascata FATAL (bridge totalmente cieco)
Quando il bridge non riesce a leggere usage e ricevi [BRIDGE FAILURE]:
L1 — fetch HTTP rapido (vedi skill `check-usage-http`)
• OK → continua normalmente
• FAIL → ↓
L2 — TUI worker manuale (vedi skill `check-usage-tui`)
• OK → continua normalmente
• FAIL → ↓
L3 — FATAL: niente dato dal bridge per N cicli consecutivi
L4-SOFT — primo FATAL (fatal_streak == 0 → 1)
python3 /app/shared/skills/soft_pause_team.py
La skill manda 2 messaggi differenziati via jht-tmux-send:
- agli operativi: "[PAUSA] termina task corrente, attendi [RIPRENDI]"
- al CAPITANO: messaggio lungo esplicativo
Imposta fatal_streak = 1. Taci finché non arriva BRIDGE TICK valido o INFO.
L5-HARD — secondo FATAL consecutivo (fatal_streak == 1 → 2)
python3 /app/shared/skills/freeze_team.py
Manda Esc x2 a tutti gli operativi (più aggressivo). Inoltre manda al Capitano l'ordine HARD FREEZE (vedi skill order-formats).
Imposta fatal_streak = 2.
RIPRENDI (recupero dopo FATAL)
Quando arriva un [BRIDGE TICK] valido o [BRIDGE INFO] con fatal_streak >= 1:
- Reset
fatal_streak = 0,freeze_active = False - Calcola subito throttle dal sample
- Manda al Capitano l'ordine RIPRENDI con dati freschi (vedi skill
order-formats) - Il Capitano si occupa di ridistribuire
[RIPRENDI]ai suoi operativi
Tabella riassuntiva FATAL
fatal_streak |
Trigger | Azione |
|---|---|---|
| 0 → 1 | primo L1+L2 ko | soft_pause_team.py + PAUSA TEAM al Capitano |
| 1 → 2 | secondo L1+L2 ko consecutivo | freeze_team.py + HARD FREEZE al Capitano |
| ≥ 1 → 0 | [BRIDGE TICK] valido o [BRIDGE INFO] |
[RIPRENDI] al Capitano |
🔁 RESET SESSIONE
Se in un tick rilevi usage sceso di > 30 punti rispetto al sample precedente, è un reset finestra:
- Azzera tutto lo storico (vedi skill
memory-state) - Manda RESET SESSIONE al Capitano (vedi skill
order-formats) - Tratta il prossimo tick come "primo check" (baseline, no ordine)