-
Notifications
You must be signed in to change notification settings - Fork 0
Node Snapshot Diff Replay
Per-NODE granularity over the v0.1.23 eval/replay harness: snapshot one
StateNode, diff two snapshots structurally, and deterministically replay one node in isolation. Shipped in v0.1.35. Repo doc:docs/node-snapshot-diff-replay.7.md.
Before v0.1.35 the eval harness worked only at RUN/SUITE granularity. v0.1.35 adds
per-node snapshot/diff/replay, reusing the harness's normalize/stable-stringify
discipline and the v0.1.25 fingerprint/freshness pattern — without forking
StateNode, the harness, or the run-state schema (all additive).
Snapshot is derived, fingerprinted, not the source.
Fail closed on drift: valid | stale | absent.
Replay injects now; the payload has no wall-clock.
Two replays are byte-identical.
A NodeSnapshot is a normalized projection of one node (timestamps/paths stripped
via the eval normalizer, so it is byte-stable across captures of the same logical
state) plus a sourceFingerprint — sha256 over the RAW node
(id:status:updatedAt + artifact/evidence ids+paths), so any transition flips it.
The source StateNode JSON stays the truth.
-
Snapshot —
node snapshot <run> <node>; content-addressed id (snap-<node>-<fingerprint>), persisted under<run>/nodes/snapshots/<node>/. -
Fail closed on drift (load-bearing) — every load recomputes the
fingerprint:
valid(matches),stale(source changed),absent(node or a referenced artifact path gone).stale/absentREFUSE diff/replay with a structured error — never a silent stale replay. -
Diff —
node diff <baseline> <candidate>: per-section (status/inputs/outputs/artifacts/evidence/errors/links/metadata)added|removed|changed|same, ordered by the samestableStringifythe eval comparison uses; byte-identical across runs. -
Replay —
node replay <snapshot>: reconstructs the node withnowINJECTED (no ambientnew Date()); the deterministic payload (body +outputFingerprint) carries zero wall-clock, so two replays are byte-identical (onlyreplayedAt/replayIddiffer). Replaying a stale/absent snapshot fails closed. -
Verify —
node verify <replay>: compares a replay to a fresh snapshot of the source, with findings in the eval harness'sseverity/category/reasonshape. -
Reuse, don't fork — exported the previously-private
normalizeValue/stableStringify/lines(eval harness) andfingerprintStrings(state-explosion); additive, no behavior change.
Run/suite replay tells you a whole run reproduced; per-node replay lets you pin-point WHICH node drifted and reproduce just it, deterministically — the unit a debugger actually wants. Verified live: snapshot → replay → diff a real node via the CLI, byte-identical, no wall-clock leak.
- Architecture Principles
- CLI MCP Parity
- Eval/Replay Harness —
plugins/cool-workflow/docs/multi-agent-eval-replay-harness.7.md - State Explosion Management —
plugins/cool-workflow/docs/state-explosion-management.7.md - Repo doc:
plugins/cool-workflow/docs/node-snapshot-diff-replay.7.md
Organized from local Obsidian notes and reconciled with the current
coo1white/cool-workflow repository state.
Start here
Go deeper
- Workflow Apps
- Architecture
- Trust And Audit
- Recovery And Restore
- Commands or API
- MCP And Manifests
- Operations
- FAQ
Source docs