docs(diary): chiusura incidente testnet — flatten + orfani risolti, reconciler OK
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -72,3 +72,37 @@ hourly_report girano da host → già attivi). cerbero-mcp rebuildato (endpoint)
|
||||
invariante "il conto cambia solo per nostri ordini" è affidabile. Il reconciler
|
||||
orario è l'unico rilevatore; valutare cadenza più fitta in presenza di
|
||||
posizioni reali aperte.
|
||||
|
||||
## Addendum (pomeriggio, v1.1.28): orfani single-leg + circuit-breaker venue-lock
|
||||
|
||||
I due punti promossi dall'analisi sviluppi, entrambi figli dell'incidente di oggi:
|
||||
|
||||
1. **Orfani anche per i close single-leg.** `REAL_CLOSE_PARTIAL` ora registra la
|
||||
quota residua in `StrategyWorker.orphan_legs` (stessa semantica dei pairs,
|
||||
persistita in status.json, letta da `books.real_books`) → il reconciler vede
|
||||
il drift come SPIEGATO invece che anomalo (il caso MR07 0.102 ETH delle 09:47
|
||||
restava invisibile ai libri). Inoltre `_close_position` ora persiste lo stato
|
||||
a fine booking (prima solo al save del tick: un crash li' in mezzo perdeva
|
||||
capital e orfano). NB: nessun save a meta' chiusura — con `real_in_position`
|
||||
ancora true l'orfano conterebbe doppio nei libri.
|
||||
2. **Circuit-breaker venue-lock in `ExecutionClient`.** Dopo `lock_trip=3` reject
|
||||
'locked' consecutivi (es. `locked_by_admin` di oggi) le APERTURE sono sospese
|
||||
senza toccare l'API (Fill failed → path REAL_OPEN_FAIL/sim_fallback esistente;
|
||||
per i pairs entrambe le gambe rifiutate localmente → niente leg parziali da
|
||||
unwindare, niente fee sprecate). Le CHIUSURE si tentano SEMPRE (path gia'
|
||||
sicuro: partial/orphan/netting) e un loro reject 'locked' rinfresca il
|
||||
cooldown. Riarmo: dopo `lock_cooldown_s=900` la prossima apertura fa da probe.
|
||||
Alert `VENUE_LOCK` al trip + RIENTRATO al primo ordine accettato.
|
||||
|
||||
Test: `test_single_leg_orphan.py`, `test_venue_lock_breaker.py` (126 passed).
|
||||
|
||||
## Chiusura incidente (13:05): testnet sbloccato, conto riallineato
|
||||
|
||||
Sequenza eseguita a venue sbloccato: stop runner → `reset_flatten` (chiusi i due
|
||||
artefatti del rollback: ETH long 0.141 @1664.25, SOL long 0.7 @66.651, conto FLAT)
|
||||
→ svuotati gli `orphan_legs` di ETH_SOL (le quote orfane non esistono piu' sul
|
||||
conto post-flatten; edit a container fermo, altrimenti il worker li riscrive
|
||||
dalla memoria) → restart. **Reconciler: OK — conto allineato ai libri** (posizioni
|
||||
e resting), runner healthy, log puliti. Il ledger NON e' stato toccato: i booking
|
||||
dell'incidente erano gia' dichiarati (`sim_fallback`/real) e l'equity (€2020.82)
|
||||
resta la verita' contabile del paper.
|
||||
|
||||
Reference in New Issue
Block a user