Consider an aura-std channel/buffer recording block (recorder boilerplate) #10
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Surfaced by the cycle-0006 fieldtest (
docs/specs/fieldtest-0006-substrate.md, friction #2).Every recording node currently re-implements the same channel-sink dance from scratch: a
txfield, aschemawithoutput: vec![], and anevalthat reads each input by kind, sends(now, row), and returnsNone. The 0006 spec deliberately ships no library sink (C9 — no speculative surface;Recorderwas an explicit test-local fixture), so this redundancy is expected, not a bug.Action (deferred by design): once a second real consumer confirms the shape, consider a small reusable recording block in
aura-std(e.g. a generic channel/buffer sink, or aRecorderhelper) so the boilerplate is written once. Holding until the shape is confirmed is the correct C9 posture — do not add speculatively.checked 2026-06-04: still zero real (non-test) consumers — all Recorder occurrences are test fixtures (engine
#[cfg(test)]in harness.rs + 9 fieldtest bin targets); no sink/recorder shipped in aura-std, C8 sink / C18 registry not yet implemented as a library component. Gate remains shut: the aura-std block stays deferred per C9.Also rejected a test-only
TestRecorderhelper: (1) aura-engine's own tests already share a single parametric Recorder in harness.rs — no duplication there; (2) the ~9 fieldtest copies are load-bearing, not accidental — a fieldtest simulates a downstream author who has only the public interface, so the repeated boilerplate IS the measurement (it's what surfaced this issue). Sharing a helper across fieldtests would entail linking the separate workspace roots and would weaken what the fieldtests verify.Next real trigger is the genuine second consumer #10 waits on: when the playground/trace-explorer (C12/C18) needs a real sink to write streams into the registry. Build the aura-std sink then; fieldtests may consume it as a library node at that point.
Resolved by implementation — closing.
The reusable
aura-stdrecording sink this issue proposed now ships asRecorder(crates/aura-std/src/recorder.rs, exported atlib.rs:30): a generic channel/buffer sink over all four scalar kinds with an mpsc destination. It is consumed as a real library node from production code (aura-cli/src/main.rs:82-83, theaura runsample harness), plus engine paths (graph_model.rs,sweep.rs,report.rs,blueprint.rs).It landed in
559903a(2026-06-04, ~2.5h after this issue's parking comment) — the "second real consumer" gate this idea waited on fired with theaura run/aura graphwork. Thetx/output: vec![]/evalboilerplate from friction #2 is now written once. Nothing residual; closing as resolved.