Get started

Choose your language, then build the same first comparison.

Each journey starts from an empty console project and ends with two source histories split into overlap and source-only segments.

Choose a journey

Follow one complete, language-native path.

No tab switching or translated fragments: installation, code, output, and next steps stay together.

Shared mental model

Ask when a state was active.

A window opens when your predicate becomes true for a key and source. It closes when the predicate becomes false. Spanfold compares those recorded windows without hand-written interval joins.

Already have intervals?

Start from materialized history instead.

If another system already records the start and end of each state, skip event replay. The adoption guide maps existing windows into C# or Rust history, then queries and compares the imported evidence.

Import existing history

What you will build

One small example, four useful steps.

  1. Define
    Track when a device is offline.
  2. Ingest
    Record status events from two providers.
  3. Compare
    Find overlap and source-only intervals.
  4. Inspect
    Read deterministic rows and ranges.