Repository navigation
feat: resume automatic matches through a bounded background runner - #36
Merged
Merged
Conversation
nosam1998
marked this pull request as ready for review
September 30, 2026 22:17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
All-opponent matches now return their initial state immediately and advance through the server's background runner. The service discovers pending turns from persisted records, commits bounded batches with revision checks, and isolates unavailable records so healthy matches can continue. Restart resumes unfinished play without requiring a client or an in-memory notification.
The host bounds queued IDs, concurrent scheduler tasks, and search workers. Shutdown cancels pending jobs; cancellation stops in-process searches through their injected clock while retaining the worker permit until CPU work ends. Private observations still enter players only through the existing seat-scoped path.
Tests cover bounded cursor discovery, competing commits without duplicate turns, unavailable records, a real restarted bot-vs-bot game observed through WebSocket, durable completion, and worker capacity recovery after cancellation. Paid providers still require durable spending claims before installation; this runner uses the installed in-process opponents.