Know your PR's blast radius before you merge.

A developer renames a column in a dbt model. It merges. Forty hours later three dashboards are blank and a churn model has been scoring on nulls all week. Everything needed to prevent that already sat in DataHub — nobody looked, because looking meant leaving the pull request.

Interactive · real lineage from DataHub

Pick a column. Watch what breaks.

Every column below is a real field on order_details, and every edge is real lineage exported from a DataHub instance. Twenty-five assets sit downstream — but a given column feeds only some of them. That difference is the whole point.

Columns · 55

none
0
affected
ruled out
0
charts
owners
Treat the change as
reads a selected column unaffected hover any asset for owners and detail
    Metadata-aware code generation

    Then it writes the migration.

    One downstream model in the demo repository reads order_status. Faultline grounds the fix in that model's real SQL and the schema DataHub holds, then checks its own work.

    --- a/models/marts/order_history.sql
    +++ b/models/marts/order_history.sql
    @@ -5,7 +5,7 @@
     select
         o.order_id,
         o.customer_id,
    -    o.order_status,
    +    o.order_state as order_status,
         o.order_total,
         current_timestamp() as as_of_date
     from {{ ref('order_details') }} as o

    Verified — re-parsed with the same SQL parser that found the break, confirming it no longer reads a removed column.

    It reads the renamed upstream column and aliases it back to the old name, so this model's own output contract — and everything downstream of it — is unchanged. A patch that still read a removed column would be reported unverified rather than shipped.

    The pull request in the demo repo
    ChangeColumnRead downstream by
    droppedcust_last_name15 assets
    renamedcust_emailcustomer_email_address15 assets
    renamedorder_statusorder_state17 assets
    retyped DOUBLEDECIMAL(10, 2)order_total21 assets

    It gives back to the graph

    The assessment is written into DataHub as a document on the model, and all 21 affected assets are tagged — so the next person who opens one sees the pending risk without knowing this tool exists.

    Nothing is invented

    Lineage, ownership, PII tags and consumer SQL all come from DataHub through the MCP Server. The severity is deterministic and shows its reasoning; only the migration is generated.