Skip to content

ETLantic 0.23.0

Choose a tag to compare

@github-actions github-actions released this 27 Jul 15:02

[0.23.0] - 2026-07-27

Added

  • Performance benchmark baselines (etlantic.benchmark_baseline/1) and CI gate (scripts/check_benchmarks.py)
  • Public fault injection API (etlantic.testing.faults) with orchestrator/report/store hooks
  • Interchange evidence reconciliation (reconcile_interchange_evidence, planned evidence_refs)
  • Resilience test suites: fault injection, cancellation, timeout, store concurrency, write-mode matrix
  • Real PySpark CI job and Airflow import version matrix (airflow-runtime dependency group)
  • Docs: What's New 0.23, Migration 0.22→0.23, Exit Gate 0.23

Changed

  • Artifacts, schema history, and reliability file providers use SafeIoPolicy consistently
  • Orchestrator terminal paths persist exactly one report; publication/report gap → PMEXEC410
  • Official package versions align at 0.23.0; plugins require etlantic>=0.23.0,<0.24
  • Fault injection requires ETLANTIC_FAULT_INJECTION to arm (in-process specs alone no longer fire)
  • DataFusion experimental stub advertises no graduated dataframe/Arrow/lazy capabilities

Fixed

  • Cancel/timeout reports finalize incomplete steps (no leftover running/pending)
  • CLEANUP fault no longer skips real cleanup or the terminal report (PMEXEC412)
  • FileReportStore writes durably before updating the in-memory index (no false SUCCEEDED)
  • Attempt cleanup failures after a successful step body no longer trigger retries (PMEXEC414)
  • Resource scope cleanup attempts every entry before aggregating failures
  • PMEXEC410 recovery marks report_persisted when the failed report write succeeds
  • step_failed callback faults are isolated (PMEXEC413)
  • Unsupported CancellationPolicy knobs fail closed (PMEXEC411)
  • etlantic plugin compatibility discovers packaged manifests and honors allowlist pins
  • Compatibility reports reject entry protocols that do not match core (even under *)
  • Trust failures with --format sarif emit SARIF instead of JSON
  • Step report metadata is redacted; profile migrate infers production security_mode
  • SafeIoPolicy.from_dict rejects invalid symlink/overwrite policy enums
  • Builtin stub registry versions track core __version__