844a9d0e22
close_amount ora: (1) tenta il market reduce-only (sicurezza storica: un bug di stato filla 0 invece di aprire posizioni); (2) il residuo cappato/respinto dal netting di conto (worker in direzioni opposte sullo stesso strumento) viene rieseguito in MARKET PURO con label '|net' — muove il conto esattamente del delta del libro = netta contro le quote opposte. Niente piu' gambe pairs orfane ne' close cappati per costruzione (close_pair passa da close_amount). - _merge_close_fills: il chiamante riceve UN Fill (prezzo medio pesato sui fill, fee sommate, filled_amount totale, verified se copre il richiesto, notes 'netting' quando il fallback scatta) - worker single-leg + pairs: evento NET_CLOSE (log jsonl + Telegram) a ogni fallback — osservabilita' della frequenza dei conflitti di netting - sicurezza persa sul residuo coperta dal reconciler orario (ACCOUNT_DRIFT); orphan_legs/REAL_CLOSE_PARTIAL restano come ultima difesa - 4 test nuovi (full r-o senza fallback, cappato, respinto, doppio fail) -> 110 passed Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>