feat(pool): no machine-wide width - 128 passes per available account

Jorijn: "there is no need to do a global cap anymore, the cap should be
128 per available account". `--concurrency` no longer defaults to 128:
the limits are each OAuth account's 128 (and the local login's), every
driver's counted, an API seat's own REVIEW_GATES_API_CONCURRENCY, and
free memory. `--concurrency N` still caps the machine when given; a value
below 1 is a usage error.

The dump's args.concurrency is null then. The board's driver settings
read `128 per account`, which every driver's `seats` shows as that
driver's width, and the `seats` header says a width is that driver's cap.
The Scheduler test runs 300 passes on two accounts: 256 at once, 128 each.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jorijn van der Graaf 2026-10-31 17:33:11 +01:00
commit 61ee4602f4
Signed by: jorijnvdgraaf
GPG key ID: 2937E59CDCC1BCFB
12 changed files with 98 additions and 19 deletions

View file

@ -103,8 +103,9 @@ side (`slots.*`). Each instrument is shared in its own way:
at what they were admitted at, and the budget's free memory is the
reading from before they ran (`Board::MemoryBase`) — "nothing in flight"
means nothing on the machine; their passes count in each seat's
projection and in an API key's slots; and `--concurrency` is the
machine's width, every driver's passes counted. A driver waiting on
projection, in an account's 128 and in an API key's slots; and
`--concurrency`, when given, is the machine's width, every driver's
passes counted. A driver waiting on
what another holds re-checks every 30 s. A driver that died is swept by
its lifetime lock under the board's `drivers/`, a pass by its deadline. A
driver takes its passes with it however it ends: each pass runs under a
@ -241,8 +242,13 @@ therefore the hash: re-freeze with `--replace` into the same dir
| 4 | the owner | approves this exact hash, then the push happens |
Every lens runs on Opus 5.5 at effort `xhigh` (`--effort` overrides).
`--concurrency` is 128 by default (2026-10-15), the width of the machine:
two drivers running at once share it (2026-10-31, the board). One full run
There is no width of the machine by default (2026-10-31, Jorijn: "there is
no need to do a global cap anymore, the cap should be 128 per available
account"): every OAuth account takes at most 128 passes at once, every
driver's counted (`REVIEW_GATES_OAUTH_CONCURRENCY`), an API seat its
`REVIEW_GATES_API_CONCURRENCY`, and free memory the rest; `--concurrency N`
still caps the machine when given (it was 128 by default from 2026-10-15,
the width two drivers running at once shared). One full run
per hash: a second on the same hash is refused while the first is live
(`State::RunLock`; a test run takes a run number of its own), and no two
drivers share a scratch dir. `flatpak run net.catcrafts.CrafterReview seats` shows the
@ -583,4 +589,6 @@ repository.
account takes at most 128 passes at once (every run measured with 149 or
more in flight on one account drew usage-limit rejections); a 'concurrents' rejection backs the seat off for seconds,
not until a window's reset; `seats` shows `no limit` in such an account's
5-hour column.
5-hour column. Then (Jorijn: "there is no need to do a global cap anymore,
the cap should be 128 per available account") the machine-wide width
went: `--concurrency` caps only when given.