Skip to content

I2987 — server.status and peers.list ask every checkout at once, a bounded number at a time

Make the repository-wide readings of `server.status` and `peers.list` ask the checkouts git registers concurrently, at most `server::ASKED_AT_ONCE` (16) at a time, through one helper (`server::each_checkout`). The answers are folded in the order git lists the checkouts, so the output, its order and `complete` are what the one-at-a-time loop gave. Each probe stays bounded by the declared probe timeout, so the wait is a few timeouts however many checkouts there are.

DONE wave 0 · p1 · implementation profile · parallel safe

Part of a-second-adopter-is-served — A second adopter is served: what a foreign repository met on its first day is fixed in the tool.

Objective

Make the repository-wide readings of `server.status` and `peers.list` ask the checkouts git registers concurrently, at most `server::ASKED_AT_ONCE` (16) at a time, through one helper (`server::each_checkout`). The answers are folded in the order git lists the checkouts, so the output, its order and `complete` are what the one-at-a-time loop gave. Each probe stays bounded by the declared probe timeout, so the wait is a few timeouts however many checkouts there are.

Why

An adopter's 0.29.0 field report (prismatic-platform, 2026-10-18, item 5) measured `/api/v1/server` with the default `checkouts=repository` blocking for 30 s or more while `/` answered in 0.5 ms, and `serve status` failing with `Resource temporarily unavailable (os error 35)`, with about 58 `serve` processes on the machine. Both capabilities read each checkout's lease and probed its server one after another, so one wedged server added a full probe timeout per checkout. The brief reports 545 boards on this machine, and the blackboard (I2980) reads them through the same gather.

Current state

server_status and peers_list loop over the checkouts sequentially; the wait is the sum of every probe.

Desired state

The checkouts are asked sixteen at a time and the answer is the same, in the same order.

Scope

  • apps/majordomus-cli/src/capability/builtin/server.rs
  • apps/majordomus-cli/src/capability/builtin/peers.rs

Dependencies

None. This issue is a root of the graph.

Acceptance criteria

  • Every checkout is answered in the order given, more than one is asked at once, and never more than ASKED_AT_ONCE (unit test every_checkout_is_asked_at_once_and_answered_in_order)
  • The existing server and peers unit tests and their cases pass unchanged

Validation

  • cargo test --lib -- capability::builtin::server
  • cargo test --lib -- capability::builtin::peers

Evidence required

  • unit_checkouts_at_once

Evidence

coverstypecommandresultat commit
unit_checkouts_at_oncecivalidate run 39438896504 at master 9a5a9b77520: rust (1-3) jobs 118683336143 118683336062 118683336401 run cargo test, incl. capability::builtin::server::every_checkout_is_asked_at_once_and_answered_in_order (baadbbfb025)success (the run's only red job is pages, which runs no test)a81b1e3

Timeline

started
2026-10-20T16:18:04Z
verified
—
completed
2026-10-20T16:32:59Z

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I2987.yaml. Read it back with majordomus plan show I2987.

Searches the titles and descriptions of every page this site publishes.