Files
PythagorasGoal/docs/diary/2026-09-02b-debito-7-cadenza-docstring.md
T
Adriano Dal Pastro 835e0c8666 revisione 02/09: il rotolante si CONTROLLA ogni ora (non "si ri-ancora"), TWR con limiti dichiarati e tre stati
Quattro segnalazioni della revisione sui commit di oggi, tutte verificate e riparate.

1. book_execute.py (+ CLAUDE.md §5.7, memoria 40): «il disaster-SL rotolante si ri-ancora ogni
   ora» era falso — ensure_disaster_sl lascia il bracket finche' lo stop e' entro il 5% e la
   taglia entro il 10%; il giro orario CONTROLLA, ri-ancora oltre la tolleranza (mark
   +5,263%/-4,762%). Lo stop siede fra -26,3% e -33,3% dal mark corrente.
2. journal.rendimento_twr: limite dichiarato (D5) — l'intervallo che contiene un movimento
   certo esce intero dal rendimento, il suo P&L di mercato va in `certi`; errore massimo meta'
   del movimento per costruzione (25/08: ~$0,5). Non si stima (P12). Segmenti a lunghezza zero
   non prodotti; nessun tempo a mercato -> 0,0 dichiarato numero.
3. base di equity zero: `twr` E `trading` None con motivo (il salto 0->X e' invisibile al
   classificatore, `trading` valeva l'intero conto); il report stampa n/d.
4. test_book_cadenza: la guardia estrae ogni prescrizione «ogni/every N unita'» e pretende 60
   minuti, con controllo positivo (M15); limite P13 dichiarato.

Test +5 (847 verdi). Diari 02/09 e 02/09b con la sezione "Revisione".

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RziUCB336YPUUyDJ29x4Ke
2026-09-02 15:17:05 +00:00

3.4 KiB
Raw Blame History

2026-09-02 — Debito 7: il docstring diceva 230 minuti, il cron gira ogni ora

Scritto il 2026-09-02 alle 14:45Z. Cadenza misurata dal log (r0823_sl_anchor.py: 1.443 giri in 1.442 ore) e dalla crontab installata, letta dal test.

Il difetto

fonte cosa diceva dal
scripts/live/book_execute.py, docstring «va lanciato ogni ~230 minuti» 20/06
scripts/cron_book.sh, intestazione cadenza ORARIA, 47 * * * * 25/08 (prima :07, sempre orario)
crontab della VPS 47 * * * * 25/08

Era il docstring a sbagliare. E non era una svista innocua: sulla riga 4h (la più vicina ai 230 minuti) BTC raddoppia gli scatti del disaster-SL rotolante (2 contro 1; a 24h ETH arriva a 5, con 2 in 30 giorni). Il rischio era un lettore diligente che "allineasse" il cron al docstring.

La riparazione

  1. Docstring riscritto: CADENZA: ORARIA, la riga di crontab citata, la ragione (giro idempotente → girare più fitto della griglia non costa ordini; latenza ≤1h sugli ingressi/uscite software di SKH01; ri-ancoraggio orario del rotolante) e il divieto esplicito, con la data.
  2. tests/test_book_cadenza.py, 10 test. P1: non ridichiara «60 minuti», deriva le tre fonti e le confronta fra loro:
    • il docstring non contiene più «ogni ~230» e dichiara ORARIA;
    • la riga di crontab citata nel docstring è quella dichiarata in cron_book.sh;
    • la riga dichiarata è oraria (parser a 5 campi, solo casi regolari, rifiuta il resto), sotto i 230 della griglia e lontana dai 240 della riga peggiore, e fuori dal minuto :00;
    • la crontab installata (crontab -l) coincide con la dichiarata. Dove la crontab non è leggibile il test è saltato, non verde (P5). Sulla VPS oggi gira e passa.

Numeri

test nuovi 10, tutti verdi; suite dei moduli che toccano book_execute: 231 verdi
cadenza dichiarata / installata 60 min / 60 min
griglia SKH01 230 min (la riga da non usare)
riga peggiore misurata 240 min (BTC 2 scatti contro 1)

Cosa NON ho fatto

  • Non ho toccato il cron né cron_book.sh: la configurazione che gira era quella giusta.
  • Non ho aggiunto un sorvegliante a runtime sulla cadenza (contare i giri per ora nel log): il giornale già stampa «giri mancanti» ogni giorno, e il test copre la deriva di configurazione.

Revisione del codice (15:20Z) — due cose trovate, tutte riparate

trovato vero? riparazione
il docstring nuovo diceva «il disaster-SL rotolante si ri-ancora ogni ora»: falso. ensure_disaster_sl lascia il bracket com'è finché lo stop voluto è entro il 5% da quello piazzato e la taglia entro il 10%; il giro orario controlla, ri-ancora oltre la tolleranza (mark +5,263% / 4,762%). I «BTC 0 / ETH 1» di r0823 sono misurati con questa isteresi sì, verificato in execution.py:233-235. Propagato anche a CLAUDE.md §5.7 e memoria 40 riscritto in tutti e tre i posti: «controllato ogni ora, ri-ancorato solo oltre la tolleranza; lo stop siede fra 26,3% e 33,3% dal mark corrente». Frase sbagliata su un meccanismo di sicurezza vivo: era la segnalazione più importante
la guardia del test cercava due letterali («ogni ~230»): «ogni quattro ore» sarebbe passato la guardia estrae ogni prescrizione «ogni/every N unità» e pretende 60 minuti; controllo positivo (M15) su cinque frasi. Limite dichiarato (P13): una prosa che prescrive senza «ogni» passa