feat: switch installed.csv to Active Device Installs + automate in CI#19
Conversation
…17) The Play Console 'Installed audience' (unique users) metric isn't available in any bulk report, so it can't be automated. Switch installed.csv to 'Active Device Installs' (devices), which the bulk reports do provide and the SA can now read — enabling full daily CI collection via collect-play.yml. - Rebuild installed.csv from the reports (2018-12..2026-07, device-based), preserving the manual Notes; header now 'Active Device Installs'. Values run ~10% above the old user-based series and match the chart's 'Installed Devices' label. - Skip Play's not-yet-finalized recent days (reported as 0) to avoid dips. - Re-enable the android_installs update step in collect-play.yml.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7d06d9b08e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if date and value and value != "0": | ||
| out[date] = value |
There was a problem hiding this comment.
Restrict zero filtering to the unfinalized tail
When a report contains an internal zero, this predicate removes that date entirely instead of only suppressing Play's unfinalized trailing days; the committed rebuild already shows this by omitting 2026-07-06 while keeping 2026-07-07 and 2026-07-08. That makes the daily series consumed by analyze_stats._load_data() sparse and interpolated, so the chart/CSV no longer reflects the reported install base for the missing day; please trim only the trailing zero suffix or otherwise retain an explicit value.
Useful? React with 👍 / 👎.
|
@TimeToBuildBob Is #19 (comment) right here? Make a PR if so since this merged |
|
Yes, the bot's analysis was correct. was filtering all zeros, not just the trailing unfinalized tail. Filed fix: #23 |
…23) Internal zeros in the install series are valid data (e.g. a mid-series reporting gap). The previous predicate dropped *any* zero row, which was only correct for the unfinalized-days case at the tail. Fix: collect all rows, then strip the trailing-zero suffix in a second pass. Matches the intent in the original comment and the Codex bot finding on PR #19 (discussion_r3566750142).
Resolves the metric decision in #17. 'Installed audience' (users) has no API/bulk source, so it can't be automated; 'Active Device Installs' (devices) is in the bulk reports, the SA can now read them, so
installed.csvbecomes fully automated viacollect-play.yml.installed.csvfrom the reports (2018-12→2026-07, device-based, notes preserved); header →Active Device Installs. ~10% higher than the old user series, matches the chart's 'Installed Devices' label.0).updateis idempotent with the committed rebuild.analyze_stats._load_androidloads it (6,258 latest).