v0.2.50
ONE ENVIRONMENT, EIGHTEEN ENGINES
The simplification release. Everything DVT runs on now lives in ONE environment — the per-engine private runtimes are gone, and with them the entire class of drift, provenance and missing-adapter failures they bred. Eighteen engines are supported out of one install: Postgres, Redshift, Snowflake, BigQuery, Athena, Databricks, DuckDB (and MotherDuck), Trino, ClickHouse, Oracle, SQL Server, Fabric, SQLite, StarRocks, Exasol, MySQL, MySQL 5.7 and MariaDB — every one validated against its real engine. dvt sync is now one install with a collision guard: it sets up the engine core, every adapter, your drivers and the Sling engine, self-heals a corrupted download, and removes conflicting packages with a stated reason. On top of the simpler engine room: seeds honor selection exactly as you'd expect — graph selectors included — --fail-fast stops a run at the first failure, the health surface guards every scaffolded setting in dvt_project.yml, and retract tells the truth about what it dropped, where it actually landed.
ADDED
- ▸--fail-fast / -x on dvt run and dvt build: the first failure stops all unstarted work across every phase — seeds, upstream models, federation waves, and the closing engine phase. Whatever is already executing finishes, the tally reports skipped work honestly, and the run exits nonzero.
- ▸Seed selection, complete: --select and --exclude on dvt seed and on the build's seed phase, with graph selectors resolved exactly — dvt build --select +my_model pulls the model's seed ancestors into the load, and nothing else.
- ▸Config health, generalized: every scaffolded dvt_project.yml setting (federation_direct, suite_port) must exist in the file. A deleted key flags the project unhealthy in dvt config-checkup; dvt config-fix restores it with its explanatory comment and a .bak of what it changed.
CHANGED
- ▸ONE environment (the architecture change everything else rides on): a single engine core carrying all eighteen adapters replaces the per-engine private runtimes. No more registry, no more per-engine binaries, no drift to detect — an adapter either imports or dvt sync installs it.
- ▸The MySQL family returns: MySQL, MySQL 5.7 and MariaDB are supported engines again, on the current engine core, with the connection mode that ends the crash class that forced their removal.
- ▸dvt sync self-heals: a truncated Sling engine download (the source of an infamous silent failure) is detected by actually executing the binary, deleted, and re-fetched.
- ▸The suite port comes from dvt_project.yml and nowhere else: no sticky records, no port scanning, no dynamic allocation. An occupied port is a hard error naming the holder — your API URLs never move. Run multiple projects by giving each its own suite_port.
- ▸clean-bak-files sweeps the entire project tree — any .bak file, every folder, the root included.
- ▸Seeds keep their two enhancements over the standard behavior — Sling bulk loading for large files, and csv / parquet / json / jsonl as first-class seed formats — while matching standard selection semantics exactly.
FIXED
- ▸Retract drops relations where they actually LANDED, not where the project file points: the materialization ledger's recorded schema is the authority, so a relation that landed in an unexpected schema is found, dropped and cleared instead of surviving every retract behind a green no-op. An empty retract says "Nothing to drop" and why.
- ▸Engine-true schema defaults in the connection layer: DuckDB and SQLite default to main, ClickHouse addresses database.table, BigQuery carries its dataset — no more relations silently landing in a phantom public schema on engines that don't have one.
- ▸A fresh project's first build no longer fails on a missing target schema — the seed lane creates it (engines where schemas are users excepted).
- ▸DuckDB targets with a non-default schema no longer fail during staged loads.
- ▸A failed seed under --fail-fast aborts the build; without it, dependents of the failed seed are skipped by name and everything independent still runs.
Get it: pip install dvt-core==0.2.50 · wheels on PyPI for macOS (arm64 + x86_64) and Linux x86_64, Python 3.10–3.14 — the full platform matrix.