Optional Readonlydelivery?: "inline" | "deferred"Delivery tier for this recorder (RFC-001) — the FIELD form of the
attachCombinedRecorder(r, { delivery }) options bag, so a recorder
can DECLARE its tier ({ id, delivery: 'deferred', ...hooks }) and
every attach site honors it. 'deferred' routes the recorder's
events through the executor's bounded capture queue ("one beat
behind"); absent / 'inline' keeps the historical synchronous call.
NOT an event method — channel routing detection counts event-METHOD
properties only, so this string field never affects which channels
the recorder lands on.
Readonlyid: string
A recorder that MAY observe any combination of supported event streams.
Today's streams:
ScopeRecorder: onRead/onWrite/onCommit/onStageStart/…)FlowRecorder: onDecision/onSubflowEntry/onLoop/…)EmitRecorder: onEmit)All event handlers are optional — implement only what you care about.
idis required so the library can deduplicate re-attaches.Shared method names (onError / onPause / onResume)
Both
ScopeRecorderandFlowRecorderdeclare these with DIFFERENT payload shapes. In a combined recorder, each such handler is called by BOTH channels with its own variant. The parameter type is a union — consumers can either handle both variants uniformly, or discriminate withisFlowEvent()(explicitchanneldiscriminant stamped by the engine).Forward compatibility
When another observer type ships (e.g.
OperationRecorder), the type gains another& Partial<…>clause. Because every clause isPartial, existingCombinedRecorderimplementations remain type-valid.