Checkpoints
A checkpoint is the state of your workflow at one step. VeraTracer records them as your script runs, which is what makes it possible to branch, compare and rewind without recomputing everything.
Where checkpoints come from
You do not create checkpoints by hand. VeraTracer reads your script and discovers them from the statements themselves — each step that produces a named value is a point it can return to. In this script there are four:
let raw = load.csv("data/customers.csv") // L4 — checkpoint
let active = filter(raw, status, "active") // L5 — checkpoint
let report = select(active, [id, name, region]) // L6 — checkpoint
export.csv(report, "data/active-customers.csv") // L7 — checkpointBecause they are derived from the code, checkpoints stay in sync with it. Rename a value or reorder two steps and the checkpoint list follows.
The checkpoint range
Runs are scoped to a range with a start and an end, shown as the blue track in the editor gutter and mirrored in the Checkpoint History pane. The two views always agree, and each file remembers its own range.
- Drag an endpoint to grow or shrink the range from either side.
- Single click a checkpoint to move the nearest endpoint to it.
- Double click a checkpoint to collapse the range down to just that one step.
Steps outside the range are not re-executed. This is the difference between changing your last line and waiting for a full pipeline again.
Reading a checkpoint
Selecting a checkpoint updates the inspector on the right. It reports:
| Field | What it tells you |
|---|---|
| rows | How many rows this step produced. |
| columns | How wide the result is at this point. |
| duration | How long this step took on the last run. |
| vs. previous | The change against the checkpoint before it — the quickest way to spot a filter that removed far more than you expected. |
| schema | The fields present in the result at this step. |
Branching
Branching lets you try a second approach from a checkpoint without disturbing the first. Both branches keep their own results, so you can compare them side by side before deciding which one to keep.
A branch that does not work out costs you nothing: discard it and the checkpoint it came from is still intact, still computed, still ready to branch from again.
Rewinding
Rewinding returns the workspace to an earlier checkpoint. The engine restores that recorded state rather than replaying the pipeline from the top, which is why it is effectively instant regardless of how expensive the earlier steps were.
Next, see the statements you can build workflows from in the VeraScript reference.