Liking cljdoc? Tell your friends :D
Clojure only.

fractal.engine.adapter.replay

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).
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).
raw docstring

replay-responderclj

(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.
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close