Docs

    Datasets

    Snapshots and versions

    Freeze a dataset as a named, immutable version, pin a run to it, and see which rows and fields changed between two versions.

    A snapshot is a frozen, numbered copy of a dataset's active rows. A run pinned to one stays comparable while the live rows change, and a diff of two snapshots shows which rows and fields moved before you trust a change in pass rate.

    Create a snapshot

    A line above the Snapshots table compares the live hash with the latest snapshot, for example "Rows changed since v4" or "v4 is current". Create snapshot freezes the active rows into a new version with their count and hash, and is disabled when nothing changed since the latest one. The name defaults to the next version, such as v5, and the note says what changed.

    The table lists each version with its row count, hash, note and runs pinned, and marks the newest one latest.

    Pin a run

    Run evaluation on v4, in the version's row menu, opens New run with that snapshot selected. The run reads the frozen rows, so editing live rows while it is queued is safe. It stores the snapshot id, and the run header's Snapshot field shows the version.

    A run that generates its outputs cannot be pinned, because it scores the live rows the generation writes. The baseline picker offers only runs with the same dataset hash, so a run on v4 is compared with runs over the same rows.

    Compare two versions

    Compare with v3, in the v4 row menu, opens the diff. It counts added, edited, removed and unchanged rows and lists the first 50 of each. Rows are matched on the identity the snapshot froze, so a row deleted and created again with the same text is one removal and one addition.

    An edited row names the fields that differ, from the list the row tag hashes: input, expected output, output, system instructions, turns, status and extra columns. An empty field counts as equal to a missing one.

    Limitations

    • The diff names fields without before and after values. No screen shows the frozen rows; read them with GET /datasets/:id/snapshots/:snapshotId/rows.
    • The row menu compares a version only with the one before it. The API compares any pair: GET /datasets/:id/snapshots/:fromSnapshotId/diff/:toSnapshotId.
    • A snapshot cannot be restored into the live rows.
    • The runs pinned count covers evaluation runs only, not playground grids or simulations.

    EvalKit is built by SyntropyLabs. Published on PyPI and npm.