docs(safety): disarm via coda manual_actions, gap storici audit, trigger _safe
Aggiornamenti post-incidente 31/05 (kill switch armato 6 giorni da un
singolo McpTimeoutError transitorio) e post-ripristino 05/06:
- 07: tabella trigger — documentato orchestrator._safe (qualsiasi
eccezione di tick → arm CRITICAL al primo errore) e la tolleranza
al lag benigno dell'anchor (647e3e5)
- 07: sezione Disarm — percorso raccomandato via coda manual_actions
a engine acceso; CLI solo a engine fermo (race CLI<->engine = gap
permanente nella hash chain)
- 07: nuova sezione "Limiti noti" — vincolo single-writer e i 7 gap
storici benigni del log di produzione (01/05 e 29/05); audit verify
full-chain fallisce alla riga 11 by design
- 06: nota in Flusso 5 — la tolleranza "3 fallimenti" vale solo per i
probe health, _safe arma al primo errore su ogni altro tick
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -156,6 +156,14 @@ Trigger: ogni 5 minuti.
|
||||
Il dead-man (`scripts/dead_man.sh`) sorveglia che `HEALTH_OK` venga
|
||||
scritto: silenzio > 15 min → kill switch via SQLite e alert.
|
||||
|
||||
> **Nota — la tolleranza "3 fallimenti" vale solo per i probe del
|
||||
> health check.** Tutti i tick schedulati (entry, monitor, snapshot,
|
||||
> …) girano dentro `orchestrator._safe`, che escala **qualsiasi**
|
||||
> eccezione non gestita a `alert_manager.critical` → kill switch
|
||||
> armato al **primo** errore, anche transitorio. È il percorso che ha
|
||||
> fermato il bot il 31/05/2026 (singolo `McpTimeoutError` nel tick
|
||||
> entry). Vedi la tabella trigger in `07-risk-controls.md`.
|
||||
|
||||
## Flusso 5b — Manual actions consumer
|
||||
|
||||
Trigger: cron `*/1 * * * *` (job APScheduler `manual_actions`).
|
||||
|
||||
Reference in New Issue
Block a user