-
v0.9.0
Stablereleased this
2026-07-31 07:07:46 -05:00 | 239 commits to main since this releaseChanged
-
The op.gg and Riot halves now run concurrently, so pacing op.gg no longer
costs the Riot crawl its window. They are unrelated hosts with unrelated
limits and separate rate limiters — serialising them only ever meant one sat
idle while the other waited out its own pacing. That was affordable when the
op.gg half finished in ~14 minutes. At 12.5 s a page it takes ~2.5 hours,
which would have left the Riot crawl ~30 minutes of a three-hour window, and
champion-damageandchampion-benchmarksare both built from those rows.Run together, each half gets the entire window instead of a slice. The crawl
window no longer needs widening — the recommendation in 0.8.0's notes is
withdrawn.Promise.allSettled, notPromise.all: a rejection in one half must not
cancel the other, which is the same isolation the per-artifact try/catch gives
inside each.The two op.gg passes (ranked, then classic) stay sequential with respect to
each other. They are the SAME host, and running them together would double the
request rate op.gg sees and undo the pacing.
Fixed
-
Concurrent halves could have raced on the Forgejo branch ref. Both publish
to the same branch, and the contents API's concurrency guard is the per-file
blob sha — it stops two writers clobbering one file and says nothing about two
commits racing to move the ref, which is what two different artifacts
publishing at the same instant would do.Commits now go through a one-at-a-time queue (
publish-queue.ts). Publishing
is seconds against crawls measured in hours, so serialising it costs nothing
measurable. A failed publish does not wedge the queue: later artifacts still
commit, and the caller still sees its own rejection. Validation happens
before queueing, so a schema failure surfaces as that artifact's error
rather than waiting behind another half's commit.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-