SpanDigest
A compact summary of which spans this producer has already delivered to an OtlpEdge, keyed by span id.
The bridge computes the delta as local span ids ∖ digest.spanIds and sends only the spans in the difference. This is O(N) in span count — cheap for the typical offline buffer of hundreds to low-thousands of spans.
Producer-local, not a collector query
OTLP/HTTP is write-only — a collector exposes no "what do you already have" read-back. So the digest is not the collector's holdings; it is what this producer has already successfully POSTed to this endpoint, persisted locally by the edge. The collector deduplicates re-sent spans by span id (OTLP's own guarantee), so a lost or stale producer-local digest costs bandwidth, never correctness — the worst case is re-POSTing a span the collector already deduped.
The retention bound is therefore on the producer's own sent-set (choose a cap that exceeds the device's realistic offline window), not on the collector's holdings.
Parameters
The raw 8-byte span ids (SpanRecord.spanId) this producer has already delivered to the edge.