-
v0.10.0
Stablereleased this
2026-07-31 08:54:18 -05:00 | 238 commits to main since this releaseFixed
-
Classic counters were about to publish in the wrong id namespace, and it
would have failed silently.crawlCountersis shared by both passes, and it
keyed entries by whatever id the tier list gave it. op.gg indexes classic
pages by BASE champion id — its classic tier list returnschampion_id: 24
for Jax and the page lives at/champions/jax, whilejade_jax307s — so the
file would have been written with base ids while champ select and the live
client both report60xxx.That is the failure mode this repo spends most of its comments avoiding: the
artifact validates, reads correctly, and diffs sensibly night to night, and
not one lookup ever matches. The runes pass already shifted its keys; counters
never got the same treatment because nothing exercised it.Three maps needed it, not one:
- the entry keys (
counters['60266']), - the opponent ids inside every matchup — op.gg names classic opponents by
their base display name ("Jax"), so the directory resolves them to base ids
while the consumer's board holds60xxx, and - the tier list, which is a second consumer-facing id-keyed map.
toQueueChampionId(newsrc/classic-ids.ts) is idempotent, so applying it
at more than one point in the assembly path cannot double-shift an id into a
range that exists for nobody. Six tests cover it, all four of which fail
against the previous code; the ranked namespace is asserted alongside each,
since the shift must happen for exactly one queue.No published file is affected — the classic pass is opt-in and has never run.
- the entry keys (
-
Classic counters recorded the rank band the crawl asked for, not the one
op.gg served. Same false-provenance problem the classic runes schema already
fixed: op.gg acceptstieron a classic page and discards it, so the data is
all ranks whatever was requested.CLASSIC_TIERmoved tocommon.schema.ts,
where both classic artifacts can reach it, and the counters artifact now
recordsallfor that queue.
Changed
-
The classic universe is 90 (champion, role) pairs, measured. A full sweep
on 16.15 replaced the 81 an earlier estimate assumed — TOP 23, MIDDLE 22,
JUNGLE 21, UTILITY 15, BOTTOM 9. The nightly op.gg budget is therefore ~732
requests rather than 714, which at 12.5 s is ~2.54 h and still inside the
three-hour window. The pacing is unchanged; the arithmetic behind it now
matches reality. -
The 0.9 coverage floors are kept for Classic Rift, on evidence rather than
by default. The concern was that a proportional floor is harsher on a
smaller universe. The same sweep returned 87/90 counters pages (96.7%) and
90/90 runes pages (100%), so both clear it with real headroom. The three
counters misses are stable rather than random — Fiddlesticks, Nunu and Gragas,
all jungle, all serving a page with no data array — which is why the margin
can be trusted. Split the floors only if a later measurement says so. -
Dropped the dead
runesArtifact: nullbranch fromOpggPassand the comment
claiming Classic Rift has no rune extractor. It has had one since 0.9.0.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-