Skip to content

feat: ledger di feedback (resh feedback) — primo anello del loop di calibrazione#3

Draft
Type666firewall wants to merge 1 commit into
mainfrom
claude/feedback-ledger-7a62fz
Draft

feat: ledger di feedback (resh feedback) — primo anello del loop di calibrazione#3
Type666firewall wants to merge 1 commit into
mainfrom
claude/feedback-ledger-7a62fz

Conversation

@Type666firewall

Copy link
Copy Markdown
Owner

Primo pezzo del loop di calibrazione discusso in sessione: oggi resh scrive la propria storia (SQLite append-only) ma non la rilegge mai. Questa PR aggiunge il canale strutturato per il giudizio dell'utente su un run già persistito — solo cattura, nessuna RF/Δε ancora: quelli restano obiettivi successivi, elencati in fondo.

Cosa aggiunge

persistenza.py — tabella feedback (append-only, coerente col resto del ledger):

  • ambito ∈ {eps, patologia, patologia_mancante, nota}; per patologia, target = indice nella lista patologie_strutturate del run + ancora di verifica.
  • save_feedback / list_feedback / feedback_effettivo / run_summary: validano run/target/verdetto; una correzione è una nuova riga, mai un UPDATE — l'incoerenza dell'utente nel tempo resta nel ledger come dato.
  • export_feedback_dataset: dataset piatto (feature del rilievo + ε + componenti + label) con n_revisioni/contraddetta per riga — anti-overfitting fin dal dato: non tratta l'annotatore come un oracolo coerente.

cli.py — sottocomando feedback:

resh feedback Ψ_..._001                       # interattivo
resh feedback Ψ_..._001 --eps troppo_basso
resh feedback Ψ_..._001 --pat 3 --verdetto falso_positivo
resh feedback Ψ_..._001 --list
resh feedback --pending
resh feedback --export

Il flusso interattivo è cieco per costruzione: mostra tipo e passaggio della patologia, mai la confidenza/fonte di resh, finché l'utente non ha dato il proprio verdetto — altrimenti il feedback sarebbe un'eco del giudizio di resh, non un segnale indipendente.

tests/test_feedback.py — batteria no-ML (save/list/effettivo/append-only/validazioni/export), aggiunta alla CI.

README (IT+EN) — sezione Uso aggiornata; il ledger accumula, la calibrazione resta dichiarata, non promessa.

Verifica fatta

  • Tutte le batterie no-ML della CI verdi (incluse quelle preesistenti — lo schema esteso non le rompe).
  • Giro end-to-end reale in modalità degradata: analisi → feedback --eps/--pat--list--export → CSV ispezionato.
  • Nessun artefatto locale committato (data/, *.db, *.csv già in .gitignore).

Fuori scope (prossimi passi, in ordine)

  1. RF advisory sulle patologie (consuma dataset_feedback.csv)
  2. Δε nel report (divergenza resh ↔ feedback utente)
  3. Feedback su trilemma/inclosura (schema già lo regge)
  4. Loop comportamentale (scheduler/active learning)

🤖 Generated with Claude Code

https://claude.ai/code/session_016MnNuFahrz482cFEqCEnoq


Generated by Claude Code

…alibrazione

Aggiunge un canale strutturato per il giudizio dell'utente su un run già
persistito, append-only come il resto del ledger SQLite: oggi resh scrive
la propria storia ma non la rilegge mai — senza questo, una futura
calibrazione (RF, Δε) non ha dati da cui imparare.

persistenza.py:
- tabella `feedback` (ambito eps/patologia/patologia_mancante/nota,
  target+ancora per il rilievo, annotatore, ts) — append-only: una
  correzione è una nuova riga, mai un UPDATE.
- save_feedback/list_feedback/feedback_effettivo/run_summary: validano
  run/target/verdetto, risolvono "l'ultima vince" per (ambito,target).
- export_feedback_dataset: dataset piatto (feature del rilievo + eps +
  componenti + label) con n_revisioni/contraddetta per non trattare
  l'annotatore come un oracolo coerente — anti-overfitting fin dal dato.

cli.py: sottocomando `feedback` — interattivo con ANNOTAZIONE CIECA (il
giudizio di resh su una patologia si rivela solo DOPO il verdetto
dell'utente, per non contaminare il segnale) + flag non interattivi
(--eps/--pat/--manca), --list, --pending, --export.

tests/test_feedback.py: batteria no-ML (save/list/effettivo/append-only/
validazioni/export), aggiunta alla CI.

README (IT+EN): sezione Uso con i comandi feedback e la premessa che il
ledger accumula per ora, la calibrazione resta un passo dichiarato non
promesso.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016MnNuFahrz482cFEqCEnoq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants