L3 · the RECORDED-replay responder (jz3a). Serves provider calls from a prior run's DURABLE log instead of a live provider — the deterministic re-execution seam both the 2026-06-03 storage A/B post-mortem and the artifact-optimization design independently demanded. Same family as the fake adapter (it IS a respond-fn for the fake adapter) and restore-from-snapshot: policy-free substrate.
STEP routing: a replay run's sessions get FRESH ids, so recorded cache scope-ids can never match — instead each recorded session is keyed by the content of its FIRST :user message (the turn message for a root; the child-invocation-frame for a child). A deterministic replay re-issues the same first user message per session, so root and children route themselves. Same-key recorded sessions are served whole-session-in-recording-order: the per-key records are ONE flat vector (each session's steps concatenated) with ONE cursor — interchangeable-by-construction children replay cleanly, and there is no rotation state to get wrong.
LEAF routing: leaf calls are durable :leaf/called events — a request whose cache :purpose is :leaf routes by the content hash of its user message to the recorded leaf responses, FIFO among identical requests. A leaf call recorded as :error (the provider call itself failed) re-throws the recorded error.
Limits (documented, typed):
L3 · the RECORDED-replay responder (jz3a). Serves provider calls from a prior run's DURABLE log instead of a live provider — the deterministic re-execution seam both the 2026-06-03 storage A/B post-mortem and the artifact-optimization design independently demanded. Same family as the fake adapter (it IS a respond-fn for the fake adapter) and restore-from-snapshot: policy-free substrate. STEP routing: a replay run's sessions get FRESH ids, so recorded cache scope-ids can never match — instead each recorded session is keyed by the content of its FIRST :user message (the turn message for a root; the child-invocation-frame for a child). A deterministic replay re-issues the same first user message per session, so root and children route themselves. Same-key recorded sessions are served whole-session-in-recording-order: the per-key records are ONE flat vector (each session's steps concatenated) with ONE cursor — interchangeable-by-construction children replay cleanly, and there is no rotation state to get wrong. LEAF routing: leaf calls are durable :leaf/called events — a request whose cache :purpose is :leaf routes by the content hash of its user message to the recorded leaf responses, FIFO among identical requests. A leaf call recorded as :error (the provider call itself failed) re-throws the recorded error. Limits (documented, typed): - an unknown step-routing key throws :fractal/replay-unknown-session; an exhausted key throws :fractal/replay-exhausted; - a leaf request with no recorded leaf call throws :fractal/replay-leaf-unsupported (recording predates leaf events, or the fan-out diverged).
(replay-responder st sids)Build a respond-fn (for :adapter :fake / :fake/respond) that serves the
recorded step responses AND recorded leaf calls of sids from st, routed
by message content. Reads through the port (read-state), so any
SessionStore — incl. a store opened on another run's dir — works as the
source.
Build a respond-fn (for :adapter :fake / :fake/respond) that serves the recorded step responses AND recorded leaf calls of `sids` from `st`, routed by message content. Reads through the port (read-state), so any SessionStore — incl. a store opened on another run's dir — works as the source.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |