Skip to content

v0.16.0 — stronger safety checks and explicit CI errors

Choose a tag to compare

@github-actions github-actions released this 09 Sep 01:11
· 45 commits to main since this release
805a3fd

dbt-plan v0.16.0 — stronger safety checks and explicit CI errors

This release expands analysis and changes the CLI error contract. Read the upgrade
notes before updating CI consumers from 0.15.x.

Breaking changes

  • Execution failures exit 3. Completed destructive findings still exit 1 and
    review findings still use warning_exit_code (default 2). Invalid arguments,
    unreadable configuration, missing required inputs, compile failures and recovery
    failures cannot be accepted as completed warning reports.
  • Exit code 3 is reserved. Change any warning_exit_code: 3 configuration
    before upgrading.
  • Invalid selections fail. Unknown, empty or unsupported --select terms exit
    3, including a mix of valid and invalid names. Select versioned models with an
    explicit version or compiled file name.

See exit codes and migration
and selection semantics.

Highlights

  • Check source and compiled-artifact evidence, including data-test SQL left behind
    by partial compilation. Invalid or incomplete inputs require review.
  • Detect snapshot and Python-model changes from manifests, relation/configuration
    changes without SQL edits, and casts added or removed on one side.
  • Resolve EXCLUDE/EXCEPT against known columns and preserve readable columns when
    another expression is unknown. Quoted case-sensitive identities remain explicit
    uncertainty rather than being silently folded into a match.
  • Follow column losses through ephemeral models; check downstream contracts,
    generic-test predicates and overrides, versioned unit-test inputs, and exposure
    owners. SQL snapshot checks cover complete files, including multiple blocks.
  • Show the analysis dialect and baseline revision/time. Use agent-setup --file
    to write guidance to a chosen instruction file.
  • Preserve Git worktree/index recovery during run failures, and make generated
    CI install dependencies consistently for uv and requirements.txt projects.

Upgrade notes

  1. Handle exit code 3 as an execution failure and review custom warning codes.
  2. Check existing selection expressions, especially versioned models.
  3. Update package and Action references together. Pin version: '0.16.0' in the
    Action if reproducibility is required; its empty version input installs latest.
  4. Regenerate generated workflows to adopt the installation and gating fixes,
    then review project-specific settings. New generated CI defaults to blocking
    destructive findings while allowing completed warnings. Execution errors
    always fail, including when the Action uses fail-on: never.
  5. Recompile inputs and review new warnings. Some previously successful checks
    now refuse to claim safety. Existing workflow files are not automatically
    rewritten by a package upgrade.
pip install --upgrade dbt-plan==0.16.0

The Action preserves adapter inference when dialect is empty. JSON reports gain
an analysis object, and text reports show dialect/baseline metadata; consumers
that parse terminal text or reject additional JSON fields should check their parser.

Python DataFrame schemas, live warehouse introspection and full quote-aware column
lineage remain outside this release's analysis. MCP run was deliberately not
added because checkout/stash/compile can conflict with concurrent agent edits.

Verification

Required CI covers Python 3.10–3.14 on Linux and Windows, the minimum sqlglot
version, built packages, real dbt/DuckDB execution, MCP and the composite Action.
The execution tests create incremental targets before testing the second run;
optional integrations and built-package checks must not silently skip in their
required jobs. Snowflake/Postgres behavior was not validated against live warehouses.

Full changelog
· Audit resolutions and review follow-ups

Contributors

Thank you @1cbyc and @insisong for fixing verbose configuration-file loading and adding parsing, precedence and JSON-output regression tests in #229. Your contribution shipped in v0.16.0.