From 36a9afdbc363f2a3afc45b8bdcc78214fb94b846 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 13 Sep 2026 21:44:31 +0200 Subject: [PATCH] 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 --- docs/telemetry-contract.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/telemetry-contract.md b/docs/telemetry-contract.md index ff285d8..4220c87 100644 --- a/docs/telemetry-contract.md +++ b/docs/telemetry-contract.md @@ -30,6 +30,14 @@ older than 14 days nightly. `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). +**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" Added 2026-09-09, because a real complaint could not be answered without it.