OBSERVERTC / Reference

Known implementation differences

Verified discrepancies to account for when building integrations.

Delta reset semantics

DERIVED_METRICS says zero; positiveDelta returns undefined. Source wins. Other consumers can explicitly coalesce; do not overgeneralize either direction.

Outdated metric names

DERIVED_METRICS examples use InboundRtpMonitor.fractionLost, isFreezed, and OutboundRtpMonitor.encodeTimePerFrameInMs; the current relevant names are deltaFractionLost/totalFractionLost, track flow state, and avgEncodeTimePerFrameInMs. See field inventory.

Pixelation explanation

ClientMonitorConfig prose still says bitPerPixel, while PixelatedVideoDetector uses normalizedQp.

Audio synthesis taxonomy

The stable taxonomy describes AudioPlayoutSynthesis as event-only/missing issue; actual constructor binds an InboundTrackMonitor and raises synthesized-audio using playout counters through that track.

Scoring prose

“open issues and nothing else,” “healthy/no issues always 5,” and root score becomes undefined with nothing measurable do not describe all actual paths. Continuous ramps and root early-return/default behavior contradict those statements.

Observer AcceptContext comment

The comment says merged into appData; actual factories can consume it at creation, and it is otherwise transient event context. Current changelog/config text correctly explains the distinction.

Observer middleware contract

Omitting next() does not stop ingestion; throwing logs “dropping” but still ingests; next(newPayload) does not replace the object dispatched. Observer.accept proceeds after process(), and no final callback controls dispatch. The existing middleware tests cover ordering/mutation/removal, not these advertised cases.

On-change ICE compatibility

Client Monitor sends static ICE metadata first/on change by default; ObservedIceTransport.update() assigns absent metadata to undefined. Thus roles, certificate IDs and crypto fields disappear on ordinary later samples. This needs a receiver-side retention contract or explicit sender setting, not documentation alone.

Zero score history

ObservedClient accepts score 0, but if (this.calculatedScore.value) skips its cumulative score measurement count. Current instantaneous score remains 0; historical counters omit that measurement.

Source references

Focused execution results. These are source-snapshot findings, not claims about unexamined later releases.

Version coverage varies by reference. Source revisions · Markdown source