Skip to main content

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.

License: MIT


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)

Source distribution for b9x-faultline 0.1.0
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)

Table of built distributions (wheels) for b9x-faultline 0.1.0
File Interpreter ABI Platform Actions
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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page