Post-deploy of v1.2.135: drain the ranked_match backlog and verify the ladder changes
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 8/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- aws, postgresql, typescript
Research direction
This is an operations runbook, not a code change: it needs AWS Elastic Beanstalk console access and RDS access that a newcomer will not have. The relevant setting is the LADDER_MATCH_RETENTION_DAYS environment variable, which controls the batched ranked_match sweep, and the /health endpoint reports the deployed version. Done means the table is drained, the version reads 1.2.135 across several polls, and the listed metrics are checked against their expected values.
Written by the indexing model from the issue text.
Description
Follow-up to the 2026-10-10 RDS memory investigation. v1.2.135 (#401 + #406) is cut and armed; the deploy alone does not finish the job.
1. Drain the ranked_match backlog (the step the RDS fix depends on)
ranked_match holds roughly 450–500k rows. #406 bounds the table at ~660 rows going forward (66 pairings x cap 10), but it will not clear the existing backlog promptly:
- Write-time pruning only fires when a pair plays a match — and at deploy nearly every pairing is already saturated (apps have ~1,800 matches each since their last edit, against a cap of 10), so pairs stop playing and are never pruned.
- The GC sweep window is 90 days, so it only removes rows older than that.
Left alone the table drains over ~90 days. To reclaim it in an afternoon, no code change is needed:
- EB console →
LADDER_MATCH_RETENTION_DAYS=1 - Wait ~4–5 h (the sweep is batched at 5,000 rows/statement, 100k/sweep, hourly)
- Set it back to
90
Side effect: every pairing un-saturates, so the ladder replays ~660 matches (~3 h at the new pacing) and re-saturates. Bounded, and it doubles as a clean baseline.
Optional polish: VACUUM (FULL, ANALYZE) ranked_match reclaims the disk and rebuilds the indexes. The FreeableMemory trend is fixed by the delete itself, so this is nice-to-have — and it needs a shell on the DB, which we do not currently have (see the prod-shell-access issue).
2. Verify the deploy
/health reports the version. Poll for ~6 consecutive hits reading 1.2.135 — a single hit can land on an instance mid-rotation during the Immutable swap.
3. Check the predictions
These were derived from measurements on 2026-10-10; they are falsifiable on purpose.
| signal | expected |
|---|---|
share of ladder.match with decided:false |
<10% (was 20%) |
ladder.match log rate |
near zero in steady state; the pool saturates within minutes of deploy |
EC2 CPUUtilization avg |
toward the ~20% ladder-idle baseline (was 38–42%) |
CPUCreditBalance |
starts re-accruing (has been pinned at 0 since ~2026-08-18) |
RDS FreeableMemory |
the ~-19 MB/month decline flattens |
RDS DatabaseConnections avg |
falls from 5.7 |
The load-bearing one is decided:false. If it does not drop below ~10%, the contention hypothesis behind #401's timeout change was wrong — something else is preventing matches from deciding, and the lever is LADDER_MATCH_SPEED or the match logic rather than the timeout.
4. Release notes
v1.2.134..v1.2.135 is the notes range. Covers the ladder pacing (#401), the pair saturation cap (#406), and the dependency batch that cleared the audit gate (#402/#403/#404).
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- Avg merge
- 8m
- Merged PRs (30d)
- 8
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from LeeAdcock/robocodeJs.com
-
priority: medium tech-debt
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
LeeAdcock/robocodeJs.com#411 ·
Maintainers usually reply within 1 day
-
enhancement priority: medium
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
LeeAdcock/robocodeJs.com#254 ·
Maintainers usually reply within 1 day
-
good first issue priority: low tech-debt
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
LeeAdcock/robocodeJs.com#146 ·
Maintainers usually reply within 1 day
-
dependencies priority: low tech-debt
Difficulty 1/5 Under an hour Newbie friendliness 15/100
LeeAdcock/robocodeJs.com#413 ·
Maintainers usually reply within 1 day
-
priority: low tech-debt
Difficulty 3/5 Half a day Newbie friendliness 32/100
LeeAdcock/robocodeJs.com#412 ·
Maintainers usually reply within 1 day
All issues in LeeAdcock/robocodeJs.com
Similar issues
-
ui(ListToolbar): search takes the full row on a phone instead of sharing it with the result countOpen
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
Maintainers usually reply within 1 day
-
priority:high
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
immich-app/immich#32426 ·
Maintainers usually reply within 1 day
-
documentation good first issue hacktoberfest help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
libredb/libredb-studio#1756 ·
Maintainers usually reply within 1 day