diff --git a/CLAUDE.md b/CLAUDE.md index 1ffda6c..ab6ab32 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1669,7 +1669,9 @@ df = load_data("BTC", "1h") # OK. load_data("SOL", ...) -> FileNotFoundError ( Verificato direttamente su cerbero MCP. Diario `2026-06-20-cerbero-backfill-fix.md`. - **CATENA OPZIONI REALE — RACCOLTA PROPRIA dal 2026-07-30 (cerbero-bite ASSORBITO e dismesso).** `/opt/docker/cerbero-bite` (progetto separato) accumulava dal 2026-06-09 la catena Deribit - **mainnet** BTC+ETH; **viene eliminato, e la raccolta è passata dentro PythagorasGoal**: + **mainnet** BTC+ETH; **è stato ELIMINATO il 2026-07-30** (container, volume, immagine e cartella + rimossi, 12 GB liberati; codice conservato su Gitea `Adriano/Cerbero-Bite`, ultimo commit di + dismissione) **e la raccolta è passata dentro PythagorasGoal**: - **raccolta:** `scripts/live/collect_chain.py`, cron **`25 * * * *`** (`scripts/cron_chain.sh`) → `data/raw/cb_chain/YYYY-MM-DD.parquet`. Entrambe le ali, scadenze ≤95g, OI≥100, ~570 strumenti a giro, ~3 min. **Minuto :25 scelto, non arbitrario:** :00 era la raffica di bite, :07 è @@ -1713,6 +1715,14 @@ df = load_data("BTC", "1h") # OK. load_data("SOL", ...) -> FileNotFoundError ( `venue_watch`/`edge_watch`/`monitor_health`/`fee_watch`), `dvol_history` (`fetch_dvol.py` ha storia **più lunga**: 2020+ contro 2026-05), `decisions`/`positions` (59 righe a capitale $52, 0 posizioni). Test `tests/test_collect_chain.py` (11) + `tests/test_cb_chain_vrp.py` (13). + ⚠️ **Prima di cancellare la sorgente** (verifiche nel diario `2026-07-30-assorbimento-cerbero-bite.md`): + snapshot **completo** e non solo integro (4 tabelle su 4 con conteggi identici al volume vivo e ai + parquet); i 10,6 GB di backup interni **non** contenevano dati unici (stessa riga più vecchia in + tutti gli snapshot + conteggi monotoni ⇒ nessuna potatura); zero dipendenze a runtime. + ⚠️ **`cerbero-mcp` è un progetto DIVERSO e serve a PythagorasGoal** (Hyperliquid, percorso del + conto) — resta acceso; la rete `traefik` che condividevano è `external:` nel compose di bite, + quindi `down -v` non la tocca. **REGOLA: prima di cancellare una sorgente si verifica che la copia + sia COMPLETA, non che esista** — un hash prova che il file non è corrotto, non che contenga tutto. **Perché si MEMORIZZA invece di interrogarla:** una catena opzioni non è ricostruibile a posteriori — Deribit non serve book storici, un'ora non raccolta è persa per sempre, e non c'è un secondo venue da cui recuperarla. diff --git a/docs/diary/2026-07-30-assorbimento-cerbero-bite.md b/docs/diary/2026-07-30-assorbimento-cerbero-bite.md index 7eeeb21..c9a1e2a 100644 --- a/docs/diary/2026-07-30-assorbimento-cerbero-bite.md +++ b/docs/diary/2026-07-30-assorbimento-cerbero-bite.md @@ -75,11 +75,38 @@ cadono e perché). **REGOLA: `dropna` dopo un parsing è un rilevatore di difett pulizia — se toglie righe deve dirlo.** Un import silenzioso non è un import pulito, è un import che non sai se ha funzionato. -## Cosa resta da fare fuori dal repo +## Eliminazione (stessa sera, 21:20 UTC) -Il container di bite è **ancora acceso** mentre scrivo: la sovrapposizione fra le due raccolte è -voluta (nessun buco alla consegna). Quando verrà spento, l'unica cosa che si ferma è la raffica -al minuto `:00`. +Container rimossi, volume `cerbero-bite_bite-data` rimosso, immagine `cerbero-bite:dev` rimossa, +`/opt/docker/cerbero-bite` cancellata. **12 GB liberati** (73G → 61G di disco usato). + +Prima di cancellare, quattro verifiche — nessuna delle quali era "il backup esiste": + +1. **Lo snapshot è *completo*, non solo integro.** SHA256 `OK` su entrambi i file, ma soprattutto + conteggi confrontati tabella per tabella fra il volume vivo e lo snapshot: `option_chain_snapshots` + 1.232.212, `market_snapshots` 17.406, `decisions` 59, `positions` 0 — **4 su 4 identici**, e + identici anche ai parquet importati. *Un hash prova che il file non è corrotto, non che contenga + tutto.* +2. **I 10,6 GB di backup interni al volume non contenevano dati unici.** 32 snapshot sqlite storici: + la domanda giusta non era la loro dimensione ma *se bite potasse lo storico*. Tutti e tre i + campioni controllati (09/06, 01/07, finale) hanno **la stessa riga più vecchia** + (`2026-05-01T20:53:49.294928`) e conteggi monotoni crescenti (218.500 → 665.949 → 946.990 → + 1.232.212) → nessuna potatura, sottoinsiemi stretti del DB finale. +3. **Nessuna dipendenza a runtime.** Né cron, né systemd, né route traefik, né altri progetti: i + soli riferimenti rimasti sono documentazione (questo diario, CLAUDE.md, un commento in + `backup.sh` e uno in `health-watch.py`) — cioè memoria storica, che è corretto lasciare. +4. ⚠️ **`cerbero-mcp` è un progetto DIVERSO e serve a PythagorasGoal** (universo Hyperliquid, e il + percorso del conto): progetto compose separato, e la rete `traefik` che condividono è dichiarata + `external:` nel compose di bite → `down -v` non la tocca. Verificato dopo: `Up 41 hours + (healthy)`. *Due servizi con lo stesso prefisso nel nome sono un incidente che aspetta.* + +Il codice non è stato cancellato: era già su Gitea (`Adriano/Cerbero-Bite`), e l'unica modifica +locale pendente — il ripiego del collector da `:00` a `:20`, superato dal successore — è stata +committata e pushata come commit di dismissione. **Il dato era l'unica parte irreversibile.** + +**REGOLA: prima di cancellare una sorgente si verifica che la copia sia completa, non che +esista** — e "quanto è grande" non è la domanda da fare a un backup, "cosa contiene che l'originale +non ha più" sì. ## File