"""Isolamento della suite dai FILE OPERATIVI VIVI. ⚠️ PERCHE' ESISTE (2026-08-25, difetto trovato addosso). Lanciando `uv run pytest` la suite ha scritto **$5.000 dentro `data/live/equity_seen.json`**, il watermark dell'equity reale del conto. Al primo giro successivo del book (09:47 UTC) l'esecutore ha confrontato l'equity vera contro quel valore e ha mandato un allarme Telegram: 💰 USCITA DI FONDI: $5,000.00 -> $667.68 (-86.6%) **Falso, e generato da un test.** Il colpevole e' `test_book_live.py::test_la_formula_del_report_ha_potenza_anche_a_libro_flat`: prende solo `monkeypatch` (niente `tmp_path`), sostituisce `shadow_report` con uno che dichiara `real_equity=5000.0` e poi chiama `book.book_report()` — che come effetto collaterale scrive il watermark. L'helper `_write_cfg` esisteva gia' proprio per questo (difetto gemello del 2026-07-26), ma quel test, aggiunto il 21/08, non lo usa. **NON e' un fastidio cosmetico.** Il watermark alimenta il cap di fallback: cap_fallback = min(cap_fisso_di_config, watermark * frac) Con `watermark = $5.000` il cap diventa `min($3.000, $2.500) = $2.500` per asset invece di `$334`: su un conto da $668 sono fino a **$5.000 di nozionale lordo, ~7,5x di leva**. Ed e' raggiungibile: il ramo `eq_fallback` di `book_execute` **allerta e NON blocca** per scelta dichiarata. Cioe' lanciare la suite di test poteva **armare esattamente il pericolo che il watermark esiste per impedire** (vedi `src/live/book.py`, nota del 2026-07-26 sul cap fisso e la leva 3,35x). **LA RIPARAZIONE E' STRUTTURALE, NON PER-TEST.** Chiedere a ogni autore di ricordarsi il monkeypatch e' la stessa scommessa che ha gia' perso due volte (26/07 e 21/08). Qui il reindirizzamento e' **autouse**: vale per ogni test, anche per quelli che verranno scritti domani da chi non ha letto questo file. Un test che vuole davvero pilotare il watermark continua a funzionare — il suo monkeypatch esplicito vince su questo, che gira prima. """ import sys from pathlib import Path import pytest PROJECT_ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(PROJECT_ROOT)) @pytest.fixture(autouse=True) def _isola_file_operativi_vivi(tmp_path, monkeypatch): """Ogni test scrive il watermark in una cartella temporanea, mai in `data/live/`. Il valore iniziale NON viene precaricato: un test che si aspetta un watermark deve dichiararlo, e la prima lettura in assoluto non produce allarmi per costruzione (`write_equity_watermark` ritorna None quando non c'e' un "prima"). """ import src.live.book as book monkeypatch.setattr(book, "EQUITY_WATERMARK", tmp_path / "equity_seen.json") yield