Faultline
See what your dbt change breaks — before you merge it.
Faultline is a static, warehouse-free impact analysis tool for dbt pull requests. It reads
two manifest.json snapshots (the base branch and your PR branch) and tells you exactly
which downstream models and columns your change will break — posted right on the pull request.
It never connects to your warehouse. Your data never leaves CI.
Why
A one-line change to a dbt model — renaming or removing a column — can silently break downstream models and the dashboards built on them. You usually find out after it ships. Faultline catches it at review time, inside the pull request, before it merges.
Install
pip install b9x-faultline
Use it locally
# 1. Build the manifest from your main branch
git checkout main && dbt compile && cp target/manifest.json base.json
# 2. Build the manifest from your PR branch
git checkout my-branch && dbt compile && cp target/manifest.json head.json
# 3. See the impact
faultline --base base.json --head head.json
Add --fail-on-break to make it exit with an error when a breaking change is found
(useful in CI). Use --dialect snowflake (or bigquery, postgres, …) to match your
warehouse's SQL.
Use it in GitHub Actions
Copy .github/workflows/faultline.yml into your dbt repo. On every pull request it compiles
both branches, runs Faultline, and posts the impact report as a comment — failing the check
if a breaking change is found.
What it reports
| Signal | Meaning |
|---|---|
| 🔴 breaking | A downstream model references a column you removed. |
| 🟡 warning | A downstream model does SELECT * from the changed model, so its output schema shifts. |
| ⚪ info | Depends on the change but doesn't touch the affected columns. |
How it works
Faultline parses your dbt SQL with sqlglot — it reads the code, it never runs it. That's why it needs no warehouse, no credentials, and no access to your data. It builds the downstream dependency graph from your manifest, then checks each affected model's columns against what changed.
Honest limits
This is static analysis. On very complex, multi-hop SQL it will sometimes mark a downstream model as info — review this rather than a definitive breaking. It degrades safely — it surfaces the affected model for review and never goes silent — but deep column-level tracing across many layers is an area we're actively improving.
License
MIT — see LICENSE.
Contact
Built by B9X · admin@b9x.ai · https://github.com/b9x-ai/faultline
Metadata
Release files for b9x-faultline 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| b9x_faultline-0.1.0.tar.gz | 7.9 kB | Without provenance | Details for b9x_faultline-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| b9x_faultline-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for b9x_faultline-0.1.0-py3-none-any.whl |
Total release size: 16.0 kB
Release files / b9x_faultline-0.1.0.tar.gz
| Download URL | b9x_faultline-0.1.0.tar.gz |
|---|---|
| Size | 7.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8470a28e266f0f96556a306013581ce1ca541613412044ee546bb5c6c21b0d35
|
|
BLAKE2b-256 checksum How to use checksums |
c3383d764ddd8ac5b53e7b699243097ae8d1be82c7302e3651a36c8167fb6c01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.0
|
Release files / b9x_faultline-0.1.0-py3-none-any.whl
| Download URL | b9x_faultline-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
45f0ee8cd8bb3e680c32f3d599db8daf9aeb19b2723c3f191be0f66a38bf978b
|
|
BLAKE2b-256 checksum How to use checksums |
1f9a388eeb77124cdaa108673ae093a9e52cd2618011943aecd6b85b25fe5211
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.0
|
Security for b9x-faultline 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.