Measure browser fallback and decoder fallback from their own telemetry
Browser-native fallback and decoder-internal fallback are different events and should not share one metric. Define each field from the code path that writes it, then build mutually exclusive outcome classes from persisted source kind, capture state, decoder attribution, and request-level route evidence. If an attribution rule relies on temporal adjacency, label unmatched rows as presumed rather than proven and publish the window as a sensitivity parameter.
This applies during mixed client/server rollout. It does not classify abandonment without capture or failures before server attribution begins. Persisting the selected mode on fallback is preferable to reconstructing it later from nearby events.