ImportEarly access
dbt logo

Publish governed meaning into dbt

Meaning has nowhere to live in dbt. Govern it once, and let it reach the warehouse column comment.

Start with this recipe →

No warehouse credential. No dbt Cloud token. Read-only.

For agents, no sign-in: /recipe/publication-contract.json · /recipe/publication-contract.md

dbt emits one artifact class — tables in one warehouse — and gives governed meaning nowhere to live: description is free text, meta is unvalidated, and accepted_values is a string list duplicated into every model that touches the field. This recipe closes that loop. Import the artifacts dbt already produces, govern meaning on top (descriptions, a named vocabulary behind an enum, an ontology term a human binds), then generate the contracts back as one property file per model, colocated beside each model's own .sql. One governed vocabulary generates accepted_values in every model that uses that field; a bound ontology term rides out both structurally (meta.coremodels.maps_to) and in the column description, which persist_docs carries into the warehouse column comment. Generation is deterministic, so a re-run with no meaning change is an empty diff. CoreModels returns files — your own PR flow lands them.

What you do

  1. Govern the meaning in the grid; generate one property file per model, colocated beside its .sql.
  2. The bound term rides in the column description (the field persist_docs pushes to the warehouse comment) and in meta.
  3. Every run hands you a loss report. No meaning change means no diff.