Skip to content

fix: readiness legge columns/rules dal run record, inspect mostra verdict - #442

Merged
Gabrymi93 merged 1 commit into
mainfrom
fix/readiness-run-record
Jul 31, 2026
Merged

fix: readiness legge columns/rules dal run record, inspect mostra verdict#442
Gabrymi93 merged 1 commit into
mainfrom
fix/readiness-run-record

Conversation

@Gabrymi93

Copy link
Copy Markdown
Member

Sintesi

Fix del contratto rotto tra summary(), review_readiness() e il run record: 2 check di readiness (clean_columns_naming, validation_rules_coverage) erano sempre null perché la validazione buttava via columns/rules. Inoltre toolkit inspect (default) ora mostra il verdict readiness — il comando unico fatti + giudizio.

Cosa cambia

  • Bug fix
  • Refactor / performance

Impatto su contratti pubblici

  • Run record JSON: validations.{layer}.summary nuovo blocco (stats+columns+rules). stats appiattito mantenuto per backward compat.
  • Nessun altro contratto pubblico modificato

Root cause

La validazione in memoria (PR #436) copiava nel run record solo stats, buttando via columns e rules che la validazione produce. review_readiness li cercava in layers.*.validation, ma summary() non esponeva validation. Risultato: 2 check su 8 sempre null e verdict ready con check mai valutati.

Cosa è stato fatto

File Cosa
core/validation.py build_validation_summary salva blocco summary completo (stats+columns+rules) nel run record
domain/readiness.py summary() espone layers.*.validation; review_readiness legge da summary con fallback legacy
cli/inspect/summary_ops.py inspect default stampa verdict readiness + check (comando unico)
cli/cmd_run.py review_readiness usa cfg.base_dir/dataset.ymlconfig=None in auto-detect rompeva il run finale

Verifica

pytest -x --tb=short -q    # 1235 passano
ruff check .               # OK

# Run nuovo su dipendenti-pubblici 2010
toolkit run --year 2010     # raw→clean→mart ok, readiness needs-review 7/8

toolkit inspect --year 2010
# readiness: ⚠️ needs-review  (7/8 ok, 1 fail)
#   ✅ clean_columns_naming: tutte snake_case
#   🔴 validation_rules_coverage: solo 13% colonne coperte da regole (3/23)

Prima: i 2 check erano ok=null ("colonne clean non disponibili"). Ora valutano davvero.

Checklist PR

  • Perimetro stretto: contratto run record + readiness
  • Bug riprodotto su 3 dataset prima del fix, verificato dopo

Note per chi revisiona

  • I run record vecchi non hanno summary: readiness usa il fallback (check restano null finché non si riesegue). Comportamento atteso.
  • validation_rules_coverage ora è severo: un dataset con poche regole dichiarate passa da ready a needs-review. Verificare che i candidate esistenti siano coerenti.

…dict

Problema: 2 check di review_readiness (clean_columns_naming,
validation_rules_coverage) erano sempre null perché la validazione
buttava via columns/rules e summary() non esponeva validation.

- core/validation.py: build_validation_summary salva il blocco
  summary completo (stats+columns+rules) nel run record
- domain/readiness.py: summary() espone layers.*.validation;
  review_readiness legge da summary con fallback su legacy
- cli/inspect/summary_ops.py: inspect (default) mostra il verdict
  readiness con check — comando unico fatti+giudizio
- cli/cmd_run.py: review_readiness usa cfg.base_dir/dataset.yml
  (config=None in auto-detect rompeva il run finale)

Verificato: dipendenti-pubblici run 2010, readiness needs-review
7/8 (coverage 13% reale, non più null). 1235 test passano.
@Gabrymi93
Gabrymi93 merged commit ad54661 into main Jul 31, 2026
2 checks passed
@Gabrymi93
Gabrymi93 deleted the fix/readiness-run-record branch July 31, 2026 09:20
Gabrymi93 added a commit that referenced this pull request Jul 31, 2026
- fix: readiness legge columns/rules dal run record (#442)
- inspect default mostra verdict readiness con check
- refactor: eliminati 4 duplicazioni CLI, sql_dry_run in core (#441)
- feat: validate rimosso, batch in run --batch (#440)
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.

1 participant