v0.2.56
ONE CASE ON SNOWFLAKE
Found in the founder's first real deployment, hours after 0.2.55: seven federation models landed their tables on Snowflake and then every post-hook failed with 002003 — on the very tables that had just landed — while the staging root printed the same refusal twelve times. The disease was a split personality around identifier case: a mixed-case profile schema (BRONZE_trial) rode to the bulk loader verbatim and landed quoted-and-case-preserved, while every unquoted SQL surface — post-hooks' {{ this }}, staging, the DVT stage — upfolded straight past it, Snowflake-style. The read side of this class was fixed in the ring (retract speaks every spelling); the landing convention itself was the missing half. Now every object DVT names on Snowflake upfolds — the same one-convention-per-engine rule Oracle's upfold and Trino's downfold already follow — proven live against a real Snowflake account with the exact failing shape: mixed-case schema, update-{{ this }} hook, landed, hook green, idempotent, zero staging warnings.
FIXED
- ▸Post-hooks on Snowflake resolve their {{ this }}: the landed spelling and the hook's unquoted reference are now the same name. Previously a mixed-case schema meant the table landed quoted while the hook upfolded — 002003 on a table that existed, seven times out of seven in the run that found it.
- ▸DVT's own ensure-schema statement upfolds inside its quotes — it was planting the quoted mixed-case schema that every later unquoted reference missed.
- ▸The per-run staging root ensures its schema before creating the stage, so a first run against a fresh schema no longer warns and falls back to shared staging — the warning that printed twelve times in one run is gone, and each run keeps its own separable staging.
- ▸The branded DVT_STAGING stage reference upfolds on every auth method — sling's own REMOVE no longer upfolds past the stage it was handed.
CHANGED
- ▸Snowflake joins Oracle (upfold) and Trino (downfold) in the one-casing-convention-per-engine rule, decided at DVT's single naming home and pinned by the home's tests. Write profile schemas in any case; they land as their uppercase selves and every lane agrees.
Get it: pip install dvt-core==0.2.56 · wheels on PyPI for macOS (arm64 + x86_64) and Linux x86_64, Python 3.10–3.14 — the full platform matrix.