Sends everything the process accumulated, across every channel that has a
delivery, and reports what went out. It is the user's explicit action
(yield* FlushTelemetry, owner decision 2026-10-21), not a background step:
nothing sends on a timer, on leave, or in the background — the flows that
instrument a sequence keep their own best-effort sends as part of the flow.
An empty store sends nothing; a channel the transport or the server
rejects fails with TelemetryDeliveryError after putting that channel's
events back, and the next flush sends the same ones again.
It sends only into a session the process began at startup: the Pigeon
session is started by pigeonInit, which pigeonSendInfraBatches
(@igpapi/pigeon-nest) runs — a brick the caller runs itself; no flow of the
library sends it. A process that never began it gets
TelemetryDeliverySessionError (reason: 'session') and the batch stays in
the store — no recording covers an upload without the session, so the flush
does not send an unverified batch.
Sends everything the process accumulated, across every channel that has a delivery, and reports what went out. It is the user's explicit action (
yield* FlushTelemetry, owner decision 2026-10-21), not a background step: nothing sends on a timer, onleave, or in the background — the flows that instrument a sequence keep their own best-effort sends as part of the flow. An empty store sends nothing; a channel the transport or the server rejects fails withTelemetryDeliveryErrorafter putting that channel's events back, and the next flush sends the same ones again.It sends only into a session the process began at startup: the Pigeon session is started by
pigeonInit, whichpigeonSendInfraBatches(@igpapi/pigeon-nest) runs — a brick the caller runs itself; no flow of the library sends it. A process that never began it getsTelemetryDeliverySessionError(reason: 'session') and the batch stays in the store — no recording covers an upload without the session, so the flush does not send an unverified batch.