Telemetry contract: rows from builds up to 1.3.0+38 can be stored twice

Backgrounding started two flushes at once and both posted the pending rows:
17 of 438 sessions in 2026-08-30..09-13 have two session_summary rows, each
pair created within 0.23 s. Says how to count them (distinct device + ts +
event, or device + sessionId for a summary). Fixed in amber-app by running one
flush at a time.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Claude 2026-09-13 21:44:31 +02:00
parent 2e5ae66662
commit 36a9afdbc3

View file

@ -30,6 +30,14 @@ older than 14 days nightly.
`host` is only the stream's `scheme://host`**never** a full signed URL or an `host` is only the stream's `scheme://host`**never** a full signed URL or an
addon token (redacted client-side in `TelemetryService.redactUrl` before write). addon token (redacted client-side in `TelemetryService.redactUrl` before write).
**Rows from builds up to 1.3.0+38 can be stored twice.** Sending the app to the
background started two flushes at once (`onHide` and `onPause`), and both posted
the pending rows. Measured 2026-08-30 to 09-13: 17 of 438 sessions have two
`session_summary` rows, on six devices, each pair created within 0.23 s, and every
other kind is affected the same way. Count distinct `device` + `ts` + `event` (for
a summary, `device` + `meta.sessionId`), not rows. Builds after 1.3.0+38 run one
flush at a time.
### `source_pick` — the row that answers "why did it play that one" ### `source_pick` — the row that answers "why did it play that one"
Added 2026-09-09, because a real complaint could not be answered without it. Added 2026-09-09, because a real complaint could not be answered without it.