·
78 commits
to master
since this release
Ratings process rewrite, security upgrades, backend parity
Deployed to GAE as version n20260805.
/stats/ratings rewrite (#149)
The nightly top-100 ratings computation no longer scans the entire StatsModel history (3.5M entities, ~11 minutes) with false positives that could truncate the lists:
- Exact current tables from indexed
UserModelElo fields plus parallel newest-snapshot lookups (StatsModel.newest_before_multi) — false positives are structurally impossible - Daily archives — each night's tables stored as JSON in the new
RatingArchiveModelkind (PG:rating_archive); yesterday/week/month deltas become keyed lookups, no new composite indexes /stats/ratings_backfill— self-chaining Cloud Tasks endpoint that fills historical archives one date per task, idempotent, pinned to the executing service/version so it can run on a not-yet-promoted deployment- ~30–50× faster overall (measured ~15× on explo-dev; netskrafl runs should drop from 11 min to well under 30 s)
- NDB/PG parity fixes: kind-specific fields in PG
_list_by_elo, robot stats in PGnewest_before, module-levelput_multiin the stats job,manualmemcache invalidation - 24 new backend-parity tests
Dependency security upgrades
Flask, Authlib and requests upgraded, resolving 18 security advisories.
NDB↔PostgreSQL backend parity (#148)
Strengthened parity between the NDB and PostgreSQL backends with expanded tests, plus a duplicate-email diagnostic utility.
Operations
- explo-live scaling optimized; basic-scaling comment fixed in
app-netskrafl.yaml - Deploy skill with gradual (canary) traffic rollout and log monitoring