Skip to content

Own the SQLMesh start date here and move dbt to 1.12 - #10

Merged
cnstlungu merged 1 commit into
mainfrom
dbt-1.12-and-sqlmesh-start-date
Sep 18, 2026
Merged

cnstlungu merged 1 commit into
mainfrom
dbt-1.12-and-sqlmesh-start-date

Conversation

@cnstlungu

Copy link
Copy Markdown
Owner

Why

Two things, both prompted by the dbt v2 release.

The start date. SQLMesh refuses to load a dbt project without a backfill start date, and it only looks for one in the models: block of dbt_project.yml. The shared datamart carried +start: Jan 1 2000 there purely for this stack — it reads as a stray to anyone working on the model, and the improvement plan had it down for deletion. dbt v2 settles it: +start is an unrecognised key and a hard parse error.

So the start date moves here, as model_defaults on sqlmesh_config, which is where a consumer-specific setting belongs.

dbt 1.10 is deprecated as of the v2 release. SQLMesh declares dbt-core<2, so 1.12 needs nothing else from us.

Merge order

This is safe to merge before the datamart drops +start: SQLMesh takes the config.py value whether or not dbt_project.yml still has one. It has to merge before DATAMART_REF moves to a tag without it.

Verification

Ran sqlmesh plan against the datamart branch that drops +start, on dbt-core 1.12.5 + dbt-duckdb 1.11.0:

  • 23 models loaded, plan applied, all audits passed
  • sources still resolve to READ_PARQUET(...) — the datamart branch declares external_location under both config and config.meta so v2 and SQLMesh each find it
  • also verified with +start still present, which is the merge-order case above

duckdb stays at 1.4.4 so the warehouse remains readable by Superset.

🤖 Generated with Claude Code

SQLMesh refuses to load a dbt project without a backfill start date, and it
only looks in the `models:` block of dbt_project.yml. The datamart carried
`+start: Jan 1 2000` there purely for this stack - dbt v2 rejects it as an
unrecognised key, and it reads as a stray to anyone working on the shared
model. It moves here, as model_defaults on sqlmesh_config, which is where a
consumer-specific setting belongs.

This is safe to merge before the datamart drops `+start`: SQLMesh takes the
config.py value whether or not dbt_project.yml still has one. It has to
merge before DATAMART_REF moves to a tag without it.

dbt-core 1.10 is also deprecated as of the v2 release. SQLMesh declares
dbt-core<2, so 1.12.5 with dbt-duckdb 1.11.0 is fine; verified by running
sqlmesh plan against the datamart branch that drops `+start` (23 models,
audits passed).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@cnstlungu
cnstlungu merged commit 315b89b into main Sep 18, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant