Repository navigation
v1.2.135
A ladder-efficiency release: the global ranked ladder now stops replaying pairings that have nothing left to prove, runs at a pace the production box can sustain, and keeps its match history bounded. A round of dependency updates also clears a critical advisory on the server.
No bot-facing or MCP-client contract changed.
Features
- A ladder pairing is now capped at 10 matches since either app's code last changed (
LADDER_PAIR_MATCH_CAP,0restores play-forever). With only 66 distinct pairings among eligible apps, each pairing had been replaying roughly 85 times a day. Once every pairing reaches the cap, the ladder idles until someone edits a bot, and an edit opens that app's pairings again.
Fixes
- The ladder loop is throttled in production: matches now start every 30 seconds instead of back to back, and the per-match timeout is raised to 120 seconds. Previously about one match in five ran out of time on the contended box and finished unrated.
- Re-saving an app with the name it already has no longer counts as an edit, so it can't reset the ladder's pairing caps.
- Ranked match history is now bounded. When an app changes, results recorded against its previous version are dropped, so a pairing's stored matches are always its head-to-head record between the two current versions. An hourly sweep clears pairings that stopped playing entirely, after 90 days (
LADDER_MATCH_RETENTION_DAYS).
Security
express5.3, which pulls in a fixedproxy-addrand clears a critical IP-spoofing advisory (GHSA-jqcg-44mw-7w3h) in the code that resolves client IPs behind the load balancer for rate limiting.- Cleared the remaining high and critical advisories that had turned the dependency gate red on
main, including@modelcontextprotocol/sdk,brace-expansion,shell-quote,axios, andundici. One unfixable, dev-only advisory (braces, GHSA-vfj7-8cjw-p6xm, reachable only throughnodemon) is now the single documented entry in the audit allowlist.
Build & Tests
express-rate-limit8.7.1,pino10.4, andpino-pretty13.2 on the server;@vitejs/plugin-react6.1.2 in the UI.