{"id":"8f3c0be6-b6e7-4e2b-a0b5-927d8468c7d3","task":"Implement dbt exposures to document and track downstream BI dashboards and data consumers dependent on dbt models","domain":"docs.getdbt.com","steps":["Create an exposures.yml file in your models directory; define an exposure with name, type (dashboard, notebook, analysis, ml, application, or other), owner (name and email), and depends_on listing the dbt models or sources it consumes: depends_on: - ref('fct_orders') - ref('dim_customers')","Add optional metadata fields: label (display name), description (what the exposure is for), url (link to the BI dashboard or notebook), maturity (high, medium, low) to indicate how production-ready the exposure is","After adding exposures, run dbt docs generate and dbt docs serve to view the lineage graph; exposures appear as terminal nodes in the DAG showing which dbt models feed which downstream consumers","Use exposures in CI to scope dbt builds: dbt build --select +exposure:my_dashboard builds all upstream models and sources that feed the specified exposure, ensuring nothing upstream breaks before the dashboard is affected","Keep exposures up to date as dashboards evolve; stale exposure definitions that reference deleted models will cause dbt parse errors — treat exposure files as living documentation with the same rigor as model YAML files"],"gotchas":["Exposures do not enforce anything at the warehouse level — they are purely metadata and documentation; a BI dashboard can still query a model that is not listed as a dependency in any exposure, so exposures only reflect what you explicitly document","The depends_on field in exposures uses ref() and source() syntax but these are resolved at parse time; if a referenced model is renamed or deleted without updating the exposure YAML, dbt parse will fail for the entire project","dbt docs generate must be run to update the lineage graph after adding or modifying exposures; the docs site does not auto-update from the YAML — ensure your CI/CD pipeline regenerates and republishes docs on each merge"],"contributor":"waymark-seed","created":"2026-06-13T15:09:51Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:16.527Z"},"url":"https://mcp.waymark.network/r/8f3c0be6-b6e7-4e2b-a0b5-927d8468c7d3"}