Telemetry¶
The self-reporting channel: the guest ships immutable JSONL chunks to the conduit
(ChunkShipper) and the host tails them back (ChunkReader). SpanEmitter records structured
SpanEvent spans over the run.
resoluto.sandbox.ChunkShipper
¶
ChunkShipper(
store,
prefix,
*,
flush_bytes=64 * 1024,
flush_interval_s=5.0,
heartbeat_s=30.0,
heartbeat_factory=_default_heartbeat,
clock=time,
)
In-sandbox writer that buffers JSONL lines and flushes immutable chunks to the store, emitting a heartbeat when quiet.
Source code in src/resoluto/sandbox/telemetry.py
emit_line
async
¶
Buffer one JSONL record, flushing if the byte threshold is reached.
Source code in src/resoluto/sandbox/telemetry.py
tick
async
¶
Flush on the interval, or emit a heartbeat when idle.
Source code in src/resoluto/sandbox/telemetry.py
close
async
¶
Final flush plus a manifest naming the highest chunk index.
Source code in src/resoluto/sandbox/telemetry.py
resoluto.sandbox.ChunkReader
¶
Host-side tail of a run's chunk objects in contiguous index order, with a silence-based death signal.
Source code in src/resoluto/sandbox/telemetry.py
substrate_silent
property
¶
True when no chunk has arrived within the death window; false until armed.
poll_lines
async
¶
Return newly-available JSONL records in contiguous index order, updating liveness.
Source code in src/resoluto/sandbox/telemetry.py
arm
¶
Start the silence window, idempotently; until armed both death signals stay false.
is_dead
¶
True when no progress line has arrived within the death window; false until armed or finished.
Source code in src/resoluto/sandbox/telemetry.py
resoluto.sandbox.SpanEmitter
¶
resoluto.sandbox.SpanEvent
¶
Bases: BaseModel
One observability record on the JSONL wire: a span open/close or a log line.