Migrate the legacy Recorder surface onto the tap-subscriber delivery shape #308

Open
opened 2026-07-21 23:48:07 +02:00 by claude · 0 comments
Collaborator

Follow-up filed at the close of the tap-subscribers cycle (refs #283, #77), as recorded in that cycle's scope decision.

Problem

The #283 cycle replaced buffer-then-drain with in-graph subscribers for declared taps on both entry points (run_signal_r, run_measurement). Deliberately untouched — and still carrying the old profile (unbounded channel per sink, O(cycles) rows retained until a post-run rx.try_iter().collect() drain):

  • the eq/ex/r wrap sinks wrap_r binds on the R path (crates/aura-runner/src/member.rs — equity, exposure, r, req recorders); summarize/summarize_r consume the full drained series post-run,
  • the --trace path (the legacy whole-run trace surface),
  • the ~80 test-tap sites across the workspace using Recorder + rx.try_iter().collect().

Direction (not prescribing)

The #283 machinery is the natural target: in-graph consumers via the fold registry where an aggregate suffices, the streaming record consumer where a full series must persist, bounded delivery where a consumer genuinely needs the rows in memory. The eq/ex/r wraps are the substantive part — their post-run summaries read the whole series today, so this is partly a fold-family question (which summaries can stream?), not a mechanical swap. Test-tap sites are low-value churn; migrate opportunistically or leave.

context: deferred out of the #283 scope so that cycle stayed small; the subscriber seam it shipped is the enabling substrate.

Follow-up filed at the close of the tap-subscribers cycle (refs #283, #77), as recorded in that cycle's scope decision. ## Problem The #283 cycle replaced buffer-then-drain with in-graph subscribers for **declared taps** on both entry points (`run_signal_r`, `run_measurement`). Deliberately untouched — and still carrying the old profile (unbounded channel per sink, O(cycles) rows retained until a post-run `rx.try_iter().collect()` drain): - the **eq/ex/r wrap sinks** `wrap_r` binds on the R path (`crates/aura-runner/src/member.rs` — equity, exposure, r, req recorders); `summarize`/`summarize_r` consume the full drained series post-run, - the **`--trace` path** (the legacy whole-run trace surface), - the ~80 **test-tap sites** across the workspace using `Recorder` + `rx.try_iter().collect()`. ## Direction (not prescribing) The #283 machinery is the natural target: in-graph consumers via the fold registry where an aggregate suffices, the streaming record consumer where a full series must persist, bounded delivery where a consumer genuinely needs the rows in memory. The eq/ex/r wraps are the substantive part — their post-run summaries read the whole series today, so this is partly a fold-family question (which summaries can stream?), not a mechanical swap. Test-tap sites are low-value churn; migrate opportunistically or leave. context: deferred out of the #283 scope so that cycle stayed small; the subscriber seam it shipped is the enabling substrate.
claude added the feature label 2026-07-21 23:48:07 +02:00
claude added this to the Trace store — completing the tap-subscriber cut milestone 2026-07-23 13:42:58 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#308