feat: supporto ai config compose-only per run mart#63
Conversation
4776809 to
3530e2b
Compare
matteocavo
left a comment
There was a problem hiding this comment.
Non approverei ancora per 1 finding High.
run_mart() e sql_dry_run oggi non hanno lo stesso contratto sui config mart-only.
Nel branch della PR, toolkit/mart/run.py continua a creare clean_input se trova parquet sotto data/clean/..., anche quando clean.sql non è configurato.
Invece toolkit/cli/sql_dry_run.py crea clean_input solo se cfg.clean.get("sql") è presente.
Questo apre una divergenza concreta tra dry-run e runtime:
- un SQL compose-only che per errore referenzia
clean_inputpuò fallire correttamente in--dry-run - ma poi passare a runtime se sul disco esiste una
data/clean/...stale - nel caso peggiore, il mart legge dati vecchi fuori contratto e produce output apparentemente validi
Per me il fix giusto è semplice:
quando clean.sql non è configurato, run_mart() deve ignorare del tutto data/clean/... e non creare mai clean_input.
Non ho trovato altri finding bloccanti oltre a questo.
Se si chiude questo punto, la PR mi sembra molto vicina ad essere approvabile.
|
Ho pushato un fix mirato sul branch per chiudere la divergenza tra dry-run e runtime sui config mart-only / compose-only. Cosa cambia:
Verifica locale:
|
Sintesi
toolkit run mart --config ...di eseguire config senza clean layer quando il SQL del mart è autosufficienterun allerun cleanfuori contratto per i configmart-only/compose-only, con errore leggibileDettagli
run_mart()salta il precheck sulla clean dir quando non è configuratoclean.sqlclean_inputmart.validateTest
py -m pytest tests/test_run_dry_run.py tests/test_artifacts_policy.py tests/test_project_example_e2e.py tests/test_run_validation_gate.py -qCloses #45