From de83909db9f467d03d100a1f3950b7fd5eae6c88 Mon Sep 17 00:00:00 2001 From: Adriano Dal Pastro Date: Wed, 2 Sep 2026 15:49:40 +0000 Subject: [PATCH] un flag sconosciuto non e' l'azione di default: guardia su 18 script, indice USDE orario, pulizia MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MISURATO oggi durante la revisione: `trades_db.py --help` non stampava l'uso, cadeva in sync() e riscriveva meta.ultimo_sync. Nessuno dei 18 script di scripts/live/ usava argparse: un flag sbagliato era il ramo else. Su journal.py avrebbe scritto pagina e riga di DB, su analista.py avrebbe speso una chiamata al modello e mandato un Telegram. - src/live/cli.valida: prima istruzione di ogni __main__, prima di connect()/sync/rete. --help -> 0 con l'uso; flag ignoto, valore mancante o posizionale -> 2 con l'elenco dei previsti (P4). NIENTE argparse: cambierebbe messaggi, codici d'uscita e --help di script che il cron gia' chiama. - 18 script cablati (i 3 che scrivono + 14 + cc01), flag invariati. - tests/test_cli_flag.py (30): elenco DERIVATO dalla cartella (P1), valida come prima istruzione, uso che documenta i flag, e i flag che il CRON usa davvero restano accettati (P15/P16); end-to-end su --help e flag ignoto con trades.db non toccato (M15). Verificato a mano: monitor_health --quiet, trades_db --sync --quiet, book_execute dry-run. Debito §5.15, primo passo: balance_watch (orario) registra `usde_usdc` a ogni campione — None con la ragione se illeggibile, mai 1,0. Il cablaggio nel bound quando la serie ha storia. Pulizia dalla revisione: tests/helpers.carica_script al posto della 15a copia del loader importlib (5 file del libro live); il fill di prova via upsert_fills invece di un INSERT che lasciava verified NULL; asserzioni non ancorate al padding; movimenti_capitale accetta le righe gia' lette (una SELECT invece di due ai due lati di una scrittura del cron). Test 910 verdi (+52). Diario 2026-09-02c. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01XDJsH3iDSaBns3ccpPBwiu --- CLAUDE.md | 24 +++- docs/diary/2026-09-02c-flag-e-pulizia.md | 77 +++++++++++ docs/memory/40-produzione-e-deploy.md | 16 +++ scripts/live/analista.py | 14 ++ scripts/live/balance_watch.py | 11 ++ scripts/live/book_execute.py | 9 ++ scripts/live/cc01_regime_watch.py | 8 ++ scripts/live/edge_watch.py | 10 ++ scripts/live/fee_watch.py | 10 ++ scripts/live/journal.py | 12 ++ scripts/live/live_execute.py | 9 ++ scripts/live/live_trend.py | 10 ++ scripts/live/microtest.py | 9 ++ scripts/live/monitor_health.py | 10 ++ scripts/live/paper_combo.py | 8 ++ scripts/live/paper_portfolio.py | 10 ++ scripts/live/paper_regen.py | 10 ++ scripts/live/scale_watch.py | 10 ++ scripts/live/telegram_daily.py | 9 ++ scripts/live/trades_db.py | 10 +- scripts/live/usde_watch.py | 10 ++ scripts/live/venue_watch.py | 10 ++ src/live/cli.py | 66 +++++++++ src/live/journal.py | 11 +- tests/helpers.py | 34 +++++ tests/test_book_live.py | 24 ++-- tests/test_book_resilienza_venue.py | 7 +- tests/test_book_staleness_gate.py | 14 +- tests/test_cli_flag.py | 168 +++++++++++++++++++++++ tests/test_journal.py | 21 +++ tests/test_trades_report.py | 35 ++--- 31 files changed, 627 insertions(+), 59 deletions(-) create mode 100644 docs/diary/2026-09-02c-flag-e-pulizia.md create mode 100644 src/live/cli.py create mode 100644 tests/helpers.py create mode 100644 tests/test_cli_flag.py diff --git a/CLAUDE.md b/CLAUDE.md index b3f4a2d..bd32ec3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -372,9 +372,24 @@ d'ancora in modo diverso (nella differenza si cancella in parte, nel livello per −1,5% (indice 0,95) resta sotto soglia e nel P&L; una rottura piena (−31%) supera 2× un mercato "fermo" e diventerebbe un **«movimento» scorporato come prelievo**, nel giornale e nel report — l'invenzione silenziosa che P12 vieta. Il bound corretto somma `quota_usde × |Δ indice usde_usdc|`, - ma l'indice e' registrato **una volta al giorno** (`usde_watch`, 12:35Z): serve una serie oraria - (`balance_watch` la potrebbe portare) prima di chiuderlo. Intanto: chi legge un «movimento» - negativo senza bonifico in uscita **lo verifichi contro `usde_watch.jsonl`** prima di crederci. + ma l'indice era registrato **una volta al giorno** (`usde_watch`, 12:35Z). ◐ **Primo passo fatto + il 02/09:** `balance_watch` (orario, sola lettura) registra ora `usde_usdc` a ogni campione — + None con la ragione se l'indice non e' leggibile, mai 1,0. **Manca il cablaggio nel bound**, che + si fa quando la serie ha storia. Intanto: chi legge un «movimento» negativo senza bonifico in + uscita **lo verifichi contro `balance_watch.jsonl`** prima di crederci. + +16. ✅ **RIPARATO (2026-09-02).** Nessuno dei **18** script di `scripts/live/` usava argparse: un + flag sconosciuto non era un errore, era **il ramo `else`**. Costo misurato lo stesso giorno + durante una revisione: `trades_db.py --help` non stampava l'uso, cadeva in `sync()` e riscriveva + `meta.ultimo_sync`; sugli altri due sarebbe stato peggio — `journal.py --help` avrebbe scritto + pagina e riga di DB, `analista.py --help` avrebbe speso una chiamata al modello e mandato un + Telegram. Ora `src/live/cli.valida` e' la **prima istruzione** di ogni `__main__`: `--help` + stampa l'uso ed esce **0**, un flag ignoto esce **2** con l'elenco di quelli previsti (P4). + Niente argparse: cambierebbe messaggi, codici d'uscita e `--help` di script che il cron gia' + chiama — qui si lascia intatto cio' che gira. **`tests/test_cli_flag.py` (30)**: l'elenco degli + script si **deriva dalla cartella** (uno nuovo senza guardia fa fallire il test), verifica che + `valida` sia la prima istruzione, che l'uso documenti i flag accettati, e che **i flag che il + cron usa davvero restino accettati** (P15/P16). Diario `2026-09-02c-flag-e-pulizia.md`. --- @@ -589,10 +604,11 @@ uv run python scripts/analysis/certify_feed.py [--local] # certifica i f uv run python scripts/portfolio/run_portfolio.py # report del portafoglio (ricerca) uv run python scripts/live/paper_portfolio.py # avanza il paper (forward-only) uv run python scripts/live/trades_db.py --report # stato libro di bordo + P&L (TWR, non e1/e0) +uv run python scripts/live/