Datasets

    Snapshots and versions

    Freeze a dataset as an immutable named version, pin a run to it, compare two versions, and read pass rate over time per version.

    After this page runs stay comparable while the dataset keeps changing, you can see which rows and fields moved between two versions before trusting a pass-rate change, and a run is nailed to a version so its number means one thing.

    Create a snapshot

    The Snapshots tab shows a line above the table — rows changed since v4, or v4 is current — computed from the live hash against the latest snapshot. Create snapshot (disabled while the live hash equals the latest) takes a name and note and freezes the non-archived rows into an immutable version with its row count and hash. The table lists version · name · rows · hash · created · note · runs pinned; “latest” is a pointer, not a version. Starting a run on an edited dataset offers snapshot first inline, so you never pin to a moving target.

    Pin a run

    Run evaluation on v4 opens New run with the dataset locked to that snapshot. The run reads the frozen rows — editing live rows while it is queued is safe — stores the snapshot id, and its Compare with… picker offers only runs pinned to the same version. The dataset’s Runs tab groups runs by version and shades its pass-rate chart by snapshot, so a drop that coincides with a data change is obvious.

    Compare two versions

    Compare with v3 on the v4 row opens the diff: counts of added · removed · changed · unchanged, and for each bucket the first 50 rows. Rows are matched on the identity the snapshot froze, so a row deleted and re-created with the same text reads as one removal and one addition. A changed row names the fields that differ (target · output · status) — the same field list the row tag hashes — with no before-and-after values, so the dialog can say what moved but not what it says now. Empty compares equal to absent.

    Limitations

    • The diff carries field names, not before-and-after values; to read a changed value, export the version.
    • The table offers only adjacent versions; any pair can be compared through the API.
    • No screen opens a version’s frozen rows; they are readable through the API.
    • There is no restore-rows-from-snapshot.
    • runs pinned counts evaluation runs, not playground grids or simulations.

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