Clear all stored boundaries — called by the executor before each run().
All entries in execution order (entry+exit interleaved).
Entry/exit pair for one chart execution.
Returns { entry, exit } — exit is undefined for in-progress / paused
charts or if runtimeStageId is unknown.
O(1) lookup: all boundary entries (both phases) for one runtimeStageId.
Progressive reveal: boundaries whose runtimeStageId is in the visible set.
Pre-built per-step range index — O(1) lookups for time-travel scrubbing.
The root run's entry/exit pair, if the run has started. Convenience for consumers that want to bracket the timeline by the outermost in/out.
Just the entry-phase boundaries — the "step list" projection in
execution order. This is the natural timeline of chart executions
for slider / scrubbing UIs. The top-level run's entry is the first
step (depth 0).
Counts an attempt in the root boundary and in every open subflow boundary that contains the stage — the subflow the stage ran in is that subflow's id or below it.
Called once per top-level executor.run() AFTER traversal completes
cleanly. Carries event.payload = chart's return value. NOT fired on
pause (the run didn't end) or uncaught error.
Called once per top-level executor.run() BEFORE traversal begins.
Carries event.payload = run({input}). Subflow-traversers don't fire it.
Snapshot bundle for inclusion in executor.getSnapshot().
Stateful accumulator that watches
FlowRecorderchart-boundary events (run start/end + subflow entry/exit) and pushesInOutEntryrecords to its composedSequenceStore(Convention 1 — one purpose per recorder).Attach via
executor.attachCombinedRecorder(recorder)— footprintjs detects theFlowRecordermethod shape and routes events.