dbt-labs/dbt-core
65.0
Adequate · 29 September 2026
520.2k
lines of production code
Rust
primary language
2
measurements over time
What this system is
This system is a next-generation, Rust-based implementation of the dbt data transformation tool, designed to replace the legacy Python core with a modular, high-performance architecture. It provides a unified adapter framework that supports execution across diverse data warehouses—including Snowflake, BigQuery, Databricks, and DuckDB—while introducing a new static-site documentation server powered by DuckDB-WASM. The system also encompasses a comprehensive CLI for project management, package dependency resolution, and interactive authentication, alongside structured telemetry and a modern React-based user interface for data lineage and asset exploration.
Features
Add Exasol adapter support to dbt-loader
This change introduces the dbt-exasol adapter macros into the dbt-loader crate, enabling users to run dbt models against Exasol databases. The included macros cover core adapter operations (schema and table creation, renaming, dropping), materialization strategies (incremental microbatch, merge, snapshot), and utility functions (hashing, date arithmetic, type casting) tailored to Exasol's SQL dialect and system catalog views.
_crates/dbt-loader/src/dbt\_macro\assets/dbt-exasol · high confidence
Add Postgres adapter macros for dbt integration
This change introduces the Postgres-specific macro library (dbt-postgres) into the dbt-loader, enabling the system to load, parse, and execute dbt models against PostgreSQL databases. The new files provide the core adapter logic required for data transformation, including table and view creation/replacement, materialized view management (create, drop, refresh, rename), incremental strategies, snapshot merging, and catalog generation. It also includes utility macros for date/time operations (datediff, dateadd, listagg) and relation handling, allowing users to run dbt projects targeting Postgres through this loader.
_crates/dbt-loader/src/dbt\_macro\assets/dbt-postgres · high confidence
Add Rust client for dbt Cloud API v3
Introduces a new Rust API client for the dbt Cloud API v3, generated from the OpenAPI specification. This client provides programmatic access to account administration endpoints, including listing and retrieving projects, managing credentials, handling account connections, and listing users. It supports authentication via Personal Access Tokens (PAT) and includes models and methods for interacting with the v3 API surface.
crates/dbt-cloud-api · high confidence
Add Salesforce metadata adapter stub
A new Salesforce metadata adapter has been added to the dbt-adapter crate. This implementation provides the \SalesforceMetadataAdapter\ struct which implements the \MetadataAdapter\ trait, registering itself as the \Salesforce\ adapter type. Currently, the adapter serves as a stub: most metadata retrieval methods (such as building schemas from stats or listing relations) return empty results or are marked as unimplemented, and progress reporting for relations is explicitly disabled. This lays the groundwork for future Salesforce-specific metadata integration.
crates/dbt-adapter/src/metadata/salesforce · high confidence
Add dbt-clickhouse adapter macro package
This change embeds the dbt-clickhouse macro package into the dbt-loader, enabling users to run dbt models against ClickHouse databases. The included macros provide full adapter support, including materializations for standard tables, distributed tables, materialized views (with external target and standard modes), dictionaries, and incremental models (with schema evolution and multiple strategies). It also adds support for seeds, catalog generation, and S3 data sources, along with cluster-aware operations and connection settings.
_crates/dbt-loader/src/dbt\_macro\assets/dbt-clickhouse · high confidence
Add support for Microsoft Fabric as a dbt adapter
Users can now run dbt models against Microsoft Fabric data warehouses. This change introduces a new adapter implementation in the \dbt-fabric\ package, providing materializations for tables, views, incremental models, clones, seeds, and snapshots, along with the necessary SQL macros for schema management, cataloging, grants, and column operations specific to the Fabric environment.
_crates/dbt-loader/src/dbt\_macro\assets/dbt-fabric · high confidence
Added Jinja built-in type definitions for adapter functions
The \minijinja-typecheck-builtins\ crate now includes a new asset file (\builtins.sdf.yml\) and corresponding Rust code to define type signatures for Jinja built-ins, specifically focusing on the \adapter\ object. This adds static type checking support for adapter methods such as \get\_relation\, \dispatch\, \execute\, and \quote\, allowing the type checker to validate arguments and return types for these database interaction functions.
crates/minijinja-typecheck-builtins · high confidence
Added SQL keyword lists for BigQuery, Databricks, DuckDB, Redshift, Snowflake, and Trino
The dbt-sql-keywords crate now includes generated keyword definitions for BigQuery, BigQueryUnTyped, Databricks, DuckDB, Redshift, Snowflake, and Trino. These files define reserved, strict non-reserved, and non-reserved keywords for each dialect, enabling the parser and linter to correctly identify and handle SQL syntax specific to these databases.
crates/dbt-sql-keywords/src/generated · high confidence
Added Windows-specific file security primitives for owner-only access
The \dbt-file-security\ crate now includes a Windows implementation that provides functions to create files and directories with protected, owner-only discretionary access control lists (DACLs). This adds \open\_owner\_only\, \owner\_only\_tempfile\_in\, and \ensure\_owner\_only\_dir\ to the public API, ensuring that sensitive files created on Windows are inaccessible to other users, thereby enhancing security for secret storage on this platform.
crates/dbt-file-security · high confidence
Added code-signing and intermediate certificates
The repository now includes the public code-signing certificate for dbt Labs, Inc. (issued by DigiCert) and the corresponding DigiCert Trusted G4 Code Signing RSA SHA384 2021 CA1 intermediate certificate. These additions support the verification of signed artifacts or builds associated with the dbt Labs product.
certificates · high confidence
Append-only parquet metadata storage for catalog, lineage, and compilation data
The \dbt-metadata-parquet\ crate now persists dbt metadata as epoch-appended Parquet files under \target/metadata\, replacing previous storage mechanisms. This change introduces structured, versioned storage for catalog column types and comments, warehouse catalog statistics, column-level lineage edges, compile-time column types, compiled node states (including SQL and grain metadata), and invocation records. Each module implements an append-only or latest-wins strategy with automatic compaction to manage file counts and disk usage, providing a durable, queryable history of metadata changes across dbt runs.
crates/dbt-metadata-parquet · high confidence
BigQuery query reservation configuration support
Users can now configure BigQuery query reservations at both the model and connection levels, allowing for more granular control over query resource allocation and cost management within dbt projects.
.changes/unreleased · high confidence
BigQuery relation configuration module added
A new configuration module for BigQuery relations has been introduced, establishing the structural foundation for handling BigQuery-specific table and view settings. This change adds the core module file along with test helpers that define schemas and metadata structures for BigQuery entities, including support for partitioning, clustering, labels, and materialized view properties.
crates/dbt-adapter/src/relation/bigquery/config · high confidence
Bundled Snowflake adapter macros for dbt-loader
This change introduces the bundled Snowflake adapter macros into the \dbt-loader\ crate, providing the SQL logic required to materialize and manage Snowflake objects. The included macros cover core operations such as catalog retrieval, grant management, and schema changes, alongside specific materializations for tables, incremental models (including merge, insert\_overwrite, and microbatch strategies), seeds, snapshots, clones, and dynamic tables. It also adds support for interactive tables, scalar and aggregate functions (SQL, Python, and JavaScript), and optimized generic tests like \aggregated\_not\_null\. The implementation handles Snowflake-specific behaviors such as catalog-linked database constraints, transient temporary relations, and query tag management.
_crates/dbt-loader/src/dbt\_macro\_assets/dbt-bigquery, crates/dbt-loader/src/dbt\_macro\_assets/dbt-databricks, crates/dbt-loader/src/dbt\_macro\assets/dbt-snowflake · high confidence
Bundled dbt-adapter macros for local loading
The dbt-loader now includes a bundled set of dbt-adapter macros (located in \crates/dbt-loader/src/dbt\_macro\_assets/dbt-adapters\) to support local project loading. This addition introduces the core adapter interface macros, including \apply\_grants\ for managing table/view permissions, \persist\_docs\ for maintaining column and relation comments, and \get\_columns\_in\_relation\ for schema introspection. It also provides the standard generic test implementations (\unique\, \not\_null\, \relationships\, \accepted\_values\) and utility macros for handling timestamps, schema creation, and relation naming, ensuring the loader has the necessary macro definitions to execute dbt projects without relying on external package installations.
_crates/dbt-loader/src/dbt\_macro\assets/dbt-adapters · high confidence
Bundled dbt-spark adapter macros for Spark and Databricks
The dbt-loader now includes a bundled set of dbt-spark macros (located in crates/dbt-loader/src/dbt\_macro\_assets/dbt-spark) to support Spark and Databricks data warehouses. This addition provides the core adapter logic for materializing tables, views, seeds, snapshots, and incremental models (including append, merge, insert\_overwrite, and microbatch strategies). It also implements Spark-specific SQL utilities for date/time arithmetic, string manipulation, and array operations, along with a profile template to simplify connection configuration.
_crates/dbt-loader/src/dbt\_macro\assets/dbt-spark · high confidence
Centralized environment configuration and Vortex logging integration
This change introduces a new \dbt-env\ crate that centralizes the resolution of cloud configuration and environment variables, specifically handling fields like account, project, and job identifiers by prioritizing structured cloud config over legacy environment variable fallbacks. It also adds a \dbt-vortex\ crate that provides a unified, non-blocking interface for logging telemetry messages to the Vortex service, managing the underlying producer client and worker thread lifecycle automatically.
crates/dbt-env · high confidence
Databricks adapter introduces typed constraint support and shallow clone detection
The Databricks adapter now includes a new \TypedConstraint\ enum that supports check, primary key, foreign key, and custom constraints, complete with validation logic and DDL rendering for CREATE/ALTER TABLE statements. This change also exposes constraint details to Jinja templates via a custom Object implementation to ensure correct property access. Additionally, the adapter adds constants for default Databricks system schemas (hive\_metastore, system, information\_schema) and implements a helper function to detect shallow clone table types, enabling better handling of shallow clones in materializations.
crates/dbt-adapter/src/relation/databricks · high confidence
DuckDB SQL lexer support added
The dbt-lexer-duckdb crate now includes generated lexer files for DuckDB SQL, enabling the system to tokenize DuckDB-specific syntax. This change introduces the necessary components for parsing DuckDB queries, including token definitions and the lexer implementation, which are generated from the DuckDB grammar using ANTLR 4.13.2.
crates/dbt-sql/dbt-lexer-duckdb · high confidence
Exasol metadata adapter implementation for schema and catalog operations
The Exasol metadata adapter now provides specific logic for schema creation preflight, per-relation schema fetching via zero-row probes, and catalog parsing for \compile --write-catalog\. This enables dbt to correctly handle Exasol's two-part naming system and quote policies during metadata-based operations, while relation-cache hydration remains intentionally empty to fall back to standard macros.
crates/dbt-adapter/src/metadata/exasol · high confidence
Extensible telemetry attribute system with runtime deserialization registry
The telemetry infrastructure now supports custom, extensible event data types (attributes) via a new registry system. This change introduces a \TelemetryEventTypeRegistry\ that maps event identifiers to specific Arrow and JSON deserializers, allowing downstream users to define and register their own telemetry event schemas. It also adds a \DbtTelemetryContext\ to propagate execution phase and node ID information across spans, and includes test utilities (fakers) to generate deterministic test data for these new extensible event types.
crates/dbt-telemetry/src/attributes · high confidence
Initial Salesforce adapter macro definitions
The Salesforce adapter is bootstrapped with a set of dbt macros that define how models are materialized and how utility functions behave. Table and incremental model materializations are implemented to write data via the ADBC driver, requiring a single primary key and allowing specific categories. Several utility macros for dates, casting, and array construction are provided, while many other adapter features (such as grants, schemas, views, and seeds) are explicitly marked as not implemented to prevent unsupported operations.
_crates/dbt-loader/src/dbt\_macro\assets/dbt-salesforce · high confidence
Initial Spark adapter metadata and relation defaults
Added the initial implementation for the Spark adapter, including a new metadata module that parses Spark's \describe extended\ output by truncating column lists at the separator row, and a relation module that defines the default Spark database as an empty string to align with Spark's interchangeable use of database and schema terms.
crates/dbt-adapter/src/metadata/spark, crates/dbt-adapter/src/relation/spark · high confidence
Initial implementation of Fabric metadata adapter
Added the \FabricMetadataAdapter\ and its \list\_relations\ function in \crates/dbt-adapter/src/metadata/fabric/mod.rs\, enabling the system to discover tables and views in Microsoft Fabric by executing the \sp\_tables\ stored procedure and mapping the results to internal relation types. The adapter also implements schema building logic to parse table and column metadata from SQL query results, integrating with the existing \AdapterEngine\ and \Relation\ structures.
crates/dbt-adapter/src/metadata/fabric · high confidence
Initial import of the MiniJinja Jinja2 engine crate
The \crates/dbt-jinja\ directory has been added, introducing the MiniJinja template engine as a dependency for dbt. This import includes the full source code for the engine (version 2.6.0), along with comprehensive CI/CD workflows for building wheels, publishing to crates.io and PyPI, and running tests across multiple Rust versions and targets (including WASI and 32-bit). It also establishes the development environment with configuration for Clippy, Rustfmt, and VS Code, ensuring the engine is integrated into the dbt build and release pipeline.
crates/dbt-jinja · high confidence
Install agent skills from packages during \`dbt deps\`
dbt now automatically discovers and installs agent skills (directories containing a \SKILL.md\) from the root project and any installed packages when running \dbt deps\. Skills are resolved using the \skills:\ configuration block in \dbt\_project.yml\ (with the root project overriding package configs) and are copied into the destination directories specified by the \ai\_provider\ setting (e.g., \.agents/skills/\ or \.claude/skills/\). The system handles skill validation, metadata injection for tracking, and pruning of obsolete installs, ensuring that skills from packages are available to configured AI providers without manual intervention.
crates/dbt-skills · high confidence
Interactive profile setup wizard for \`dbt init\`
The \dbt init\ command now includes an interactive profile setup wizard that guides users through configuring their database connection. Users can choose to create a new profile from scratch, pre-populate one using credentials from their \dbt\_cloud.yml\ file, reuse an existing profile from \profiles.yml\, or skip setup entirely. The wizard supports a wide range of adapters, including Snowflake, Databricks, BigQuery, ClickHouse, Exasol, Postgres, Redshift, and Fabric. Additionally, the command now offers embedded project templates (Jaffle Shop and Moms Flower Shop) and automatically recommends the dbt VS Code extension in the project's \.vscode/extensions.json\ file.
crates/dbt-init/src · high confidence
Introduce Databricks relation configuration and test helpers
This change adds the initial configuration structures and test utilities for Databricks relations in the dbt adapter. It defines metadata keys for fetching relation details (such as tags, constraints, and column masks) and provides test helpers to mock Databricks-specific model configurations, including support for dynamic table features like scheduling (cron, every, on\_update), liquid clustering, row filters, and column masks.
crates/dbt-adapter/src/relation/databricks/config · high confidence
Introduce DuckDB metadata adapter implementation
Added a new \DuckDBMetadataAdapter\ in the \crates/dbt-adapter/src/metadata/duckdb\ module to handle DuckDB-specific metadata operations. This implementation provides methods for building schemas from statistics SQL and extracting column metadata, utilizing the \AdapterImpl\ and \AdapterEngine\ abstractions. It also includes a \list\_relations\_schemas\_inner\ method that queries DuckDB using \DESCRIBE\ statements to retrieve table schemas, supporting execution phases and cancellation tokens.
crates/dbt-adapter/src/metadata/duckdb · high confidence
Introduce LakeCompute execution path for dbt tasks
Users can now route specific dbt nodes (models, seeds, and tests) through the LakeCompute execution path instead of the default remote adapter. This change introduces a \RunExecutionPath\ enum with \Remote\, \SideCar\, and \LakeCompute\ variants, allowing the system to leverage LakeCompute's specific capabilities, such as attaching catalog bundles to test statements, while ensuring that other node types fall back to the standard remote path if they do not support the LakeCompute-specific hooks.
crates/dbt-tasks-sa/src/runnable/runnable · high confidence
Introduce Python model support in the parser
The parser now supports Python models. It validates that each Python file contains exactly one \model(dbt, session)\ function and extracts dependencies (\ref\, \source\) and configuration (\config\, \config.get\, \config.meta\_get\) by analyzing the Python AST. This allows dbt to parse, resolve, and render Python-based models alongside SQL.
crates/dbt-parser/src · high confidence
Introduce Relation Config v2 and BigQuery Materialized View support
The \dbt-adapter\ crate now uses a new \config\_v2\ system for describing and diffing relation configurations, replacing the legacy \config.rs\ implementation. This change introduces a component-based architecture where relation settings (like partitioning, clustering, and refresh policies) are handled as distinct, diffable objects. Specifically, BigQuery materialized views are now supported via a dedicated \materialized\_view.rs\ loader that parses and diffs components such as cluster-by, partition-by, and refresh intervals. The \RelationObject\ and \RelationStatic\ implementations have been updated to integrate with this new config system, ensuring that Jinja templates receive the correct configuration values and that changesets accurately reflect the difference between desired and current states for BigQuery materialized views.
crates/dbt-adapter/src/relation · high confidence
Introduce Rust-based run-cache service integration in dbt-tasks-core
This change adds the \run\_cache\ module to \crates/dbt-tasks-core\, establishing the Rust-side implementation for the dbt State service shadow path. It introduces \run\_cache\_dev\_clone.rs\ to handle dev-clone decisions for incremental models and snapshots, \run\_cache\_request.rs\ to translate task-layer state (such as microbatch windows, persisted docs hashes, and semantic extras) into service requests, and \run\_cache\_service.rs\ to manage the execution lifecycle, including submitting requests, interpreting service decisions (Execute, Clone, Skip), and confirming results. This provides the core wiring for remote task execution and cache reuse within the Rust runtime.
_crates/dbt-tasks-core/src/run\cache · high confidence
Introduce SQL statement splitter with malformed-statement handling
The \dbt-sql-utils\ crate now includes a new SQL statement splitter that identifies statement boundaries by locating semicolons via the \dbt\_antlr4\ lexer. It supports multiple dialects (BigQuery, Redshift, Snowflake, Databricks, and Trino as default) and specifically handles malformed input: if an unpaired token (such as an unclosed quote or comment) is detected, the splitter stops splitting and returns the remainder of the input as a single statement rather than silently dropping it. Tests verify basic splitting, preservation of comments, and dialect-specific behaviors like Snowflake's terminal flow syntax.
crates/dbt-sql/dbt-sql-utils/src/splitter · high confidence
Introduce SQL type parsing and rendering logic in dbt-adapter-sql
The \dbt-adapter-sql\ crate now includes a comprehensive module for handling SQL data types, providing the ability to parse column descriptions into structured \SqlType\ representations and render them back to SQL strings tailored to specific database backends. This change introduces support for a wide range of data types including integers, decimals, strings, binary data, dates, times, and timestamps, with backend-specific logic for time zone specifications (e.g., handling \WITH TIME ZONE\ vs \WITHOUT TIME ZONE\ in PostgreSQL vs BigQuery) and precision. This functionality serves as the foundation for type conversion and description parsing across the dbt adapter ecosystem.
crates/dbt-adapter-sql/src/types · high confidence
Introduce Snowflake and BigQuery type handling in unit tests
The \renderable\ module now includes dedicated typing logic for Snowflake and BigQuery data types, enabling unit tests to correctly recognize and handle specific column types. For Snowflake, this adds support for \timestamp\_ntz\, \timestamp\_ltz\, \timestamp\_tz\, \TIME\, \VARIANT\, \OBJECT\, \GEOGRAPHY\, and \GEOMETRY\ columns, ensuring they are treated as primitive types rather than failing as non-primitive. For BigQuery, the module now supports \NUMERIC\, \GEOGRAPHY\, and \JSON\ types. This change also includes a utility to build unit test overrides for model dependencies.
crates/dbt-tasks-sa/src/renderable · high confidence
Introduce Storybook for dbt Docs v2 UI components
Developers can now use Storybook to view, test, and interact with dbt Docs v2 UI components in isolation. This includes a Storybook configuration that mirrors the application's provider stack (React Router, React Query, theme context) and a suite of stories for the main App shell and Markdown overview component, covering various states such as loading, errors, and different data sources.
crates/dbt-docs-server/web/src · high confidence
Introduce Time Machine record/replay system for adapter compatibility testing
The \crates/dbt-adapter/src/time\_machine\ module now provides a unified infrastructure for recording and replaying adapter-level behavior, enabling backward compatibility testing across Fusion versions. It captures synchronous Jinja \adapter.xxx()\ calls and asynchronous \MetadataAdapter\ operations (such as schema discovery and freshness checks) via an MPSC channel to a background writer, storing them as compressed NDJSON files. During replay, the system supports both strict ordering and semantic modes—where read-only queries like \SELECT\ or \SHOW\ can be matched flexibly to handle minor reordering—while sanitizing non-deterministic elements like temporary table suffixes and UUIDs to ensure reliable cross-version validation.
_crates/dbt-adapter/src/time\machine · high confidence
Introduce \`dbt login\` and \`dbt login status\` commands
This change introduces the \dbt login\ and \dbt login status\ commands, implemented in the new \crates/dbt-login\ crate. The \dbt login\ command performs an interactive OAuth authentication flow, combining browser-based authorization for both dbt State and the dbt platform into a single session, while respecting the \DBT\_OAUTH\_SCOPES\ environment variable for custom scope requirements. The \dbt login status\ command displays the current authentication state, identifying the source of credentials (environment variables, OAuth session, or YAML config) and showing expiration details for OAuth tokens. Post-login, the system provides guidance on enabling dbt State if it is available for the account but not yet configured locally.
crates/dbt-login · high confidence
Introduce \`dbt source freshness\` command in Rust
The \dbt source freshness\ command is now implemented in Rust (previously Python-only), allowing users to validate the timeliness of their source data against configured freshness thresholds. This change adds the core execution logic for measuring source data age, evaluating pass/warn/error statuses, and generating freshness result artifacts, while maintaining the existing user-facing messaging and schema structure.
crates/dbt-freshness · high confidence
Introduce behavior flags for controlled feature toggles
The \dbt-common\ crate now includes a behavior flag system that allows features to be enabled or disabled with optional user overrides. This infrastructure supports gradual rollouts and deprecation warnings, giving users control over specific behavioral changes without requiring immediate code updates.
crates/dbt-common/src · high confidence
Introduce centralized dbt platform authentication crate
The new \dbt-platform-auth\ crate provides a unified credential resolution system for authenticating with the dbt platform. It introduces an \AuthChain\ that attempts to resolve credentials from environment variables, cached OAuth sessions, or \dbt\_cloud.yml\ configuration files in a defined order. For interactive contexts, the chain can be extended with a browser-based OAuth login flow. The crate also defines specific credential types (ServiceToken, Pat, OAuth) and a structured error model to handle authentication states like expiration or missing scopes.
crates/dbt-platform-auth · high confidence
Introduce centralized distribution info and telemetry hydration providers
The dbt-docs-core crate now provides a \DistInfoProvider\ trait and a \Providers\ bundle to centralize server metadata and analytics telemetry. This allows the server to authoritatively hydrate fields like distribution name, version, and login status onto every analytics event, ensuring the client cannot spoof this data. The default implementation assumes an OSS distribution, while the provider architecture enables environment-specific overrides for cloud identifiers.
crates/dbt-docs-core · high confidence
Introduce custom CSV parser with Python/agate-compatible type inference
A new \dbt-csv\ crate has been added to handle CSV reading for dbt seeds, replacing the previous standard CSV reader. This new parser implements type inference logic that matches Python's agate library, ensuring consistent data typing between Python-based dbt models and the Rust-based engine. Key behaviors include specific type priority (Integer \> Number \> Date \> DateTime \> ISODateTime \> Boolean \> Text), strict boolean validation (only 'true'/'false'), and support for forcing specific columns to be treated as Text. Timestamps are inferred with microsecond precision, and the parser handles edge cases like empty headers, duplicate headers, and null value representation ('null' or empty strings) to align with agate's behavior.
crates/dbt-csv/src, crates/dbt-csv/src/reader · high confidence
Introduce dbt Docs v2 UI pages and Storybook integration
The documentation interface has been updated to the v2 design, introducing new page components for the project overview, resource filtering, search, and resource details, along with a catch-all 404 page. The Overview page now serves as a dashboard landing page that displays project assets, suggested commands, and resource counts, while gracefully falling back to this default if no custom \\_\overview\\_\ block is authored. The Search page now supports cross-type queries with active filter chips and structured error handling for issues like query length or expired cursors. The ResourceDetails page manages loading and not-found states for specific resource types, and the ResourceFilter page narrows the asset list view based on route parameters. To support this new UI, Storybook stories have been added for all page components to facilitate visual testing and development.
crates/dbt-docs-server/web/src/pages · high confidence
Introduce dbt Platform metadata SDK for accounts, projects, and catalog
Added a new Rust SDK (\crates/dbt-platform\) that provides authenticated access to the dbt platform. The SDK introduces \PlatformClient\ with automatic credential resolution and refresh (including handling OAuth token expiry and 401 retries), scoped account support via \for\_account\, and specific APIs for user identity (\whoami\), project listing/retrieval (\list\_projects\, \get\_project\), and catalog exploration (\list\_catalog\_models\ via the Discovery GraphQL API).
crates/dbt-platform · high confidence
Introduce dbt State client with gRPC protocol and OAuth authentication
This change introduces the \dbt-state\ crate, providing the client-side implementation for dbt State reuse. It establishes the gRPC communication layer by compiling a new set of Protocol Buffers (including services for SQL execution, cloning, state selection, and telemetry) and adds a build script to manage these definitions. The crate also implements a complete OAuth 2.0 authentication flow, featuring PKCE-based browser login, token caching, and scope validation to securely manage access to the dbt State service.
crates/dbt-state · high confidence
Introduce dbt-adapter-core crate with AdapterType enum and config alias canonicalization
A new \dbt-adapter-core\ crate has been added to centralize adapter identification and configuration handling. It introduces the \AdapterType\ enum, which defines supported databases (including Snowflake, BigQuery, Databricks, Redshift, Postgres, Salesforce, ClickHouse, and others) and marks specific ones like ClickHouse and Salesforce as non-experimental. The crate also implements \config\_aliases\ logic to canonicalize database-specific configuration keys (e.g., mapping \catalog\ to \database\ for Databricks) and enforces architectural boundaries via \deny.toml\ to prevent \dbt-adapter-core\ from depending on \dbt-common\ or \arrow\. This change provides a unified, type-safe foundation for adapter configuration across the system.
crates/dbt-adapter-core · high confidence
Introduce dbt-adapter-engine crate with MapReduce parallel processing framework
A new \dbt-adapter-engine\ crate has been created to host adapter-agnostic code, specifically moving the \MapReduce\ framework from \dbt-adbc\. This framework enables parallel Key-to-Value tasks by running workers in the \dbt-runtime\ blocking thread pool, managing database connections via a \ConnectionFactory\ trait, and reducing results into an accumulator. This change establishes a middle-layer between \dbt-adapter\ and \dbt-adbc\ to reduce circular dependencies and centralize parallel execution logic.
crates/dbt-adapter-engine · high confidence
Introduce dbt-agate as a Rust-based Agate table implementation
This change adds the \dbt-agate\ crate, providing a Rust implementation of the Python agate library's core table and column abstractions. It introduces new modules for handling column operations, data type definitions, Arrow-to-minijinja value conversion, and row hashing/grouping, enabling agate-style table manipulation within the dbt adapter ecosystem.
crates/dbt-agate/src · high confidence
Introduce dbt-frontend-common library with SQL expression evaluation and dialect support
A new \dbt-frontend-common\ crate has been added, providing shared foundational components for the frontend. This includes a \Dialect\ enum supporting Trino, Snowflake, BigQuery, Postgres, DuckDB, and others, along with dialect-specific identifier quoting and escaping rules. The library introduces a lightweight SQL expression evaluator (\expr\ module) capable of parsing and evaluating arithmetic, comparison, and conditional logic (min, max, if) over integer variables, which is utilized by the new \ConstraintMap\ system to resolve and validate model constraints. Additionally, it provides utilities for handling qualified names (\Qualified\, \FullyQualifiedName\), named references, source extraction traits, and type representation helpers.
crates/dbt-frontend-common/src · high confidence
Introduce dbt-lease crate for secure, concurrent local credential caching
A new \dbt-lease\ crate has been added to provide a file-based lease mechanism for coordinating access to shared local files across independent OS processes. This implementation, ported from the Snowflake Go driver, uses time-to-live (TTL) leases to prevent deadlocks if a process crashes, ensuring that sensitive data like credentials can be cached securely. It also includes OS-appropriate cache directory resolution (e.g., \\~/.cache\ on Linux, \\~/Library/Caches\ on macOS) with restrictive permissions (0700) to protect cached credentials.
crates/dbt-adbc · high confidence
Introduce generic dbt-tracing crate for structured telemetry
A new \dbt-tracing\ crate has been created to host generic, reusable telemetry infrastructure, including the \TelemetryDataLayer\ that bridges native \tracing\ spans and events into a structured pipeline, middleware and consumer traits for processing and exporting data, and support for JSONL, Parquet, and OTLP serialization. This change moves foundational record types, output layers, Arrow serialization, and subscriber filter policies out of application-specific code into this shared library, while keeping dbt-specific configuration, event schemas, and formatters in \dbt-common::tracing\ and telemetry schema crates.
crates/dbt-tracing · high confidence
Introduce in-process Python runner and typed artifact schemas
Users can now invoke dbt programmatically from Python using the new \dbtRunner\ API, which executes commands in-process and returns strongly typed dataclass artifacts (such as \RunResultsArtifact\, \Manifest\, \CatalogArtifact\, and \FreshnessResultsArtifact\) instead of raw JSON or strings. This change also adds a CLI entry point and integrates with the Rust engine via a PyO3 extension, ensuring that the Python-side artifact shapes match the on-disk JSON outputs.
crates/dbt-sa-python · high confidence
Introduce multi-adapter support with lazy adapter store and factory
The adapter subsystem now supports running models against multiple database adapters within a single project. A new \AdapterStore\ manages a registry of declared adapters, building them lazily on first use to avoid unnecessary connection overhead. A new \AdapterFactory\ trait and \DefaultAdapterFactory\ implementation handle the creation of \Adapter\ instances, mapping \AdapterType\ to specific backends and configuring engines, authentication, and statement splitters. This infrastructure allows nodes to be dispatched to the correct adapter implementation based on their configuration, rather than relying on a single default adapter for the entire run.
crates/dbt-adapter/src/adapter · high confidence
Introduce selection override capability for dbt-scheduler
The dbt-scheduler crate now supports an externally supplied node set that replaces the computed selection outright. When a \selection\_override\ is provided, the scheduler ignores standard \--select\, \--exclude\, \--resource-type\, and \--exclude-resource-type\ inputs, using the supplied IDs instead while still applying schedulability filters. This is implemented via new \SchedulerArgs\ configuration, \Instructions\ for SQL and logical plan execution, and updated \node\_selector\ and \schedule\ logic to handle the override and state-based selection results.
crates/dbt-scheduler · high confidence
Introduce semantic manifest schema with metrics, saved queries, and project configuration
The semantic layer now includes a new \SemanticManifest\ structure that aggregates semantic models, metrics, saved queries, and project configuration into a single serializable output. This change adds support for serializing metrics (including optional time granularity), saved queries (with export configurations), and project-level settings such as time spine definitions and DSI package version. Users can now access a consolidated semantic manifest that includes these previously separate or stubbed components, enabling better compatibility with downstream tools that expect a unified semantic layer representation.
_crates/dbt-schemas/src/schemas/semantic\layer · high confidence
Introduce shared SQL adapter utilities for identifier handling and statement classification
The \dbt-adapter-sql\ crate now provides shared infrastructure for SQL dialects, including an \Ident\ type that preserves quoting information to ensure correct case-sensitivity and character handling across backends like Snowflake and PostgreSQL. It also introduces keyword resolution via \dbt-sql-keywords\ for reserved and non-reserved terms, a tokenizer for parsing SQL tokens, and statement classification logic that specifically identifies BigQuery DML/DDL operations and excludes ClickHouse read statements.
crates/dbt-adapter-sql/src · high confidence
Introduce standalone Rust CLI and compiler for MetricFlow semantic queries
This change adds a new \dbt-metricflow\ crate that provides a standalone Rust-based CLI and semantic query compiler. Users can now execute the \dbt\_metricflow\ binary to compile metric queries into SQL for various dialects (defaulting to DuckDB) using a dbt semantic manifest. The CLI supports commands like \compile\ with arguments for specifying metrics, group-by clauses, where filters (with shorthand expansion), order-by, limits, and time constraints. The underlying library exposes a \MetricStore\ trait for metadata abstraction and an \InMemoryMetricStore\ for testing, enabling integration with external systems or embedding within other applications.
crates/dbt-metricflow/src · high confidence
Introduce standalone dbt-profile crate for profiles.yml resolution
A new \dbt-profile\ crate has been added to provide a lightweight, standalone resolver for dbt \profiles.yml\ files, suitable for use in \dbt-db-runner\ and other tools without pulling in the full dbt compilation stack. This crate handles parsing and validation of connection lists (supporting both legacy single-connection mappings and new flat list shapes), resolves Jinja templates for \env\_var\ and \var\ functions, and manages adapter type canonicalization (including rejecting retired names like \alt\ and \lake\_compute\ in favor of \lakecompute\). It exposes public APIs for resolving profiles, targets, and metadata, along with detailed error types for profile not found, missing outputs, invalid connection structures, and unrecognized adapter types.
crates/dbt-profile/src · high confidence
Introduces Python interface glue code for dbt core
Adds the \dbt-python-core\ crate, which provides the foundational glue code for the dbt Python extension module. This includes the \DbtRunner\ and \DbtRunnerResult\ classes exposed to Python, along with utilities for serializing artifacts to msgpack and managing process-wide tracing and feature stacks. This change establishes the mechanism by which the Rust core engine is invoked and results are returned to Python consumers.
crates/dbt-python-core · high confidence
Introduces a dedicated blocking thread pool for Jinja and database operations
The \dbt-runtime\ crate now provides a dedicated thread pool to handle blocking tasks, specifically Jinja template rendering and database queries. This pool is configured via a builder that allows setting the maximum number of worker threads (defaulting to 48), thread naming, and idle keep-alive timeouts. The runtime exposes macros (\\#\[dbt\_runtime::main\]\, \\#\[dbt\_runtime::test\]\, and \\#\[dbt\_runtime::worker\_test\]\) to simplify setup, ensuring that blocking work is offloaded from the main async executor to prevent deadlocks and improve concurrency for I/O-bound operations.
crates/dbt-runtime · high confidence
Introduces a pluggable backend abstraction for the in-binary docs server
The \dbt-index-core\ crate now exposes a \Backend\ trait that provides read-only SQL access over the parquet index artifacts, enabling the in-binary docs server to query node listings, project info, and catalog stats without hardcoding the data source. This abstraction includes a \DuckDbViewsBackend\ implementation that opens an in-memory DuckDB instance, registers canonical views over the index directory, and supports capability detection via \is\_available\ and \table\_has\_rows\. A default \UnavailableBackend\ stub ensures graceful degradation (reporting features as unavailable) when the proprietary \dbt-index\ distribution is not installed, allowing the server to render a PLG upsell rather than crashing. The module also defines the \Db\ struct for managing DuckDB connections via ADBC and establishes the foundational types for column lineage and impact providers.
crates/dbt-index-core · high confidence
Introduces dbt State auto-deferral for unselected nodes
The new \crates/dbt-defer\ crate implements logic to automatically defer relations to a previous run's state when a manifest-backed state is not explicitly provided. It synthesizes defer nodes from the dbt State service configuration for unselected nodes, allowing incremental builds to reference production relations even when those specific nodes were not part of the current selection. This feature ensures that downstream dependencies can resolve correctly against the deferred state without requiring manual state path configuration, degrading gracefully if the state service is unavailable.
crates/dbt-defer · high confidence
Introduces parquet-backed incremental parse cache for faster partial parsing
The \dbt-metadata\ crate now implements a new incremental parse system that stores parse state in Parquet files (under \target/private/metadata/parse\) instead of the previous format. This change enables significantly faster \--partial-parse\ performance by allowing the system to read only necessary index columns and lazy-load node payloads. The implementation includes a file registry to track input kinds, index-based selector resolution for efficient node lookups, and logic to manage cache epochs and compaction. A benchmark script is also added to measure partial-parse performance across various scenarios.
crates/dbt-metadata · high confidence
Introduces prev\_state module for state comparison logic
Adds the \crates/dbt-schemas/src/schemas/prev\_state\ module, which defines the \StateArtifacts\ struct and associated logic for handling previous manifest state. This includes mechanisms for comparing node modifications (body, config, relation, etc.), indexing test signatures to match nodes across different manifest producers (such as reconciling unique\_id differences between dbt-core and Fusion), and handling manifest load failures via the \OnManifestLoadFailure\ enum.
_crates/dbt-schemas/src/schemas/prev\state · high confidence
Introduction of the dbt-adbc crate with ADBC driver support and CLI tools
The \crates/dbt-adbc\ crate is introduced, providing a new ADBC-based driver infrastructure for dbt. This includes new source files for specific database backends (Athena, BigQuery, ClickHouse, Databricks, Snowflake) defining their respective connection options and authentication types, alongside core ADBC components like \Database\, \Connection\, and \Driver\ implementations. The crate also adds a REPL binary (\repl.rs\) for interactive querying and a synchronization binary (\adbc\_sync.rs\) to manage and verify driver checksums from the CDN, ensuring secure and consistent driver installations across platforms.
crates/dbt-adbc/src · high confidence
New Arrow and JSON serialization formats for telemetry data
The telemetry system now supports serializing and deserializing event records into Arrow and JSON formats. This introduces a structured \ArrowAttributes\ schema that maps telemetry fields (such as node details, query outcomes, and error codes) into Arrow columns, enabling efficient columnar storage and processing. Additionally, JSON serialization is implemented to allow telemetry records to be exported and imported as JSON lines, ensuring compatibility with standard text-based data interchange while maintaining round-trip fidelity for public event types.
crates/dbt-telemetry/src/serialize · high confidence
New DataFusion provider layer for schema store integration
The \dbt-df-providers\ crate introduces a new layer that bridges the dbt schema store with Apache DataFusion. It provides a \SchemaStoreCatalogProviderList\ that lazily provisions catalogs, schemas, and table providers on demand, ensuring consistent schema resolution without pre-registration. A \DelayedDataTableProvider\ defers data registration until execution time, allowing the system to handle intermediate tables during the compile phase by using schema-only placeholders that are populated with actual data (Parquet/JSON) during the build phase. Additionally, it includes custom CSV reading with agate-compatible type inference for dbt seeds, support for reading Parquet/JSON seeds without a DataFusion session context, and utilities for handling empty seeds via zero-row Parquet files.
crates/dbt-df-providers · high confidence
New Fusion telemetry event schema definitions
Added a comprehensive set of Protocol Buffer (proto3) definitions in \crates/dbt-telemetry/include\ that establish the structured event schema for the new 'Fusion' telemetry system. These files define the data models for tracking the full dbt execution lifecycle, including invocation metadata, node outcomes (models, tests, seeds, sources), query execution details, hook processing, dependency installation, and logging. The schema also introduces specific event types for asset parsing, artifact writing, onboarding steps, and internal debugging traces, providing the foundational contract for structured telemetry data collection.
crates/dbt-telemetry/include · high confidence
New Jaffle Shop sample project for dbt init
The \dbt init\ command now generates a new 'Jaffle Shop' sample project instead of the previous default. This template includes a complete e-commerce data model with staging and mart layers, seed data, and unit tests. It is configured to use the \dbt-labs/dbt\_utils\ package (version \>=1.3.0) and enables \static\_analysis: strict\ by default. The project also includes a \.gitignore\ file that excludes \.env\ files, and provides adapter-specific macros for currency conversion.
crates/dbt-init/assets · high confidence
New Jinja utility crate for environment building and context management
The \dbt-jinja-utils\ crate introduces a new \JinjaEnvBuilder\ to configure and construct Minijinja environments, supporting adapter injection, global variables, and replay-mode macro suppression (e.g., no-oping \elementary.upload\_artifacts\_to\_table\). It adds a \Flags\ object for case-insensitive access to dbt flags (like \WARN\_ERROR\ and \STRICT\_MODE\) and an \InvocationArgs\ struct to pass CLI/eval arguments into the Jinja context. A new \info\_schema()\ helper allows parse-time project quality checks to safely read metadata views, while \invocation\_graph\ provides an invocation-scoped scratch space for macros. Additional utilities include \jinja\_arg\_format\ for formatting JSON values as Jinja literals and a \MalformedBlockNameListener\ to warn on invalid snapshot/docs block names.
crates/dbt-jinja-utils/src · high confidence
New Jinja utility functions for contract validation and base context registration
The \dbt-jinja-utils\ crate now exposes a new \functions\ module that registers core Jinja globals and functions, including \otel\_trace\_id\, \otel\_span\_id\, \fromjson\, \tojson\, \fromyaml\, \toyaml\, \set\, \render\, \zip\, \print\, \log\, and \diff\_of\_two\_dicts\. It also introduces a \contract\_error\ module that provides \get\_contract\_mismatches\, enabling Jinja templates to detect and report mismatches between YAML contract definitions and SQL column definitions (e.g., missing columns or data type conflicts) as an Agate table. Additionally, the base context now explicitly registers \None\, \True\, and \False\ globals to align with dbt-core's Python context behavior, preventing undefined variable errors in templates that rely on these capitalized constants.
crates/dbt-jinja-utils/src/functions · high confidence
New LineageV2 DAG components and Groups view
The LineageV2 area now includes a complete set of new React components for rendering the second-generation lineage visualization. This adds the core DAG canvas (BaseDag) powered by React Flow, a Groups view that organizes resources by type with custom connector paths, and supporting UI controls including a hop bar for upstream/downstream depth, a lenses dropdown for filtering, and minimap panels for both views. The change also introduces Storybook stories for visual regression testing of the node cards and a unit test for the connector channel logic, replacing the previous dbt-dag dependency with these local implementations.
crates/dbt-docs-server/web/src/components/LineageV2 · high confidence
New React hooks for dbt-docs-server v2 UI state and layout
This change introduces a suite of new React hooks in the \dbt-docs-server\ web client to support the dbt v2 documentation interface. \useAllNodes\ fetches the complete project node list from the bootstrap data, replacing the previous paginated API approach. \useCapabilities\ and \useIdentity\ manage feature flags (such as column-level lineage) and user authentication/telemetry consent derived from the site bootstrap. \useLineageData\, \useHydrateLineageStore\, and \useLayoutWhenMeasured\ handle the asynchronous loading, storage, and layout of the new DAG lineage visualizations. Additional hooks include \useQueryHistory\ for persisting SQL queries in session storage, \useResizable\ for managing panel widths in local storage, and \useTheme\ for handling dark/light/system theme preferences.
crates/dbt-docs-server/web/src/hooks · high confidence
New Rust-based authentication crate for adapters
The \dbt-auth\ crate has been introduced to centralize adapter authentication logic in Rust. It provides a standardized, zero-copy configuration parsing layer that preserves original input shapes to prevent silent behavior changes, and implements specific authentication handlers for Athena, BigQuery, ClickHouse, Databricks, DuckDB, and Exasol. This change replaces previous Python-based or scattered auth implementations with a unified, type-safe approach that enforces strict input validation and compatibility rules.
crates/dbt-auth · high confidence
New Vortex client library for event ingestion
Introduces the \vortex-client\ crate, providing a \VortexProducerClient\ for sending telemetry events to the Vortex API. The client supports configurable batching, exponential backoff on send failures, and a dev mode that writes events to a local file instead of making HTTP requests. Configuration is abstracted via the \VortexEnv\ trait, allowing hosts to specify service identity and override defaults like the base URL and ingest endpoint.
crates/vortex-client · high confidence
New Vortex telemetry event schemas for Copilot, Beacon, and dbt-index
The \crates/proto-rust\ crate now includes Protocol Buffers definitions for a new set of Vortex telemetry events. These schemas cover agent interactions (tool call permissions, execution, and completion), Beacon UI interactions (split pane opens/closes, canvas parsing, and kickouts), Copilot generation and LLM call metrics, and dbt-index CLI invocations and tool calls. This change establishes the data contracts for these new telemetry surfaces, enabling downstream Rust code generation to capture and send these specific user and system events to the Vortex analytics platform.
crates/proto-rust · high confidence
New agent documentation and skills for dbt v2 adapters and docs generation
Added agent context files and skills to guide development of the dbt v2 adapter architecture and the new static-site docs generation system. The \adapters.md\ file documents the verticalized adapter structure (dbt-adbc, dbt-adapter-core, dbt-adapter-sql, dbt-auth, dbt-adapter) and enforces hard rules such as blocking experimental adapters at profile-load time, preventing new dependencies, avoiding platform-specific types, and requiring Jinja object tests. The \dbt-docs-server.md\ file describes the new docs v2 approach: \dbt docs generate\ now produces a static site queried by DuckDB-WASM using the dbt information schema (parquet + views.sql) instead of manifest.json, with specific rules on compile behavior, capability gating, and tech stack details. Additionally, new skills were added: \adapters-annotate-references\ provides scripts to annotate Rust adapter implementations with upstream Python reference links and generate gap reports, while \adapters-critic\ offers a code review checklist for adapter changes focusing on avoiding duplicated code, target-specific free functions, and improper adapter\_type handling. A \telemetry-tracing.md\ file was also added to guide work on the tracing/telemetry infrastructure.
.agents · high confidence
New assert\_contains! macro for test assertions
The \crates/dbt-test-primitives\ crate now exports an \assert\_contains!\ macro, allowing tests to verify that a collection or string contains a specific substring or element. The macro supports optional context arguments for clearer failure messages and works with strings, vectors, and hash sets. This simplifies common assertion patterns in the test suite by providing a dedicated, readable way to check for containment.
crates/dbt-test-primitives · high confidence
New dbt distribution detection and upgrade capabilities
The \dbt-dist\ crate now includes a new \dbt-dist-classify\ component that detects installed \dbt\ executables and classifies them by distribution (proprietary \dbt\, open-source \dbt-oss\/\dbt-core\, or Cloud CLI) and generation (v1 or v2). This enables the new \dbt system upgrade-distribution\ command, which allows users on the open-source \dbt-oss\ or legacy \dbt-core\ distributions to upgrade to the proprietary \dbt\ v2 distribution. The upgrade process supports both global installs (replacing the binary) and managed Python projects (updating \pyproject.toml\, \requirements.txt\, etc., and re-running the package manager). Additionally, the system now probes the actual installed package before uninstalling it to ensure accuracy, and handles Windows-specific executable discovery and Python manifest editing.
crates/dbt-dist · high confidence
New dbt docs v2 UI components and tests for asset and column lineage views
The docs v2 UI now includes new React components and their corresponding Storybook stories and unit tests for listing and filtering assets. This adds an AnalysisFilterView for ad-hoc analyses, a cross-type AssetListView with client-side filtering and pagination, and a GenericFilterView shell for other resource types. It also introduces a ColumnLineageMini component that renders a per-column lineage subgraph, correctly excluding scan-kind edges and handling gated access states.
crates/dbt-docs-server/web/src/components · high confidence
New dbt docs v2 UI components in the shared library
The shared component library now includes the foundational UI elements for the dbt docs v2 interface, including AssetDetail, AssetHeader, AssetMetadata, AssetColumns, AssetCode, AssetRelationships, CodePreview, CollapsibleSection, and various UI primitives like Badge, AnnotationBadge, and AutoExposureChip. These components provide the visual structure for asset detail pages, code previews with syntax highlighting, and relationship views, forming the core of the new documentation experience.
crates/dbt-docs-server/web/src/shared · high confidence
New dbt-adapter crate with core adapter infrastructure
The \dbt-adapter\ crate has been introduced to centralize adapter logic, providing a unified \AdapterEngine\ interface and a \RelationCache\ for managing database relations. It includes thread-local connection management via \ConnectionGuard\ to optimize resource usage, a \CatalogRelation\ system supporting both v1 and v2 \catalogs.yml\ schemas, and dialect-specific utilities for SQL formatting and identifier quoting. This change establishes the foundational adapter layer that replaces previous scattered implementations.
crates/dbt-adapter/src · high confidence
New dbt-ci release pipeline tooling for PyPI and Homebrew
The \crates/dbt-ci\ crate introduces a new \cargo ci\ CLI to automate dbt release workflows. It adds commands to bump the workspace Cargo version, pack pre-built binaries into per-platform wheels, and publish to PyPI (including a new 'download-at-install' sdist mode that assembles an sdist from published wheels and declares their runtime metadata). It also adds Homebrew support to render and publish formulae to the \homebrew-dbt\ tap, and includes logic to embed install-time notices in pre-release \dbt-core\ sdists to guide users toward the \dbt\ distribution.
crates/dbt-ci · high confidence
New dbt-dag crate for dependency management and node scheduling
This change introduces the new \crates/dbt-dag\ crate, which provides core functionality for managing dbt dependency graphs and scheduling node execution. The \deps\_mgmt\ module implements graph algorithms for reversing dependencies, ensuring all nodes are defined, and performing breadth-first searches to slice dependency trees based on sink nodes or custom comparison functions. The \schedule\ module defines the \Schedule\ struct to track selected, excluded, and frontier nodes, and implements the \show\_dbt\_nodes\ method to format node lists for output in various formats (JSON, Selector, Name, Path), including specific handling for JSON output keys and the \depends\_on\ field.
crates/dbt-dag · high confidence
New dbt-ident crate for SQL identifier handling
The \dbt-ident\ crate has been added to provide a dedicated type for SQL identifiers. It introduces an \Ident\ type that preserves case in storage but performs case-insensitive equality and hashing, making it suitable for use as keys in hash maps and lookup tables. The crate also includes a \deny.toml\ configuration to enforce that \dbt-ident\ is treated as an external crate for handling SQL identifiers, excluding \dbt-fusion-workspace-hack\ from dependency graphs.
crates/dbt-ident · high confidence
New dbt-schemas crate provides core Rust types and schema generation
The \crates/dbt-schemas\ crate introduces the foundational Rust types and schema-generation logic for dbt. It defines the \RelationType\ enum (including new variants like \DynamicTable\, \StreamingTable\, \MetricView\, and \Dictionary\) and implements adapter-specific mapping logic for BigQuery, Databricks, and Spark. The crate also provides the \MaterializationResolver\ for multi-dispatch macro resolution, utilities for resolving quoting defaults per adapter, and the \--pre-schema\ command-line interface for generating JSON schemas for project and profile configurations.
crates/dbt-schemas/src · high confidence
New dbt-sql-utils crate for SQL parsing and splitting
A new \dbt-sql-utils\ crate has been introduced to provide core SQL parsing and statement-splitting capabilities. This library exposes a \CaseInsensitiveInputStream\ for handling case-insensitive tokenization and a \sql\_lex\_tokens\ function that lexes SQL into tokens with source spans for supported dialects (BigQuery, Databricks, Redshift, Snowflake, and Trino). It also includes utilities for splitting SQL statements, identifying empty/comment-only inputs, and handling specific Snowflake terminal flow statements, serving as a foundational component for SQL processing within the dbt ecosystem.
crates/dbt-sql/dbt-sql-utils/src · high confidence
New dbt-test-containers crate for isolated test environments
A new \dbt-test-containers\ crate has been added to provide infrastructure for running tests in isolated Docker environments. This includes Rust utilities using the \bollard\ library to build, start, and manage containers, along with specific Dockerfiles for \dbt-core\, \dbt\ (with Snowflake adapter), and \postgres\. The setup includes an entrypoint script to automate \dbt deps\ and \dbt compile\ commands, and a PostgreSQL initialization script that creates test roles and databases, enabling tests like \test\_dbt\_compile\ to run against reproducible, containerized dependencies.
crates/dbt-test-containers · high confidence
New declarative interactive profile setup for supported databases
The \dbt-profile-schemas\ crate now provides a unified, declarative framework for configuring database profiles. It introduces an \InteractiveSetup\ trait and a \ConfigProcessor\ that drive interactive wizards for BigQuery, ClickHouse, Databricks, Exasol, Fabric, Postgres, Redshift, and Snowflake. Each adapter defines its required fields (such as host, credentials, and authentication methods) using a structured schema, enabling consistent, guided setup flows and supporting non-interactive (headless) configuration via the \headless\ module.
crates/dbt-profile-schemas · high confidence
New execution runners for models, seeds, snapshots, functions, and tests
This change introduces the \runnable\ module in \crates/dbt-tasks-sa\, providing the execution logic for dbt nodes. It adds specific runners for models (including microbatch support with concurrency caps for Snowflake), seeds (with improved column-change error hints), snapshots, functions (supporting overloaded UDFs), and tests (with updated verdict logic and caching). These runners handle the actual execution, context extension, and result caching for these node types within the new task architecture.
crates/dbt-tasks-sa/src/runnable · high confidence
New golden file testing library with CI-friendly patch output
Added \crates/dbt-goldie\, a fork of the \goldie\ crate that emits test mismatches as unified diffs wrapped in \BEGIN PATCH\ / \END PATCH\ markers. This allows CI systems to automatically apply golden file updates via \apply\_golden\_patches.py\ or \cargo xtask apply-ci-goldies\ without requiring local test re-runs, while maintaining compatibility with existing golden file paths and the \GOLDIE\_UPDATE\ environment variable for local regeneration.
crates/dbt-goldie · high confidence
New package management and dependency resolution infrastructure
This change introduces a new Rust-based implementation for the \dbt-deps\ crate, replacing the previous logic with a modular architecture. It adds a new \dbt deps add\ command to manage \packages.yml\ entries, including parsing various package sources (Hub, Git, Tarball, Local) and handling duplicate detection. The dependency resolution flow is restructured around a \DepsOperationContext\ that manages shared clients for the Package Hub, Git hosts, and private package providers. Git package downloads now support host-specific fast paths (using GitHub's archive endpoint and GraphQL for ref resolution) alongside a generic fallback, with per-run caching for resolved references. The update also introduces Fusion compatibility checks against Package Hub metadata, configurable download verification requirements, and improved error handling and telemetry for package installation.
crates/dbt-deps · high confidence
New parse-phase Jinja environment and context infrastructure
The parse phase now uses a dedicated, typed infrastructure for building and managing the Jinja environment and contexts. A new \JinjaFactory\ trait and its \DefaultJinjaFactory\ implementation encapsulate the creation of the parse-phase Jinja environment, allowing for extensibility via extra function registration. The module introduces specific context builders: \build\_docs\_jinja\_environment\ and \build\_docs\_resolve\_context\ for documentation rendering, and \build\_resolve\_context\ and \build\_resolve\_model\_context\ for model resolution. These contexts provide typed access to globals like \ref\, \source\, \config\, and \this\, ensuring that parse-time operations have the necessary adapter and configuration data. Additionally, a new \SqlResource\ enum is introduced to explicitly track and type resources encountered during SQL and macro rendering, such as sources, refs, functions, metrics, tests, macros, docs, snapshots, and materializations, distinguishing between runtime and static analysis sources.
crates/dbt-jinja-utils/src/phases/parse · high confidence
New proc-macros for error code synchronization and config resolution
This change introduces two new procedural macros in the \dbt-proc-macros\ crate to improve configuration handling and error management. The \\#\[derive(Resolvable)\]\ macro automatically generates a \Resolved{StructName}\ type for config structs, promoting optional fields to required ones based on \\#\[resolved(promote)\]\ annotations and implementing the \ResolvedConfig\ trait to provide uniform accessors for hooks and static analysis settings. Additionally, the \\#\[include\_frontend\_error\_codes\]\ attribute macro automatically syncs error codes from the frontend crate into the CLI crate, mapping internal errors to the 9000 range to prevent manual synchronization efforts.
crates/dbt-proc-macros · high confidence
New record/replay debugging and storage infrastructure
The \adbc-record-replay\ crate now includes a \dump-recordings\ CLI tool to inspect SQLite recording files, a new \RecordReplayError\ type for structured error handling, and a migration to SQLite as the primary storage backend for recordings (with legacy file-based storage marked deprecated). The module also introduces SQL normalization logic to mask volatile identifiers (timestamps, user names, temp table suffixes) ensuring recordings are portable across environments.
crates/adbc-record-replay · high confidence
New schema definitions for dbt artifacts and configuration
The \dbt-schemas\ crate now includes new Rust modules that define the typed structures and validation logic for dbt artifacts and configuration files. This adds schema support for \catalogs.yml\ (including the v2 table-driven validation), \dbt\_cloud.yml\ (for dbt Cloud project and state authentication), data tests (supporting both string and custom test forms with sequence-valued column names), and freshness rules (validating that count and period are provided together). These definitions ensure that the manifest, semantic manifest, and configuration files are parsed and serialized with strict type safety and parity with dbt-core.
crates/dbt-schemas/src/schemas · high confidence
New schema properties for analyses, checks, data tests, functions, and saved queries
The \crates/dbt-schemas/src/schemas/properties\ module now includes dedicated property structs for previously unsupported or loosely defined resource types: \AnalysesProperties\, \CheckProperties\, \DataTestProperties\, \FunctionProperties\ (with support for overloads and volatility), \SavedQueriesProperties\, and \UnitTestProperties\. These additions, alongside the existing model, metric, exposure, source, seed, snapshot, and macro property definitions, expand the schema coverage to allow dbt to parse, validate, and serialize these resource types from YAML properties files. Users can now define analyses, checks, data tests, functions, and saved queries in their project YAML with full schema-backed parsing and configuration inheritance.
crates/dbt-schemas/src/schemas/properties · high confidence
New selector parser crate for dbt YAML definitions
A new \dbt-selector-parser\ crate has been introduced to handle the parsing of \selectors.yml\ files. This component converts YAML-based selector definitions (including atoms, composite expressions, unions, intersections, and exclusions) into the internal \SelectExpression\ structures used by the scheduler, bridging the gap between the schema-defined YAML values and the runtime selection logic.
crates/dbt-selector-parser · high confidence
New telemetry crate with test utilities for generated protobuf events
The \dbt-telemetry\ crate has been introduced to centralize telemetry infrastructure, exposing modules for attributes, implementations, macros, generated protobuf schemas, and serialization. A key addition is the \test\_utils\ module, which provides deterministic, seed-based helpers to generate fake telemetry records (spans and logs) and attributes for testing purposes, relying on types from the \dbt\_tracing\ crate.
crates/dbt-telemetry/src · high confidence
New telemetry schemas for log events with Arrow serialization and sensitive data handling
The telemetry system now includes structured schemas for log-related events (compiled code, adapter connections, list/show outputs, log messages, and state modifications) within the \dbt-telemetry\ crate. These schemas implement \ArrowSerializableTelemetryEvent\ to enable efficient Arrow-based serialization and deserialization, including backward compatibility fallbacks for legacy JSON payloads. Additionally, sensitive data in compiled SQL and show data outputs is automatically redacted when cloned for non-sensitive contexts, ensuring user privacy in telemetry records.
crates/dbt-telemetry/src/schemas/log · high confidence
New telemetry span schemas for Arrow serialization
The telemetry system now includes explicit schema definitions for serializing and deserializing span events to and from Apache Arrow records. This change adds serialization logic for a wide range of event types, including artifacts, assets, dependencies, development traces, generic operations, hooks, invocations, node evaluations and processing, onboarding screens, execution phases, process information, queries, and package updates. Each event type implements the \ArrowSerializableTelemetryEvent\ trait to handle conversion to \ArrowAttributes\ and back, ensuring consistent telemetry data capture and transport.
crates/dbt-telemetry/src/schemas/span · high confidence
New test resolution module in dbt-parser
The dbt-parser crate now includes a new \resolve\_tests\ module that handles the resolution and persistence of generic data tests and unit tests. This module introduces dedicated logic for extracting raw, unrendered test configurations from schema YAML files, computing unique IDs for generic tests to match dbt-core conventions, and resolving unit test dependencies against models. It also provides utilities for handling legacy \tests\ vs \data\_tests\ aliases and managing column-level test inheritance.
_crates/dbt-parser/src/resolve/resolve\tests · high confidence
New test utility tasks for artifact validation and golden file comparison
The \dbt-test-utils\ crate now includes a comprehensive set of new task types to streamline test assertions and golden file management. These include \ArtifactComparisonTask\ for generic JSON artifact comparison with path-based field exclusion, \CheckCompiledFiles\ for validating compiled SQL against golden files (with optional hook checking), and \CheckPublicationArtifact\ for verifying publication outputs while stripping volatile metadata like timestamps and invocation IDs. Additional utilities provide file and directory existence assertions (\AssertFileExistsTask\, \AssertDirExistsTask\), directory manifest comparison with SHA256 checksums (\CompareDirManifest\), and specific capture tasks for dbt manifests (\CaptureDbtManifest\) and structured JSON logs (\ExecuteAndCaptureLogs\). The suite also supports record/replay workflows via \DbtRecordTask\ and general file operations like \FileWriteTask\ and \CpFromTargetTask\, all integrated into the existing \Task\ trait for use in test sequences.
crates/dbt-test-utils/src/task · high confidence
Python adapter module structure for BigQuery, Databricks, and Snowflake
The dbt-adapter crate now exposes a Python module structure that organizes support for BigQuery, Databricks, and Snowflake into separate submodules. This change consolidates the Python-specific adapter logic for these three platforms under a single, unified module path, enabling the system to handle Python models on these specific cloud data warehouses.
crates/dbt-adapter/src/python · high confidence
Python-compatible datetime module for Jinja templates
The \py\_datetime\ module now provides a full Python-style \datetime\ implementation in Jinja templates, including \datetime\, \date\, \time\, \timedelta\, and \timezone\ objects. Users can construct and manipulate dates and times using Python-native methods such as \strftime\ (with correct microsecond formatting), \strptime\, \fromisocalendar\, and \utcoffset\. The module supports both naive and aware datetimes, fixed-offset timezones, and \pytz\ timezones, ensuring that comparisons, arithmetic, and serialization behave consistently with Python's standard library.
_crates/dbt-jinja/minijinja-contrib/src/modules/py\datetime · high confidence
Redshift materialized view configuration support
The Redshift adapter now includes structured configuration support for materialized views. This change introduces \materialized\_view\_config.rs\ to handle Redshift-specific settings such as distribution styles (even, all, auto, or key) and sort styles (auto, compound, or interleaved), ensuring that materialized views are created with the correct distribution and sorting parameters based on model definitions.
crates/dbt-adapter/src/relation/redshift · high confidence
Redshift metadata adapter implementation
The Redshift adapter now includes a dedicated metadata module that handles relation listing and dependency tracking. It supports listing relations via SHOW TABLES when datasharing is enabled, falling back to the information schema otherwise, and parses relation dependencies using a custom SQL query against pg\_depend to support state reuse and view materialization tracking.
crates/dbt-adapter/src/metadata/redshift · high confidence
Self-hosted dbt docs v2 server with Docker support
Users can now run the next-generation dbt docs (v2) as a self-hosted service using the provided Dockerfile and docker-compose.yml. The server downloads the latest dbt binary from GitHub Releases at build time, serves the static docs site generated by \dbt docs generate\, and queries the parquet artifacts in the browser via DuckDB-WASM. This enables local preview and self-hosted deployment of the interactive docs without requiring a Node.js toolchain or external build steps.
crates/dbt-docs-server · high confidence
Static analysis engine scaffolding and project quality checks
The \dbt-tasks-sa\ crate now provides the core execution infrastructure for the static analysis engine, including a compilation pipeline, a compiled SQL cache, and a new \dbt check\ command that runs user-authored SQL queries against parse-time project metadata to validate data quality. This location also introduces the task runner foundation with barrier and cloneable task implementations for models, seeds, and snapshots, alongside context builders and debug utilities for lake compute integration.
crates/dbt-tasks-sa/src · high confidence
Structured tracing integration for dbt-common
The \dbt-common\ crate now includes a comprehensive tracing module that integrates the generic \dbt-tracing\ library with dbt runtime behavior. This change introduces structured telemetry support, replacing legacy logging with a middleware and layer-based architecture. Users benefit from consistent, structured logs across the CLI, file outputs (JSONL, Parquet), and OpenTelemetry (OTLP) exports. The module provides dbt-specific convenience helpers for emitting logs and spans, manages configuration for log paths and verbosity, and ensures graceful shutdown of telemetry resources. This foundational work enables better observability, debugging, and integration with external monitoring systems.
crates/dbt-common/src/tracing · high confidence
Support for multiple Databricks Python model submission methods
The Databricks adapter now supports submitting Python models via four distinct methods: all-purpose cluster, job cluster, serverless cluster, and workflow job. Users can select the desired method using the \submission\_method\ configuration option. This change introduces a new \DatabricksApiClient\ to handle API interactions and updates the adapter's Python model submission logic to route requests appropriately based on the selected method, enabling better integration with Databricks' serverless and job-based execution environments.
crates/dbt-adapter/src/python/databricks · high confidence
dbt docs v2 UI source and build tooling added
The dbt docs v2 user interface source code is now included in the repository under \crates/dbt-docs-server/web\. This location provides the React application, a Vite build configuration that embeds the static bundle into the binary, and a development setup that serves generated artifacts via DuckDB-WASM. It also includes Storybook integration for component testing and the necessary configuration files (Tailwind, ESLint, TypeScript) to build and maintain the UI.
crates/dbt-docs-server/web · high confidence
Architecture
Extract Vortex event logging into a dedicated crate
The Vortex event logging logic has been extracted from the broader Vortex client into a new, standalone \vortex-events\ crate. This change introduces a \DiscreteEventEmitter\ trait with \NoopEventEmitter\ and \DefaultEventEmitter\ implementations, allowing the system to emit structured telemetry events (such as invocation start/end, login, and static analysis) while supporting a no-op mode for testing or disabled states. The extraction also includes a new \proto-rust-macros\ crate providing derive macros (\ProtoEnumSerde\, \ProtoNew\) to simplify serialization and construction of Protobuf message structs used by these events.
crates/vortex-events · high confidence
Extract error handling and classification types into dedicated crates
The error-handling logic and classification data shapes have been extracted from the main codebase into the new \dbt-error\ and \dbt-classification-types\ crates. \dbt-error\ centralizes the \FsError\ type, \ErrorCode\ definitions (including new codes for warn-error options like \JinjaWarnUpgradedToError\ and \ConstraintNotEnforced\), adapter error mapping, and code location tracking. \dbt-classification-types\ provides the public data shapes for classifiers (PII, finance, health) and embeds the Snowflake-specific Jinja macros (\fetch\_snowflake\_column\_tags\, \apply\_snowflake\_column\_tag\) used for tag propagation, separating these lean, compiler-free types from the proprietary engine logic.
crates/dbt-error · high confidence
Extracted in-flight SQL statement tracking into a dedicated crate
The logic for tracking and cancelling in-flight SQL queries has been moved from the existing codebase into a new, standalone \dbt-tracked-stmt\ crate. This module now provides a global registry that monitors active statements and allows the application to cancel them via tokens or by sweeping all tracked entries, ensuring that long-running queries in the wizard Explorer and dbt-index can be properly terminated.
crates/dbt-tracked-stmt · high confidence
Extracted pretty-table formatting logic into a standalone crate
The \pretty\_table.rs\ module has been moved from \dbt-common\ into a new, independent \dbt-pretty-table\ crate. This change decouples the data formatting and display logic (supporting Table, CSV, TSV, JSON, YAML, and other formats) from the core common library, preventing circular dependencies and allowing the formatting utilities to be used independently. The new crate includes its own error types and dependency constraints to ensure it does not rely on \dbt-common\ or \dbt-error\.
crates/dbt-pretty-table · high confidence
Extracted terminal progress bar controller to a separate crate
The terminal progress bar logic has been moved into a new, standalone \dbt-tui-progress\ crate. This provides a thread-safe \ProgressController\ that wraps \indicatif\ to manage multiple concurrent progress bars and spinners, featuring generic ID types for decoupling identity from display text, a background ticker thread for animations, and support for suspending output to cleanly interleave log messages with progress indicators.
crates/dbt-tui-progress · high confidence
Introduce dbt-base utility crate and source-available clap-based CLI parser
This change introduces the \dbt-base\ crate, providing shared utility types including a \CancellationToken\ system for cancellable operations and a \MaybeStableHasher\ that ensures deterministic hashing in debug builds while maintaining DDoS resistance in release builds. It also replaces the previous CLI parsing infrastructure with a new source-available, clap-based parser in \dbt-clap-core\, which defines the core command set (Init, Run, Build, etc.) and maps them to internal execution commands.
crates/dbt-clap-core · high confidence
Introduce dbt-compilation crate for structured compilation pipeline
The new \dbt-compilation\ crate centralizes the dbt compilation logic, providing a structured pipeline for loading, resolving, and compiling projects. It introduces \CompilationConfig\ to manage build cache scheduling and command caching, and \DbtLoadedProject\ to encapsulate the loaded state with adapter and type-operation factories. The crate exposes traits like \CompilationDriver\ and \TaskExecutionDriver\ to standardize how projects are compiled and tasks are executed, while \SchemaHydration\ and \Schedule\ modules handle schema fetching and node selection logic. This refactors the compilation process into a reusable, testable component within the \dbt-compilation\ location.
crates/dbt-compilation/src · high confidence
Introduce dbt-main as the new core execution engine
The \crates/dbt-main\ crate now serves as the central execution engine for dbt, consolidating the CLI entrypoint, compilation pipeline, task execution, and graceful shutdown handling. This change introduces a structured \CompilationPhasesExecutor\ to manage the project load, validation, and compilation phases, and implements a robust Ctrl+C and fail-fast cancellation mechanism via \run\_future\_with\_ctrlc\_support\ that actively cancels tracked database statements. The module also provides the \run\_freshness\_command\ for executing source freshness checks and a \RetryState\ implementation that parses previous \run\_results.json\ to identify and re-execute failed nodes while preserving original command flags like \--full-refresh\. Additionally, it includes logic for handling self-managed vs. package-managed binary uninstallation and initializes the underlying Tokio runtime with configurable thread pools and stack sizes.
crates/dbt-main · high confidence
Introduce dbt-tasks-core crate with run-cache, lake compute, and schema inference foundations
This change establishes the new \dbt-tasks-core\ crate, extracting core task execution infrastructure from \dbt-tasks\ to serve as a shared foundation. It introduces the \TaskRunnerCtx\ and \TaskRunnerCtxFactory\ to manage the runtime context for task execution, including integration with the gRPC run-cache service for dbt State features (defer-to, speculative submits, and telemetry). It also adds extension points for Lake Compute diagnostics (\LakeComputeCatalogAttachChecker\, \LakeComputeMdlsChecker\, \LakeComputePropagationChecker\) to validate credentials and catalog visibility during \dbt debug\, and implements local schema inference for sources with \schema\_origin: local\ by building Arrow schemas from YAML column definitions.
crates/dbt-tasks-core/src · high confidence
Introduce the FeatureStack architecture for dependency injection
The \dbt-features\ crate now defines a \FeatureStack\ that acts as the central dependency graph for the application, consolidating services such as CLI, adapter, tracing, task runner, and lake compute into a single injectable object. A \FeatureStackBuilder\ is provided to construct this stack with default implementations, and individual feature modules (e.g., \adapter\, \cli\, \index\) expose typed slots for their respective services, replacing previous ad-hoc or global dependency patterns.
crates/dbt-features/src · high confidence
New parser resolution module for dbt resource types
The \crates/dbt-parser/src/resolve\ module has been introduced to centralize the resolution logic for dbt resource types. This new location now contains dedicated modules for resolving analyses, checks, exposures, functions, groups, macros, metrics, models, operations, properties, query comments, saved queries, seeds, selectors, semantic models, snapshots, sources, and tests, along with utilities for primary key inference and YAML field pre-processing. This structural change organizes the parsing and resolution of these resources into a single, cohesive location within the parser crate.
crates/dbt-parser/src/resolve · high confidence
dbt-loader source code restructured into new modular crate
The \crates/dbt-loader/src\ directory has been reorganized into a set of distinct modules (\args\, \clean\, \deps\, \loader\, \load\_profiles\, \load\_vars\, \load\_packages\, \cloud\_http\_client\, \upload\_artifact\_ingest\, etc.) that collectively implement the project loading, dependency resolution, profile management, and artifact upload workflows. This change introduces a dedicated \LoadArgs\ structure to centralize CLI and configuration inputs, separates the \dbt deps\ execution logic into its own module to handle package installation without requiring a profile, and moves cloud-specific HTTP client and artifact upload logic into separate files to decouple them from the core loader.
crates/dbt-loader/src · high confidence
Behavioural changes
Add manual trait implementations for generated telemetry protocol buffers
This change introduces a new \impls\ module within the \dbt-telemetry\ crate that provides manual trait implementations and helper constructors for the generated protobuf types. These implementations bridge the gap between the generated code and the runtime tracing library, enabling features such as converting proto severity levels to tracing severities, serializing debug values with precision handling for large integers, and constructing specific telemetry events for dependencies, hooks, logs, and node processing with correct legacy event codes.
crates/dbt-telemetry/src/impls · high confidence
Added skills symlink in .claude directory
A new symbolic link named 'skills' has been added to the .claude directory, pointing to the ../.agents/skills directory. This change establishes a local reference to the agents' skills configuration within the .claude scope.
.claude · high confidence
Align as\_bool filter behavior with dbt-core
The \as\_bool\ Jinja filter in the dbt-jinja-filters crate now acts as an identity pass-through, returning the input value unchanged. This change ensures that string values like \"true"\ remain as strings rather than being coerced to booleans, matching the behavior of dbt-core where \as\_bool\ only coerces types during native value rendering, not when rendering text or SQL. This prevents unexpected type conversions in configurations and macro outputs.
crates/dbt-jinja-filters · high confidence
BigQuery Python job submission logic moved to dedicated module
The BigQuery adapter now handles Python job submission (Cluster, Serverless, and BigFrames methods) through a new dedicated module in the dbt-adapter crate. This change centralizes the logic for configuring and executing Python jobs via GCS and Dataproc/BigFrames, ensuring that required profile settings like \compute\_region\ and \gcs\_bucket\ are validated before job execution.
crates/dbt-adapter/src/python/bigquery · high confidence
BigQuery adapter metadata operations migrate to AdapterEngine with structural fixes
The BigQuery metadata adapter has been refactored to delegate connection and relation listing operations to the new AdapterEngine, replacing the previous direct adapter implementation. This change introduces a fallback mechanism for cross-project listings to ensure correct relation discovery when the ADBC driver returns empty results. Additionally, a new nested projection module now generates explicit SQL aliases for BigQuery STRUCT and ARRAY columns to prevent positional misalignment, and object options handling now correctly escapes Unicode characters in descriptions to match Python JSON standards.
crates/dbt-adapter/src/metadata/bigquery · high confidence
Centralize dbt Cloud configuration resolution and enforce explicit project linking
The dbt-cloud-config crate now centralizes how dbt Cloud credentials and settings are resolved, applying a strict precedence order: environment variables (e.g., DBT\_CLOUD\_TOKEN, DBT\_CLOUD\_PROJECT\_ID) override settings in dbt\_project.yml, which in turn override the global dbt\_cloud.yml file. A key behavioral change is that dbt platform features now require an explicit project link in dbt\_project.yml; the system no longer falls back to the global active\_project from dbt\_cloud.yml, preventing credential leakage into unlinked projects. Additionally, the crate introduces support for resolving defer\_job\_id, state\_org\_id, and job\_id from both environment variables and project configurations, while adding validation to detect and report mismatches between configured project IDs and available credentials.
crates/dbt-cloud-config · high confidence
Centralized SQL keyword lists for multiple database dialects
The \dbt-sql-keywords\ crate now provides a unified, centralized source of reserved and non-reserved SQL keywords for BigQuery, BigQuery (untyped), Databricks, DuckDB, Exasol, MS SQL, Redshift, Snowflake, and Trino. This change replaces scattered keyword definitions with a single library that exposes dialect-specific keyword lists (including reserved, strict non-reserved, and non-reserved categories) and provides an efficient, allocation-free binary search function for case-insensitive keyword lookups, ensuring consistent parsing behavior across all supported database adapters.
crates/dbt-sql-keywords/src · high confidence
Databricks metadata retrieval now uses DESCRIBE TABLE EXTENDED AS JSON with version-gated capabilities
The Databricks adapter now retrieves relation metadata via the \DESCRIBE TABLE EXTENDED ... AS JSON\ command instead of querying \information\_schema\, significantly reducing the number of metadata round-trips. This change introduces a new capability system (\dbr\_capabilities.rs\) that gates features like \InsertByNameReplaceWhere\ (DBR 18.0+), \Iceberg\ (DBR 14.3+), and \CommentOnColumn\ (DBR 16.1+) based on the Databricks Runtime version or SQL Warehouse context. The adapter also adds support for parsing row filters, column masks, and the VOID column type from the new JSON metadata format.
crates/dbt-adapter/src/metadata/databricks · high confidence
Databricks relation config components migrated to config\_v2
The Databricks adapter's relation configuration logic has been restructured into modular components (column\_comments, column\_masks, column\_tags, constraints, liquid\_clustering, metric\_view\_query, partition\_by, query, refresh, relation\_comment, relation\_tags, row\_filter, tbl\_properties) that implement the new config\_v2 interface. This change standardizes how Databricks-specific settings are loaded from local model definitions and compared against remote warehouse state, ensuring consistent diffing and application of changes for features like column tags, masks, constraints, liquid clustering, and metric views.
crates/dbt-adapter/src/relation/bigquery/config/components, crates/dbt-adapter/src/relation/databricks/config/components · high confidence
Databricks relation configuration is restructured into granular component loaders
The Databricks adapter now manages relation configurations (for incremental tables, materialized views, metric views, streaming tables, and views) using a new modular component-based system. Instead of monolithic configuration handling, each relation type is defined by a specific set of loaders (e.g., LiquidClusteringLoader, RefreshLoader, ColumnMasksLoader) that individually track changes to properties like clustering, refresh schedules, column masks, and tags. This change ensures that updates to specific components (such as changing a refresh cron or column tags) are detected precisely, allowing the adapter to determine accurately whether a full refresh is required or if the change can be applied incrementally, thereby improving efficiency and reducing unnecessary downtime for Databricks models.
_crates/dbt-adapter/src/relation/databricks/config/relation\types · high confidence
DuckDB adapter bundled with dbt-loader now supports catalogs v2, Iceberg, and advanced incremental strategies
The bundled dbt-duckdb adapter has been updated to support dbt-core v2 catalogs v2, enabling routing to external data sources like AWS Glue and Iceberg REST catalogs. This change introduces new materializations for external files (parquet, JSON, CSV) and a dedicated microbatch incremental strategy that processes data by time windows. It also adds comprehensive support for complex MERGE operations with custom clauses, improved schema change detection for incremental models, and fixes for multi-statement incremental batches and catalog metadata generation.
_crates/dbt-loader/src/dbt\_macro\assets/dbt-duckdb · high confidence
Extracted dbt Jinja variable and environment handling into a standalone crate
The \dbt-jinja-vars\ crate has been introduced to centralize dbt Jinja variable resolution and environment variable access. This change provides the \var()\ and \env\_var()\ Jinja functions, along with \ConfiguredVar\ for package-specific variable namespaces. It ensures that CLI-provided YAML variables (including dates and nulls) are correctly converted to Jinja objects and that environment variables starting with \DBT\_ENV\_SECRET\ or \\_DBT\ are handled according to dbt's security and placeholder rules.
crates/dbt-jinja-vars · high confidence
Implement catalogs.yml v2 relation building logic
The \catalog\_relation\_v2.rs\ module now handles the construction of \CatalogRelation\ objects using the new \catalogs.yml\ v2 schema. This change introduces support for specific catalog types across adapters, including Databricks Unity and Hive Metastore, Snowflake Horizon and linked catalogs (Glue, Iceberg REST, Unity), BigQuery Biglake Metastore, and DuckDB. It enforces configuration constraints, such as requiring a \catalog\_name\ for Iceberg tables on BigQuery and preventing the use of \catalog\_type\ in model-level configs, while also handling default behaviors for adapters when no catalog is specified.
_crates/dbt-adapter/src/catalog\relation · high confidence
Implement legacy catalog.json schema and generation logic
The \legacy\_catalog\ module now defines the Rust structs for the dbt \catalog.json\ format (including metadata, table/column stats, and node information) and provides the \build\_catalog\ function to assemble this data. This implementation constructs the catalog by merging resolver state with node statistics, specifically ensuring that fully qualified relation names are consistently lowercased when joining catalog entries to support accurate lookups across models, snapshots, seeds, and tests.
_crates/dbt-schemas/src/schemas/legacy\catalog · high confidence
Introduce ClickHouse metadata adapter with ADBC driver fixes
Adds the ClickHouseMetadataAdapter implementation in the dbt-adapter crate, enabling catalog and relation metadata retrieval for ClickHouse databases. This change includes specific fixes for the ADBC driver, such as handling the \?\ character in SQL queries to prevent bind-parameter conflicts, correcting default database selection, and adding necessary connection settings. It also introduces logic for parsing materialized view targets, handling refreshable views, and quoting identifiers to ensure correct relation lookups.
crates/dbt-adapter/src/metadata/clickhouse · high confidence
Introduce ParseAdapterState to track adapter calls during parsing
The dbt-adapter now maintains a dedicated \ParseAdapterState\ in the parse phase to record calls to \get\_relation\ and \get\_columns\_in\_relation\. This allows the system to track which relations and columns are accessed during parsing, enabling better handling of dangling sources and ensuring that relation metadata is correctly populated for nodes that rely on introspection.
crates/dbt-adapter/src/parse · high confidence
Introduce adapter-specific column type handling via ColumnBuilder
The \dbt-adapter\ crate now uses a \ColumnBuilder\ to construct column metadata with logic specific to each database adapter (e.g., Snowflake, BigQuery, Databricks, ClickHouse). This change ensures that type strings, nullability, and precision/scale details are generated correctly for each backend, replacing previous generic handling. For example, ClickHouse-specific wrapper stripping and BigQuery-specific column modes are now explicitly supported in the type resolution pipeline.
crates/dbt-adapter/src/column · high confidence
Introduce compile-time config and node context modules
Added new \compile\_config.rs\ and \compile\_node\_context.rs\ modules to the \dbt-jinja-utils\ crate to manage Jinja context during the compile phase. The \CompileConfig\ object now implements \config.get\ and \config.require\ to check the \meta\ dictionary for custom config keys, emitting deprecation warnings that direct users to use \config.meta\_get\ or \config.meta\_require\ instead. The \compile\_node\_context\ module provides the \build\_compile\_node\_context\ function to construct the Jinja environment for models, including logic to resolve \model.path\ relative to resource roots and configure dependency validation for refs.
crates/dbt-jinja-utils/src/phases/compile · high confidence
Introduce dbt-sa-cli as the new CLI entry point
The \crates/dbt-sa-cli/src/main.rs\ file establishes the new \dbt-sa-cli\ binary entry point, replacing previous initialization logic. This change wires up the CLI using \dbt\_clap\_core\ and \dbt\_features\, explicitly configuring tracing via \FsTraceConfigBuilder\ (with query logs always enabled) and initializing the \FeatureStack\ with anonymous usage stats. It also introduces error handling that prints trimmed errors and exits on tracing initialization failure, marking a structural shift in how the CLI bootstraps its core components.
crates/dbt-sa-cli/src · high confidence
Introduce local OSS equivalents for dbt-dag icons, types, and layout logic
The docs v2 UI no longer depends on the external \@dbt-labs/dbt-dag\ package for resource-type icons, type definitions, and lineage layout. This location provides the local replacements: \resourceType.tsx\ defines the \ResourceType\ union, color palettes, and labels; \accessLevel.tsx\ supplies the \AccessLevelIcon\ component; \dagreLayout.ts\ implements the custom rank-alignment logic for the lineage graph; and \fileTree.tsx\ handles the file-tree structure. These modules are accompanied by comprehensive test suites (\resourceType.test.ts\, \dagreLayout.test.ts\, \fileTree.test.ts\, \accessLevel.tsx\ tests) that verify the new behavior.
crates/dbt-docs-server/web/src/lib · high confidence
Introduce new render task infrastructure for dbt models, seeds, and unit tests
The \renderable\ module in \crates/dbt-tasks-sa\ has been restructured to use a new task-based rendering pipeline. A new \RenderTask\ orchestrates the rendering of models, snapshots, tests, seeds, and unit tests, routing them to specific handlers (\default::run\_default\_render\, \run\_seed\_render\, \unit\_test::run\_unit\_test\_render\). This includes a new \AggregatedTestRenderTask\ for handling grouped tests and a \common::handle\_render\_result\ utility for processing and sending render outcomes. Unit test rendering now supports a three-phase pipeline (Discover, Fetch, Render) with schema caching and specific typing support for BigQuery, Databricks, and Snowflake.
crates/dbt-tasks-sa/src/renderable/renderable · high confidence
Introduce structured tracing formatters for CLI output
The CLI output system has been migrated from legacy direct logging to a new structured tracing formatter module. This change introduces dedicated formatters for all major run components—including node execution, hooks, dependencies, phases, and query logs—ensuring consistent, color-coded, and aligned terminal output. Users will see standardized progress messages, execution summaries, and error reporting that align with the new tracing infrastructure, while legacy progress bar calls and direct log statements have been removed in favor of these structured events.
crates/dbt-common/src/tracing/formatters · high confidence
Introduce typed Jinja contexts and secure secret rendering for the load phase
The load phase now uses a dedicated \LoadCtx\ to provide strongly-typed Jinja variables (such as \env\_var\, \var\, and \target\) instead of generic maps. Additionally, environment variable access is now handled via a \secret\_renderer\ that replaces sensitive values with placeholders during initial rendering and resolves them securely later, preventing accidental exposure of secrets in logs or intermediate states.
crates/dbt-jinja-utils/src/phases/load · high confidence
Introduce typed run-phase Jinja context and config handling
The run phase now uses a dedicated \RunConfig\ object and typed \RunNodeCtx\ to manage Jinja context during execution. \config.get\ and \config.require\ now check the \meta\ dictionary for keys not found in the main config, emitting a deprecation warning that directs users to use \config.meta\_get\ or \config.meta\_require\ instead. The \model\ and \node\ objects are now backed by \LazyModelWrapper\, and column data types are normalized based on the adapter type (e.g., handling \alias\_types\ for contracts). Additionally, \pre\_hook\ and \post\_hook\ are correctly exposed in the run context, supporting both underscored and hyphenated YAML keys.
crates/dbt-jinja-utils/src/phases/run · high confidence
Introduces legacy warn-error option support in dbt-common
The \dbt-common\ crate now includes a new \warn\_error\_options\ module that defines legacy dbt-core event names (such as \JinjaLogWarning\, \RunResultWarning\, and various deprecation warnings) and categorizes them into supported, not-yet-supported, and will-not-support groups. This change enables the system to parse, validate, and resolve \warn-error-options\ configurations using legacy event names alongside new Fusion-specific error codes and groups, ensuring backward compatibility for users migrating their warning configurations.
_crates/dbt-common/src/warn\_error\options · high confidence
Introduces structured compile and run Jinja contexts with deferred relation support
The \dbt-jinja-utils\ crate now provides a new \compile\_and\_run\_context\ module that establishes a shared base context for both compile and run phases, replacing ad-hoc context construction. This change introduces \CompileBaseCtx\ and \OperationCtx\ types to manage Jinja environment variables consistently, including support for \--defer --state\ via the \defer\_nodes\ parameter which populates \defer\_relation\ on graph nodes. The module also exposes \MacroLookupContext\ for macro resolution, integrates \ResultStore\ for load/store operations within Jinja, and ensures \dbt\_metadata\_envs\ are correctly populated from environment variables. Additionally, it provides backward-compatible shims like \build\_operation\_context\_btreemap\ to ease migration for existing callers.
crates/dbt-jinja-utils/src/phases · high confidence
Isolated test environment and standardized profile loading
The test utilities now provide a \TestEnvGuard\ that isolates tests by clearing external environment variables, preserving only a strict list of allowed variables and prefixes (such as \RUST\\, \CARGO\\, and \DBT\_SKIP\_REMOTE\_LICENSE\) to ensure consistent test execution. Additionally, the utilities standardize how database profiles are loaded and written for tests, automatically applying target-specific schema and database overrides to the loaded configuration.
crates/dbt-test-utils/src · high confidence
Local TypeScript definitions replace external @dbt-labs/proto dependency
The web server now bundles its own TypeScript protocol buffer definitions in \crates/dbt-docs-server/web/src/proto\ instead of relying on the external \@dbt-labs/proto\ package. This change introduces generated TypeScript files for common telemetry contexts, Vortex options, and event schemas (including agent interactions, Beacon, Canvas, Copilot, and dbt Index events), ensuring the web layer has the necessary type definitions for telemetry and event handling without an external registry dependency.
crates/dbt-docs-server/web/src/proto · high confidence
Manifest schema updated to v12 with expanded node types and serialization improvements
The manifest schema has been upgraded from v10/v11 to v12, introducing support for new resource types including functions, saved queries, and operations, while removing legacy unit test structures. This change adds dedicated schema definitions for BigQuery partition configurations, defer relations, and semantic models, and aligns serialization with dbt-core by ensuring resource types are always included in node output. The update also improves manifest size and performance through streaming serialization and the omission of unset adapter-specific config fields.
crates/dbt-schemas/src/schemas/manifest · high confidence
Migrate telemetry event definitions to a new generated Protobuf module
The telemetry crate now uses a new generated module at \crates/dbt-telemetry/src/gen\ to define its event structures. This change introduces generated Rust types for Fusion-specific telemetry events, including artifact tracking (e.g., \ArtifactWritten\ with types like Manifest, Catalog, and Freshness), asset parsing (\AssetParsed\), dependency operations (\DepsAddPackage\, \DepsPackageInstalled\), and generic operations (\GenericOpExecuted\). The migration also includes updated serialization/deserialization logic for these events and a new \SeverityNumber\ enum for log severity, replacing the previous event definition approach.
crates/dbt-telemetry/src/gen · high confidence
New adapter engine module with ADBC execution and DuckDB catalog support
The adapter engine logic has been reorganized into a new \src/engine/\ module, introducing the \AdbcEngine\ trait and implementation to handle database interactions via the ADBC driver. This change adds support for DuckDB v2 catalogs (including DuckLake and Iceberg REST) through new attach statement composition, and implements widened Arrow \Utf8View\/\BinaryView\ concatenation to prevent panics on large query results. It also includes Databricks-specific features such as per-model compute routing and query tag injection, along with a \NoopConnection\ for mock/replay modes.
crates/dbt-adapter/src/engine · high confidence
New project configuration schema and config tree resolution
The project configuration parsing has been restructured to use a new \DbtProjectConfig\ tree that resolves settings by fully qualified name (FQN) rather than file path, allowing more accurate configuration inheritance for nodes like exposures, unit tests, and sources. This change introduces support for new node types including checks, skills, functions, and saved queries in the project manifest, and enforces stricter validation by restricting \target-path\ and \log-path\ to their default values (\target\ and \logs\) while disallowing \+\-prefixed resource paths in configuration trees.
crates/dbt-schemas/src/schemas/project · high confidence
New structured error handling with location tracking and lint codes
The frontend now uses a structured error system that attaches precise source locations (line, column, byte offset) to errors and exposes a comprehensive set of linting and semantic error codes (e.g., DBT02–DBT05, syntax, and schema errors). This improves error messages with actionable location details and specific rule identifiers, helping users quickly identify and fix issues in their SQL and dbt projects.
crates/dbt-frontend-common/src/error · high confidence
New structured tracing output layers for file logs, JSON compatibility, and TUI
The \dbt-common\ tracing subsystem now includes dedicated consumer layers for structured output: a \FileLogLayer\ that writes timestamped, severity-prefixed log lines to files; a \JsonCompatLayer\ that emits events in a format compatible with dbt-core structured JSON logs for backward compatibility; a \QueryLogLayer\ for dedicated SQL query logging; and a \TuiLayer\ that manages terminal progress bars and console output. These layers replace legacy direct logging calls, ensuring consistent, structured telemetry across file, JSON, and interactive terminal consumers.
crates/dbt-common/src/tracing/layers · high confidence
New tracing middleware pipeline for telemetry and error handling
The tracing subsystem in dbt-common now uses a composable middleware pipeline to process logs and spans. This introduces several behavioral changes: the \warn\_error\_options\ middleware now enforces \--warn-error\ settings and can silence or upgrade warnings to errors; the \markdown\_log\_filter\ downgrades error logs originating from Markdown files to warnings; the \parse\_error\_filter\ adjusts parsing error severity based on beta environment variables and aggregates repeated deprecation warnings from packages; the \node\_warn\_outcome\ middleware automatically marks nodes as having warnings when warn-level logs are emitted; and the \metric\_aggregator\ collects node outcome counts (success, warning, error, skipped, etc.) into invocation-level metrics.
crates/dbt-common/src/tracing/middlewares · high confidence
Redesigned install and uninstall scripts with improved reliability and package selection
The Unix (install.sh, uninstall.sh) and Windows (install.ps1, uninstall.ps1) installation scripts have been rewritten to improve robustness and user control. The Unix installer now automatically installs the jq dependency if it is missing, supports selecting specific packages via the --package flag (dbt, dbt-lsp, or all), and performs atomic binary replacement during updates to prevent corruption. The Windows installer has been refactored to support the --package flag and includes fixes to prevent overwriting existing PowerShell profiles. Both uninstall scripts now support targeted removal of specific components (dbt, dbt-lsp, dbt-db-runner) and handle cases where the main binary has been renamed.
crates/dbt-common/assets · high confidence
Redshift adapter bundled macros now support datasharing, grants, and materialized views
The bundled macros for the Redshift adapter have been updated to support datasharing features, including the use of SHOW COLUMNS, SHOW GRANTS, and SHOW SCHEMAS APIs for cross-database object discovery and permission management. Grants now support groups and roles via extended grant handling, and the catalog generation has been enhanced to include extended table statistics from SVV views. Additionally, the adapter now fully supports materialized views, including creation, alteration, and refresh operations, as well as scalar function materializations and improved incremental model strategies.
_crates/dbt-loader/src/dbt\_macro\assets/dbt-redshift · high confidence
Redshift lexer regenerated for ANTLR 4.13.2 and dbt-antlr4 v2.0
The Redshift SQL lexer has been regenerated to support the updated ANTLR 4.13.2 runtime and the dbt-antlr4 v2.0 framework. This update refreshes the generated lexer code, token definitions, and interpreter files, ensuring compatibility with the new parser infrastructure while maintaining support for Redshift-specific syntax such as POSIX regex operators and dollar-quoting.
crates/dbt-sql/dbt-lexer-redshift · high confidence
Refactored config inheritance with explicit Omissible fields and DefaultTo trait
The project configuration system now uses a new \Omissible\<T\>\ type and \DefaultTo\ trait to distinguish between fields that were not specified in YAML and those explicitly set to null. This change ensures that an explicit null value in a child config overrides a parent's value, whereas an omitted field inherits from the parent. The \\#\[derive(DefaultTo)\]\ macro automates this inheritance logic across all config structs, and specific merge semantics (like union-merge for tags or deep-merge for docs) are handled by custom implementations. This provides more predictable and explicit configuration inheritance behavior for users.
crates/dbt-schemas/src/schemas/project/configs · high confidence
Rust implementation of relation schemas and quoting defaults
The \crates/dbt-schemas/src/schemas/relations\ module has been implemented in Rust, introducing the core data structures for database relations (such as \BaseRelation\, \RelationPattern\, and \Policy\) and establishing adapter-specific quoting defaults. This change defines how identifiers, schemas, and databases are quoted for each adapter type, ensuring that Snowflake and Lake Compute leave identifiers unquoted by default while other adapters quote them, and includes tests to verify these defaults are applied correctly.
crates/dbt-schemas/src/schemas/relations · high confidence
Schema store now uses epoch-append Parquet files instead of per-entry files
The schema store in \crates/dbt-schema-store\ has replaced its legacy per-entry file storage with an epoch-append Parquet cache. Schemas are now persisted in \target/private/metadata/compile/schemas/\ for local analysis and \target/private/metadata/warehouse/schemas/\ for remote sources. This change improves performance by loading all epochs at startup and writing a new epoch file at the end of each run, while ensuring thread safety through atomic writes and providing TTL-based eviction for warehouse-fetched schemas.
crates/dbt-schema-store · high confidence
Snowflake dynamic and interactive table config handling is rewritten for accuracy and stability
The Snowflake adapter now uses a new \config\_v2\ component system to manage dynamic and interactive table settings, replacing the previous approach to prevent spurious changes and refreshes. This update introduces precise diffing for \cluster\_by\ (ignoring Snowflake's \LINEAR\ prefix and case differences), \refresh\_mode\ (defaulting to \AUTO\ and ignoring changes when set to \AUTO\), and \snowflake\_warehouse\ (case-insensitive comparison with proper quote handling). It also adds support for \copy\_grants\, \immutable\_where\, \initialize\, and \row\_access\_policy\ configurations. For interactive tables, the system now correctly handles \target\_lag\-dependent warehouse requirements, dropping inert warehouse settings on static tables to avoid unnecessary \ALTER\ statements, and validates that \transient=true\ is rejected as it is not supported for interactive tables.
crates/dbt-adapter/src/relation/snowflake/config · high confidence
Support for LakeCompute and additional database adapters in SQL parsing
The SQL parsing layer now recognizes the LakeCompute adapter, mapping it to the DuckDB dialect for tokenization and statement splitting. This change, implemented in the new \dialect.rs\ module, also ensures that other adapters like Spark, Fabric, and various generic engines (Trino, Athena, etc.) are correctly mapped to their closest sqlparser equivalents (Hive, MSSQL, or Generic), improving compatibility for these data sources.
crates/dbt-tasks-sa/src/sql · high confidence
Switch Snowflake metadata warehouse once per connection instead of per query
The Snowflake adapter now optimizes metadata queries by switching to a dedicated metadata warehouse only once when a physical connection is established, rather than re-issuing the switch before and after every individual query. This change reduces connection overhead and improves performance for batch metadata operations, such as source freshness checks and catalog downloads, by ensuring the warehouse context is maintained for the lifetime of the connection within a worker thread.
crates/dbt-adapter/src/metadata/snowflake · high confidence
Typed Jinja context structs replace BTreeMap-based context construction
The Jinja context layer now uses composable, typed structs (such as LoadCtx, ResolveBaseCtx, CompileBaseCtx, and RunNodeCtx) instead of the historical pattern of constructing per-phase BTreeMap\<String, MinijinjaValue\> maps. This change ensures that every value available to Jinja templates across the load, resolve, compile, and run phases is defined by a specific struct whose field names drive the Jinja keys via serde serialization. Object identity for callable Jinja values (like ref, source, and config) is preserved through a new JinjaObject wrapper that leverages minijinja's VALUE\_HANDLES round-trip, allowing these callables to survive serialization intact. Additionally, a lightweight AdapterHandle trait has been introduced in a new dbt-handles crate to share dyn-trait handles between dbt-jinja-ctx and adapter crates without pulling in heavy dependencies like arrow or parquet.
crates/dbt-jinja-ctx · high confidence
UI components migrated from Sourdough to Radix and Lucide icons
The UI component library in the docs v2 interface has been rebuilt using Radix primitives and lucide-react icons, replacing the previous Sourdough-based implementation. This migration updates core elements including Button, Badge, Card, Input, Table, and Collapsible, while also introducing a new Shiki-based CodeSnippet for syntax highlighting and a non-virtualized PaginatedFileTree. Users will see consistent styling and behavior across these controls, with improved accessibility and performance, as the underlying UI foundation shifts to the Radix ecosystem.
crates/dbt-docs-server/web/src/components/ui · high confidence
Updated BigQuery and Trino lexer generated files
The generated lexer source files for BigQuery and Trino have been regenerated, updating the token definitions and internal representations to match the current grammar specifications. This ensures the SQL parsers correctly recognize keywords and syntax constructs for these dialects.
crates/dbt-sql/dbt-lexer-bigquery · medium confidence
Updated Databricks SQL lexer to ANTLR 4.13.2
The Databricks SQL lexer has been regenerated using ANTLR 4.13.2, introducing updated token definitions and internal structures for parsing Databricks SQL dialects. This change ensures the lexer remains compatible with the latest grammar specifications and improves the underlying parsing infrastructure for SQL tokenization.
crates/dbt-sql/dbt-lexer-databricks · high confidence
Updated Snowflake lexer to use dbt-antlr4 v2.0
The Snowflake SQL lexer has been regenerated using the dbt-antlr4 library version 2.0 (specifically targeting ANTLR 4.13.2). This update replaces the previous lexer implementation, ensuring that token definitions and parsing logic for Snowflake-specific syntax are aligned with the new ANTLR runtime. Users benefit from consistent token handling for Snowflake keywords and operators within the SQL parsing pipeline.
crates/dbt-sql/dbt-lexer-snowflake · high confidence
Updated syntax highlighting assets for ABAP, ActionScript 3, and Ada
The web distribution now includes updated syntax highlighting definition files for ABAP, ActionScript 3, and Ada. These changes ensure that code snippets within the documentation interface are correctly parsed and displayed with proper language-specific styling and structure.
crates/dbt-docs-server/web/dist · high confidence
Vendored design tokens and Tailwind preset for offline theming
The dbt-docs-server web styles now include a vendored copy of the Biga design tokens (in tokens.css and tokens.js) and a local Tailwind preset (sourdough-preset.cjs) that references these tokens. This change removes the dependency on the private @dbt-labs/biga package, allowing the documentation site to be styled and customized using only local CSS custom properties without requiring external private dependencies.
crates/dbt-docs-server/web/src/styles · high confidence
Verticalized metadata adapter with strategy-based freshness and relation fetching
The metadata layer in the dbt adapter has been restructured to support per-database strategies for fetching relation metadata and checking source freshness. Users benefit from improved handling of source freshness overrides (via \loaded\_at\_field\ or \loaded\_at\_query\) and more robust relation lookups that correctly handle unresolvable views and database-specific SQLSTATEs. This change introduces a \MetadataAdapter\ trait with strategy patterns for listing relations and schemas, allowing the adapter to delegate specific database operations (like \get\_relation\ and freshness checks) to specialized implementations for Snowflake, BigQuery, Databricks, and others, while centralizing common logic like timestamp parsing and Jinja-free template rendering.
crates/dbt-adapter/src/metadata · high confidence
dbt docs serve now serves a static SPA with client-side data queries
The dbt docs server has been refactored to serve the dbt docs v2 interface as a static Single Page Application (SPA) rather than providing a REST API. The server now delivers the SPA bundle (either from a generated site directory or an embedded fallback) and serves the underlying data as Parquet files, which the browser queries directly using DuckDB-WASM. This change removes the previous server-side API endpoints, meaning all data processing and rendering logic now runs client-side. The server also includes improved asset handling, such as secure path resolution to prevent directory traversal, and graceful shutdown support for cleaner process termination.
crates/dbt-docs-server/src · high confidence
dbt-docs-server now exports a static site queried by DuckDB-WASM
The export module in crates/dbt-docs-server/src/export has been rewritten to generate a static site where the browser loads DuckDB-WASM from a CDN and queries parquet artifacts directly, moving computation from the server to the client. This change introduces a bootstrap mechanism (bootstrap.rs) that inlines build-scoped metadata (such as dbt version, distribution, and telemetry consent) into index.html, and enforces strict validation by refusing to export if the information schema is missing or contains no resources. The export also handles copying the versioned information schema directory when the output location differs from the source, ensuring the static site remains self-contained.
crates/dbt-docs-server/src/export · high confidence
Fixes
53 commits (29 fixes) fixing crates/dbt-adapter/src/sql
A fix in crates/dbt-adapter/src/sql — 53 commits (29 fixs), 6 files.
crates/dbt-adapter/src/sql · medium confidence · unverified
Fix microbatch lookback off-by-one error
Corrected an off-by-one error in the microbatch incremental strategy where a lookback value of N would only yield N batches instead of the expected N+1. This fix ensures that when a checkpoint sits exactly on a batch boundary, the system correctly includes the current batch in the reprocessing window, aligning the behavior with the intended dbt-core pattern for batch window calculation.
crates/dbt-tasks-sa/src/microbatch · high confidence
Test coverage
Added MetricFlow test suite and test infrastructure; Added Snowflake timeout reproduction test project; Added golden tests for compile and parse commands; Added hello\_world test fixture for dbt integration tests; Added integration tests for ADBC driver backends; Added integration tests for dbt-sa-cli commands; Added macro integration tests for dbt-loader; Added macro test harness for dbt unit testing; Added mock adapter tests for Snowflake type and quoting; Added regression and snapshot tests for DuckDB catalog attachment and Snowflake client cancellation; Added snapshot tests for DuckDB catalog ATTACH generation; Added test coverage for compile, parse, and static analysis commands; Added test data for dbt-csv parser edge cases; Added test fixtures for dbt-docs-server resource details; Added tests for Snowflake and Databricks materializations; Added tests for dbt-profile resolution and metadata extraction; Added tests for dbt-test-utils task assertions; Added unit tests for the tracing subsystem; Updated snapshot tests for Jinja environment builder.
Dependencies
dbt Core 2.0.5 workspace manifest and dependency configuration
The root \Cargo.toml\ establishes the dbt Core 2.0.5 workspace, defining the Rust 2024 edition and a comprehensive set of internal crates. It configures workspace-level dependencies for the Arrow ecosystem (version 56.0.0) and DataFusion, while patching \ring\ to 0.17.14 from a fork to resolve a build.rs issue and overriding \sqlparser\ to version 0.58.0 via a fork. Individual crate manifests (e.g., \dbt-adbc\, \dbt-auth\, \dbt-common\) are introduced, specifying their dependencies on these workspace-pinned libraries.
(dependencies) · high confidence
Housekeeping
Placeholder added for new library directory
An empty .keepme file was added to the lib directory to ensure the folder is tracked by version control.
lib · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 70 → 65 (-5.0)
- Rubric changed (rubric-2026.09.8 → rubric-2026.09.16) — scores are not directly comparable.
Lenses
- Code Health 78 → 78 (-0.0)
- Architecture 98 → 94 (-4.4)
- Maturity 78 → 78 (-0.1)
- Readiness 67 → 57 (-10.7)
- Security 68 → 71 (+3.5)
- Domain Modelling 100 → 100 (+0.4)
- Event-Driven 80 → 80 (+0.0)
- Event Sourcing 100 → 100 (+0.0)
- Accessibility 70 → 70 (+0.0)
- Performance 70 (new)
Resolved (162)
- Change coupling: legacy.rs ↔ codes.rs (crates/dbt-common/src/warn_error_options/legacy.rs)
- ClassTooLong: Environment (crates/dbt-jinja/minijinja-py/src/environment.rs)
- Documentation: no installation or build instructions (crates/dbt-ci/README.md)
- Documentation: no installation or build instructions (crates/dbt-jinja/fuzz/README.md)
- Duplicated block (10 lines × 2) (crates/dbt-dist/src/python.rs)
- Duplicated block (11 lines × 3) (crates/dbt-parser/src/resolve/resolve_models.rs)
- Duplicated block (11–14 lines × 2) (crates/dbt-deps/src/steps/load_package_lock.rs)
- Duplicated block (11–14 lines × 4) (crates/dbt-adapter/src/metadata/bigquery/mod.rs)
- Duplicated block (12 lines × 2) (crates/dbt-parser/src/resolve/resolve_analyses.rs)
- Duplicated block (12–14 lines × 2) (crates/dbt-index-core/src/parquet.rs)
- Duplicated block (13 lines × 2) (crates/dbt-adapter/src/metadata/databricks/mod.rs)
- Duplicated block (13–14 lines × 2) (crates/dbt-jinja-utils/src/phases/run/run_node_context.rs)
- Duplicated block (13–14 lines × 2) (crates/dbt-parser/src/resolve/resolve_analyses.rs)
- Duplicated block (13–14 lines × 6) (crates/dbt-parser/src/resolve/resolve_exposures.rs)
- Duplicated block (13–15 lines × 2) (crates/dbt-metadata/src/partial_parse.rs)
- Duplicated block (13–28 lines × 2) (crates/dbt-parser/src/resolve/resolve_models.rs)
- Duplicated block (14 lines × 4) (crates/dbt-parser/src/resolve/resolve_groups.rs)
- Duplicated block (15 lines × 2) (crates/dbt-jinja/minijinja/src/compiler/parser.rs)
- Duplicated block (15 lines × 3) (crates/dbt-jinja/minijinja/src/compiler/parser.rs)
- Duplicated block (15 lines × 6) (crates/dbt-schemas/src/schemas/manifest/manifest_nodes.rs)
- …and 142 more
New (166)
- BigqueryMetadataAdapter::list_relations_schemas_inner (cognitive 16) (crates/dbt-adapter/src/metadata/bigquery/mod.rs)
- CatalogRegistry::validate_semantic (cyclomatic 16) (crates/dbt-schemas/src/schemas/dbt_catalogs_v2.rs)
- CatalogRegistry::validate_structural (cognitive 21) (crates/dbt-schemas/src/schemas/dbt_catalogs_v2.rs)
- Change coupling: tests.rs ↔ sql_types.rs (crates/dbt-adapter-sql/src/types/tests.rs)
- Dependency hygiene PARTLY measured — Cargo dependencies read, no committed lock to grade for currency
- Documentation: no installation or build instructions (README.md)
- Documentation: no installation or build instructions (crates/dbt-jinja/minijinja-embed/README.md)
- Duplicated block (10 lines × 2) (crates/dbt-schemas/src/schemas/project/configs/common.rs)
- Duplicated block (10–12 lines × 2) (crates/dbt-metadata/src/partial_parse.rs)
- Duplicated block (10–12 lines × 2) (crates/dbt-parser/src/resolve/resolve_models.rs)
- Duplicated block (11 lines × 2) (crates/dbt-adapter/src/relation/databricks/config/components/column_tags.rs)
- Duplicated block (11 lines × 5) (crates/dbt-adapter/src/metadata/bigquery/mod.rs)
- Duplicated block (11 lines × 6) (crates/dbt-schemas/src/schemas/manifest/manifest_nodes.rs)
- Duplicated block (12 lines × 4) (crates/dbt-jinja/minijinja/src/compiler/parser.rs)
- Duplicated block (12 lines × 4) (crates/dbt-schemas/src/schemas/manifest/manifest_nodes.rs)
- Duplicated block (12 lines × 5) (crates/dbt-schemas/src/schemas/manifest/manifest_nodes.rs)
- Duplicated block (12–13 lines × 2) (crates/dbt-jinja-utils/src/phases/run/run_node_context.rs)
- Duplicated block (12–14 lines × 4) (crates/dbt-adapter/src/metadata/bigquery/mod.rs)
- Duplicated block (13 lines × 2) (crates/dbt-jinja/minijinja/src/compiler/parser.rs)
- Duplicated block (13 lines × 2) (crates/dbt-jinja/minijinja/src/compiler/parser.rs)
- …and 146 more
Changes since last survey
- 110 commits — 63 feature/other, 47 fixes
By area
- (root) — 21 commits
- crates/dbt-adapter — 17 commits
- .changes/unreleased — 12 commits
- crates/dbt-parser — 8 commits
- crates/dbt-adbc — 5 commits
- crates/dbt-loader — 4 commits
- crates/dbt-state — 4 commits
- crates/dbt-common — 3 commits
- crates/dbt-schemas — 3 commits
- crates/dbt-tasks-core — 3 commits
- crates/dbt-adapter-engine — 2 commits
- crates/dbt-deps — 2 commits
- crates/dbt-docs-server — 2 commits
- crates/dbt-index-core — 2 commits
- crates/dbt-main — 2 commits
- crates/proto-rust — 2 commits
- .github/workflows — 1 commit
- crates/adbc-record-replay — 1 commit
- crates/dbt-adapter-sql — 1 commit
- crates/dbt-ci — 1 commit
Notable commits
- fix: Fix README logo again
- fix: Fix broken embedded images
- fix: Revert "feat(state): enable compare_unrendered_code by default"
- fix: Sidecar: Fixed interpolated values for getting relation info
- fix: [dbt-adapter] Fix relations download progress bar stuck at 0/N
- fix: fix
- fix: fix(adapter): handle BigQuery partition field mismatches
- fix: fix(adapters/bigquery): stop erroring on duplicate compute_region when dataproc_region is also set
- fix: fix(bigquery): apply connection priority and maximum_bytes_billed to query jobs
- fix: fix(bigquery): render STRUCT and ARRAY types in snapshot ALTER ADD COLUMN
- fix: fix(databricks): add unit test coverage for column tags
- fix: fix(databricks): emit only changed keys in relation-tag SET TAGS diffs
- fix: fix(databricks): harden redact_credentials
- fix: fix(dbt-adapter): catalogs-v2 bare-string dispatch panic + lakecompute test-node reachability gap
- fix: fix(dbt-compute): stop skipping the debug propagation check when no CLD is declared
- fix: fix(dbt-index): commit a rebuilt index only once every table is written
- fix: fix(dbt-parser): avoid duplicate AST parse in parse_unrendered_config
- fix: fix(dbt-parser): avoid duplicate AST parse in static source() discovery
- fix: fix(dbt-parser): set tags on operation nodes so v1 can discover hooks via --use-v2-parser
- fix: fix(dbt-state): send Redshift case-sensitive dialect setting to server
- …and 90 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
dbt-labs/dbt-core was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 29 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 2420652404fedb1eb25f1d8523ec9cf44c9a5407 — the exact code this score is about.
- Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-d46da229e3fd.