• v0.16.0 40825bb5b7

    v0.16.0 — ranked runes from match-v5, not op.gg
    All checks were successful
    CI / gate (push) Successful in 39s
    CI / image (push) Successful in 16s
    Stable

    joeyr released this 2026-08-04 14:30:41 -05:00 | 199 commits to main since this release

    Changed

    • champion-runes.json is now built from Riot match-v5, not scraped from
      op.gg.
      generatedFrom.source reads riot. No schema change: a combo was
      already a (primary tree, secondary tree) pair rather than an exact nine-perk
      selection, so the published shape is identical and consumers need no update.

      The rune page is in every match payload this service already pays for, so the
      artifact is now a third reading of the same rows that produce
      champion-damage.json and champion-benchmarks.json — alongside a rollup in
      SQL and two static CommunityDragon fetches. It costs no additional Riot
      requests and it costs ~271 op.gg pages fewer per night.

      What changes downstream: the sample is the games this service actually
      collected, on the current patch, from the seeded ladder band, and it grows for
      as long as the patch runs. The op.gg numbers came from a population and a
      window nobody here could see.

    • The ranked op.gg pass runs counters only. rankedPass carries no rune
      artifact or path at all, so op.gg cannot publish that file regardless of
      configuration. Counters stays on op.gg because the matchup tail needs roughly
      fifteen times the sample a night collects.

    • RUNES_ENABLED now gates both sources, ranked and classic — "publish rune
      data" is one decision. RUNES_MIN_COVERAGE and RUNES_MAX_MINUTES are
      classic-only from this release: they describe a page crawl, and nothing on
      the Riot half reads either.

    Removed

    • The op.gg-sourced ranked rune data, in the previous release's data
      commits: data/champion-runes.json and data/archive/16.14/champion-runes.json.
      Every *-classic rune file and every classic archive is untouched — queue
      4310 is absent from match-v5, so op.gg remains its only possible source.

    Notes

    • champion-runes.json has been absent since the op.gg crawl was removed and is
      recreated on the first nightly run after this deploys. Installs with no cached
      copy have no ranked runes until then.
    • The file grows across a patch. Every tree pair with at least one game is
      published and the count per champion-role climbs as games accumulate: measured
      at 532 KB with four combos each against 2.56 MB at all twenty. The
      compaction path if that becomes a problem is a boards dictionary keyed by
      primary:sub, which is a schema change and therefore a separate, ordered
      piece of work.
    Downloads