stasrift
Stasrift 1.0

Structure stayed compatible.
Meaning did not.

Stasrift checks whether declared data meaning changed across versions, even when the schema still passes.

Local CLI · No server · No accounts · Human-reviewed

$ stasrift diff --old v1.yaml --new v2.yaml

INCOMPATIBLE

occurred_at.time_axis
{event_time} → {processing_time}

Reason
Same timestamp shape. Different declared meaning.
The proof

A schema can pass while meaning breaks.

Schema compatibility

PASS

Field names and physical types are unchanged.

occurred_at: timestamp

Stasrift

INCOMPATIBLE

The type stayed the same, but the declared time axis changed.

event_time → processing_time
How it works

Local evidence. Human decisions. Explicit compatibility.

1

Scan

Read local SQL, contracts, dbt refs, and documentation.

2

Suggest

Produce deterministic suggestions, questions, or conflicts.

3

Review

A human confirms, edits, or skips. Suggestions never write automatically.

4

Diff

Return UNCHANGED, NARROWED, WIDENED, or INCOMPATIBLE.

Install

Try Stasrift in 5 minutes.

Install v1.0.0, compare two tiny contracts, then try your own repository. Follow the five-minute guide for environment setup, sample files, and expected results.

$ python -m pip install ./stasrift-1.0.0-py3-none-any.whl
$ stasrift --version
stasrift 1.0.0

Requires Python 3.10 or newer. Download the v1.0.0 wheel from GitHub, then run the install command from your download folder. Stasrift is not yet published to PyPI.

Read the documentation · View the source on GitHub

Public pilot

Try it on one real repository.

Working with dbt, SQL, ETL, data contracts, or event pipelines? Try Stasrift and tell us whether installation worked, what tooling you use, whether it found anything useful, what it flagged incorrectly or missed, and whether you would run it in CI.

Failed installs and reports of no useful findings are welcome. Share a small sanitized example; GitHub Issues are public.

Origin

Inspired by J = 0.

Stasrift grew from the Jameson Zero Condition: the idea that “unchanged” only has meaning relative to what is being observed and compared.

The software does not claim new science. It turns that discipline into a practical question for data systems: unchanged according to what?

Stasrift split zero icon