2.0.0-alpha.2
Released June 18, 2026
Features
- [dbt-fusion] Added --empty support in seed command.
- [dbt-fusion] Homebrew distribution: install the dbt Fusion CLI with
brew install dbtfrom the official tap. - [dbt-fusion] GET /api/v1/models: add catalog field (row_count_stat, bytes_stat, last_modified_stat from warehouse INFORMATION_SCHEMA) and materialized field; dbt build --write-index now queries warehouse catalog stats and writes them to the parquet index
- [dbt-fusion] Detect how dbt was installed (Homebrew, pip, winget, or the standalone installer) and surface the matching upgrade command;
dbt system updatenow refuses to overwrite a binary managed by a package manager unless--forceis passed. - [dbt-fusion] Redshift: use SHOW TABLES FROM SCHEMA for cross-database source freshness when datasharing is enabled
- [dbt-fusion] Emit project-wide catalogs count on the parse-time ResourceCounts telemetry event
- [dbt-fusion] (fabric) supports dbt init
- [dbt-fusion] Interactive dbt login honors the DBT_OAUTH_SCOPES env var to request additional OAuth scopes.
- [dbt-fusion] dbt docs serve reports actual login status in GET /api/v1/distribution
- [dbt-fusion] Add Workload Identity Federation auth for BigQuery via Microsoft Entra
- [internal] Add daily conformance-analysis collection: scheduled GHA collects the previous UTC day and uploads per-day error-lines parquet to S3; new
cargo conformance fetch/pushsync the bucket andcollect --start/--end+log-overlap --days Nenable multi-day analysis - [internal] Add
cargo conformance report: a self-contained static HTML UI for an log-overlap run — templates ranked by impact, the concrete strings filling each drain3<*>wildcard, and drill-down into the original log lines
Fixes
- [dbt-fusion] (fix adapters/databricks) restore token-first dispatch for Databricks OAuth so dbt Studio's U2M flow works correctly.
- [dbt-fusion] equals macro now uses IS NOT DISTINCT FROM clause for comparison
- [dbt-fusion] update try_or_compiler_error to match dbt-core
- [dbt-index] Preserve runtime invocation/run-result timestamps during direct fusion metadata ingest so dbt_rt.invocations.generated_at and dbt_rt.run_results.created_at are populated again
- [dbt-fusion] Fix /api/v1/search returning 500 when dbt_rt.run_results parquet is absent (project never run with --use-index)
- [dbt-fusion] Fix v2-parser path - preserve raw user-provided source identifier (including any embedded quote characters) on source_attr.identifier so dbt-core's source(...).identifier round-trips for packages like fivetran/zendesk that pre-quote reserved-word table names (e.g. Snowflake's GROUP)
- [dbt-fusion] source freshness on_run_end hooks can now access result.node (unique_id, relation_name, etc.) — fixes compatibility with elementary and other packages that read result.node in on_run_end macros
- [dbt-fusion] dbt State auth no longer caches the organization ID; it is always resolved from the live token scope, avoiding unnecessary browser re-authentication when a user's organization access changes between invocations
- [dbt-fusion] Fix v2-parser path - hydrate ColumnInfo.dimension and ColumnInfo.entity from the column when YAML omits required fields, and skip serializing Option::None so dbt-core's mashumaro can deserialize fusion's writable manifest into ColumnDimension/ColumnEntity dict-form variants
- [dbt-fusion] Fix v2-parser path - only blank path and original_file_path on public model nodes imported via publication artifacts; keep paths for public models from locally-resolved (local/git/registry) packages so dbt-core can write per-model compiled SQL instead of crashing with Errno 21 trying to write to an empty path
- [dbt-fusion] Fix v2-parser path - emit hook operation nodes with original_file_path of ./dbt_project.yml (package-internal) and path with .sql extension so dbt-core writes compiled hook artifacts to the same per-package location it does without --use-v2-parser
- [dbt-fusion] Fix Databricks panic when flattening
STRUCTkeys that were not string. - [dbt-core] Fix YAML selector
selector:shorthand being silently ignored inside exclude/union, and fix nestedexcludebeing dropped from the serialized manifest (#15140) - [dbt-fusion] Show a clear warning when dbt_cloud.yml fails to parse instead of a misleading 'no credentials configured' error
- [dbt-fusion] Fix schema routing for test failures when +schema: null is set in dbt_project.yml with store_failures: true
- [dbt-fusion] Read DuckDB catalog column_index as a 32-bit integer instead of a decimal, fixing a type-mismatch error when collecting DuckDB column metadata
- [dbt-fusion] Fix re.findall Capture objects to be sliceable sequences when pattern has 3+ capture groups
- [dbt-fusion] Disable dbt State for unsupported adapters
- [dbt-fusion] Fix manifest deserialization failing on no configs
- [dbt-fusion] Fix manifest deserialization for fields that are not present
- [dbt-fusion] Include Databricks-specific config attributes (auto_liquid_cluster, databricks_tags) in the semantic extras so dbt state comparison detects changes to them
- [dbt-fusion] Search results are now ranked by relevance: exact name matches appear first, followed by prefix matches, then field-priority matches (name, column, tag, fqn, description), with resource type and modeling layer as tiebreakers.
- [dbt-fusion] (fix adapter/databricks) retry on retryable errors
- [dbt-fusion] Capture and surface failures for unit test schema fetch phase
- [dbt-fusion]
Relationnow renders properly when theregionis set onprojectordatabase - [dbt-fusion] Fix
modelstoring none values as undefined - [dbt-fusion] LSP false dbt1089 warning
- [dbt-fusion] Honor model-level
full_refresh: falseconfig on microbatch models underdbt build --full-refresh - [dbt-fusion] Emit M015 (DepsInstallInfo) only on successful package install, not M016
- [dbt-fusion] Allow target variables to be used in dbt_project.yml
- [dbt-fusion] fix seed configs rejecting valid fields
- [dbt-fusion] sidecar: DATEADD on TIMESTAMPTZ no longer fails the DuckDB binder under --compute sidecar
- [dbt-fusion] Fix dbt State reuse for new data tests without cached results
Under the Hood
- [dbt-fusion] Remove "models" path segment in computed fqn for manifest parity with Core
- [dbt-fusion] Manifest parity with core fixes for groups
- [dbt-fusion] Snapshot errors and logs now show phase-accurate paths for artifacts
- [internal] Add
cargo ci homebrew renderandcargo ci homebrew publishsubcommands for rendering and publishing Homebrew formulas. - [internal] Add reusable
publish-homebrew.ymlworkflow that renders the formula and pushes it to a Homebrew tap. Used by the release pipeline and invokable ad-hoc viaworkflow_dispatch. - [dbt-fusion] Improve ClickHouse init: remove database and make password optional
- [dbt-fusion] Extract package resolution behind PackageResolver trait per package kind, with concurrent resolution per BFS level
- [dbt-fusion] Serialize external and its subfields for manifest parity with Core
- [dbt-fusion] Refactor dbt-deps install to a trait-based PackageInstaller running concurrently via futures::join_all; per-variant impls only do install work and populate a shared InstallOutcome, while span lifecycle, telemetry, and error-path partial-progress stamping live in the trait default
- [fusion] Route view-traversal source extraction through TypeOps so the run-cache uses sdf-frontend bind-context in proprietary builds and the SA sqlparser path otherwise
- [dbt-fusion] Execute hooks on dbt State reuse
- [dbt-index] perf(dbt-lineage): --write-lineage overhead reduced from +20s to +2.4s at 5 843 models: bypass build_lineage_environment via direct LineageRow→CLL edge extraction, fix redundant epoch-0 compaction
- [internal] Add a dedicated dbt Core changelog (CHANGELOG-dbtcore.md) and sync it through copybara so dbt-core publishes its own changelog, starting at 2.0.0-alpha.1, separate from the dbt-fusion changelog
- [dbt-fusion] Bump dbt-docs-v2 UI bundle to add dbt State banner (a0c6c196807e9e6f2b9ea4fa953e99c2d1031657)
- [internal] Unify TypeOps source-extraction methods into a single extract_upstreams; absorb the standalone sdf_frontend dep_analysis::extract_sources_from_str into the same canonical path
- [dbt-fusion] Emit catalog_type on the RunModel telemetry event, resolved from the model's catalog_name via the active write integration in catalogs.yml
- [dbt-fusion] Re-enable and re-wire the dbt-repl integration test suite, disabled during the dbt-main modularization
- [dbt-fusion] Use lag_tolerance in freshness reuse messages
- [internal] Centralize server version lookup:
DistInfoProvidergains a defaultserver_version()method soenv!("CARGO_PKG_VERSION")is defined in one place. - [dbt-fusion] Remove quoting field from SourceConfig; adapter-specific quoting defaults are now applied directly during source resolution instead of being propagated through the config struct
- [internal] conformance: add
resolve-reprosubcommand (run_id → S3 artifact path via Datadog) and broadenfetch-reproto resolve the Teleport app + bucket per cell (global prod/prod-emea/prod-au, us-multicell, jp1), with --app/--aws-role/--bucket overrides for cells whose account isn't auto-resolved (eu/us2/us3/onprem) - [dbt-fusion] Bump bigquery driver for WIF auth support