← All Releases
v0.2.15
LINES THAT TELL THE TRUTH
Every result line now carries its own story — rows inserted in green, coercion notes in yellow, no warning wall — and errors finally say what actually broke. Underneath: three engine fixes surfaced by real pipeline reshaping, and environments that heal their own Rosetta relics.
CHANGED
- ▸Result lines carry their own tags: [N rows inserted] in green on every success, and — for coerced models — [ran as f_table instead of view] in yellow, replacing the upfront warning wall entirely.
- ▸Sling failures now surface the lines that explain them, with the log noise stripped; a crash before any output is reported as exactly that. The log formatter can no longer fabricate 'DECOMPOSE: ? sources identified' out of unrelated messages.
FIXED
- ▸{{ this }} reads where the loader landed: jinja incrementals with an explicit target= probed the manifest schema instead of the override output's profile schema — invisible when the two coincided, fatal the moment they didn't.
- ▸Ephemeral dependencies resolve through: dbt inlines ephemerals as CTEs at compile time, and DVT's relation resolver now substitutes their upstreams exactly as dbt compiled them — plain ephemerals and coercion-promoted ones alike.
- ▸Predicate pushdown learned scope discipline: a filter over a CTE (a ROW_NUMBER() alias like rn = 1) is no longer pushed onto the base table where the column doesn't exist. Unqualified predicates push only when their own SELECT reads the relation's table directly.
- ▸Isolated environments self-heal on Apple Silicon: envs created before the native-only rule (x86_64 interpreters hunting Intel Homebrew paths) are detected by their binary headers and rebuilt natively on the next dvt sync.
Get it: pip install dvt-core==0.2.15 · wheels on PyPI for macOS (arm64 + x86_64) and Linux, Python 3.10–3.12.