Your first snapshot#

PipeWhy captures versioned data and compares it with explicit coverage and lineage context. The library currently provides validated flat integer tables, label dictionaries, typed normalization, reference fingerprints, immutable local snapshots and historical comparison with explicit uncertainty. The CLI supports help/version, scan, diff, lineage, why, report integrity and export. Scan captures an explicitly configured fixture version into a verified local snapshot; the Enron connector also scans a pinned public dataset revision, with text or JSON receipts and explicit partial/unavailable read coverage.

From this checkout, after poetry sync --extras cpu:

poetry run pipewhy scan fixture --config examples/local-fixture.toml --source-version baseline-v1 --retain value --format json

The example config resolves its paths relative to examples/, stores snapshots in the ignored .artifacts/local-snapshots directory, and uses repository fixtures. An installed wheel requires an explicitly supplied external fixture directory; test data is not bundled. mutation-v1 changes B and missing-v1 injects a failed C read. A complete scan exits 0; partial/unavailable scans emit their receipt and exit 4. Operational failures go to stderr and exit 3; argument errors exit 2. Capture times do not establish operation timing or a physical cause. See the CLI contract for the command and exit-code contract.

For a repeatable run that keeps the three snapshots, incident registry, text/JSON reports, checksummed CSV and DOT graph, use PowerShell 7 from this checkout:

./examples/run-local-slice.ps1 -OutputDirectory .artifacts/my-local-slice -Backend reference

Choose a new output directory for each run. Use -Backend cpu after installing the CPU extra, or -Backend cuda after installing the CUDA extra on a qualified GPU host. -Backend auto selects the available host backend for this fixture. The script checks expected exit codes, including detected changes (1) and missing observations (4), and writes results through the CLI so CSV checksums cover the exact exported bytes. It uses the explicitly selected repository fixture; this is a local demonstration. See the qualification record for the independent oracle and limitations.

diff BEFORE AFTER --store DIRECTORY --format json compares captured snapshots; exit 1 reports detected changes and exit 4 reports required unavailable/incomparable data. lineage SNAPSHOT --store DIRECTORY --artifact-id 1 --all-depths --format json reads saved declarations and evidence. Both support bounded cursor pages, exact captured ID/name/path selectors and text/JSON/CSV output; lineage also supports DOT. CSV requires its checksum-bound metadata companion. Read commands work with offline sources and do not create a missing store. A selected view retains wider-scope qualifiers, while its exit code evaluates required selected data before pagination.

why BEFORE AFTER --store DIRECTORY --incident-window-ns 1000000000 --incident-clock fixture-demo --format json combines captured changes, qualified copy/transform conditions, incident evidence and potential impact. Use value retention when scanning to support transform checks. The explicit policy clock does not provide missing observation timing; earliest ordering stays unknown for this fixture. Results are transient unless --save-registry NEW_SNAPSHOT_ID is supplied. Reuse the saved policy/state with --registry-snapshot ID; exact repeated evidence does not increase incident counts. --support-limit bounds condition details while full selected-condition totals still determine the exit code. Historic registry references outside the supplied capture pair remain explicitly unexplained.