A contract for the consumers dbt can't see
Model contracts stop at the dbt boundary. Your reverse-ETL job, your ML pipeline and the team next door have nothing.
dbt model contracts are good at what they do and they end where dbt ends. The reverse-ETL job syncing your mart to Salesforce, the ML pipeline reading it, the team whose service consumes it — none of them can read a dbt contract, so what they rely on is an agreement nobody wrote down. This recipe publishes one: govern what your marts guarantee, then export it as an ODCS v3.1.0 contract those consumers can actually hold you to. And because every re-audit is recorded, you keep standing evidence the contract still matches what ships — instead of a document that was true the day it was signed. Your workspace opens with the marts grid, ownership columns and the consumer register already configured.