"Can I rename this column?" is a five-second question with a five-hour answer: walk the lineage graph, find every downstream model, dashboard, and export that touches it, figure out which ones actually break, and write it up for the people affected.
Tier: Core · Workflow area: Docs, lineage & governance
Lineage tools give you the graph; they do not give you the judgement or the write-up. This playbook feeds column-level lineage plus a proposed change to an LLM and gets back an affected-consumers brief and a migration checklist a human can verify and send.
For a column with one downstream reference, just grep — the brief costs more than the fix.
Export the lineage, don't describe it. The LLM must reason over the real graph, not your memory of it. From dbt:
# Direct + transitive children of the model being changed
dbt ls --select fct_orders+ --output json > /tmp/downstream.json
For column-level precision, export from your catalog or observability tool (Monte Carlo, Atlan, dbt Explorer) — column lineage is what separates "37 downstream models" from "4 models that actually select this column".
State the change precisely, then prompt for the brief.
Proposed change: in model fct_orders, rename column `order_total` to
`order_total_gross_usd` and change type from FLOAT to NUMERIC(18,2).
Attached: (1) column-level lineage export for fct_orders.order_total,
(2) the model SQL, (3) list of BI dashboards mapped to downstream models.
Produce an impact-analysis brief with these sections:
1. Directly affected consumers — models/dashboards that reference the column
BY NAME, each with the exact file/line or dashboard field.
2. Indirectly affected — consumers of derived columns; explain the derivation chain.
3. Not affected — downstream nodes in the lineage that do NOT touch this column
(so reviewers can confirm your reading of the graph).
4. Breakage type per consumer: hard failure, silent semantic change, or cosmetic.
5. Migration checklist in dependency order, with a backwards-compatible
transition step (view alias or dual-write) if any consumer cannot deploy same-day.
Only cite consumers present in the attached lineage. If the lineage seems
incomplete (e.g. dashboards not mapped), say so explicitly.
Expected output: a structured brief where every claimed consumer has a citation into your export, plus a checklist ending with "remove the compatibility alias".
Verify the two failure directions. The brief can be wrong two ways: consumers it invented, and consumers it missed. Check invented ones by grepping each citation (grep -rn "order_total" models/ | grep -v order_total_gross); check missed ones by diffing the brief's consumer list against the raw lineage export line count. The "Not affected" section exists precisely so you can spot-check the model's reading of the graph.
Dry-run the change on a branch. Apply the rename with a compatibility view, run dbt build --select fct_orders+ (state-based selection in CI is even better), and compare failures against the brief's "hard failure" list. Every mismatch is either a lineage gap or a reasoning error — both worth knowing before you send the brief.
Send the brief, keep the checklist. The consumer-facing sections go to affected teams; the migration checklist becomes the PR description. Because each step cites real files, reviewers can approve on evidence rather than trust.
Ask for the "Not affected" section every time. It is the cheapest hallucination detector available — a model that misread the lineage will misplace nodes there, and a reviewer spots that in seconds.
SELECT count(*) FROM x WHERE order_total != CAST(order_total AS NUMERIC(18,2)).SELECT * won't fail on a rename but silently changes its output schema. Insist on the breakage-type classification per consumer.In client engagements, lineage exports often reveal the client's entire data estate — treat the export itself as confidential data. Strip dashboard names and business terms that identify the client before sending anything to an external API, or run the synthesis step on an approved/self-hosted model and keep the raw export inside the client's environment. Deliver the brief on client letterhead conventions (their template, their ticket system) and attach the dry-run evidence; consultancies that show the failure-list-matches-brief verification step convert this from "AI wrote a doc" into an auditable impact assessment the client can reuse.