Skip to content

An unused seat yields to a waiter; the holder armed to yield is the one that served most (draft for Codex) - #5914

Closed
joelteply wants to merge 1 commit into
canaryfrom
fable/an-unused-seat-yields
Closed

joelteply wants to merge 1 commit into
canaryfrom
fable/an-unused-seat-yields

Conversation

@joelteply

Copy link
Copy Markdown
Contributor

Draft for @codex's review: it changes his grant custody code (fair publisher).

Measured (M5, 2026-11-10, 15:02 to 15:12Z): 2 lanes for 4 residents. Aiko and Benchy waited queued (49 and 55 delib.window.waiting, 'Queued { position: 2, of: 2 }') while holders Aris and Atlas acted 1 and 2 times in 10 minutes.

Two causes:

  • Only fresh service since a grant made a holder a handoff candidate, so an idle or slow holder kept her seat.
  • yield_after armed the first holder by uuid, so the same holder was always the one armed.

Change:

  • A holder idle across two evaluations (her seat from before the first, nothing in custody at either) becomes a candidate.
  • A holder who never served on this engine holds no KV here, so her seat is withdrawn without a physical handoff.
  • The armed holder is the one that served most since her baseline.
  • Custody checks are unchanged: a ticket still needs a receipt, and reclaim still waits for her turn lock.

Tests: an_unused_seat_yields_to_a_waiter_after_two_idle_evaluations and the_holder_that_served_most_is_armed_to_yield.

Not tested locally yet (no build beside serving). CI compiles it, and a serving-down window plus a replay come before any live read.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo

…he one that served most

On the M5 (2026-11-10, 75f1ba7 and after) two lanes served four residents, and Aiko and Benchy
waited queued for ten minutes (49 and 55 delib.window.waiting) behind holders that were idle or
slow. Only fresh service since a grant made a holder a yield candidate, and the armed yield was
the first holder by id, so a slow or idle holder pinned the queue.

- A holder idle across two evaluations (her seat from before the first, nothing in custody at
  either) is a handoff candidate whether or not she served since her grant; one that never
  served on this engine holds no KV here, so her seat is withdrawn with no physical handoff.
- The holder armed to yield (yield_after) is the one that served most since her baseline.

Tests: an unused seat goes to the waiter after two idle evaluations, never one; the holder that
served most is armed, not the lowest id. Draft for Codex's review (his grant custody code).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo
@joelteply

Copy link
Copy Markdown
Contributor Author

Included in the live stack, #5917 (one line of work: no duplicate copies). #5913's board change stays reverted there until a serving-plan replay proves it.

@joelteply joelteply closed this Nov 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant