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
|
invariante "il conto cambia solo per nostri ordini" è affidabile. Il reconciler
|
||||||
orario è l'unico rilevatore; valutare cadenza più fitta in presenza di
|
orario è l'unico rilevatore; valutare cadenza più fitta in presenza di
|
||||||
posizioni reali aperte.
|
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