A card waiting on a human does not hold a ready slot: promote_next counts only cards that are moving #135

Closed
opened 2026-10-18 16:05:08 +00:00 by teahubxyz · 0 comments
Owner

Overnight the queue stalled for eight hours: the three ready cards (#71, #79, #80) were all parked in needs-human (an objection waiting for a human or a /time retry), promote_next() saw three ready cards and promoted nothing, and the heartbeat ran every hour doing nothing while a dozen cards sat queued. A human had to relabel one card to free a slot.

  • promote_next() counts toward TIME_PARALLEL only the ready cards that are moving: last real beat in dispatched, pr, ci-dispatched, no-checks, checks-failed, or none yet. A card whose last real beat is needs-human, error or stuck is waiting on a person and does not hold a slot (it keeps its ready label so a /time retry still finds it).
  • tick() prints the two counts (ready=N moving=M) so a stall is visible in the run log.
  • Tests against World: three ready cards all in needs-human → the oldest queued card is promoted; two moving plus one parked → one promotion; three moving → none (as today).
  • CHANGELOG line under Added.

DONE: PR open; python3 .github/time/test_time.py passes with the new checks; CI green.

Overnight the queue stalled for eight hours: the three `ready` cards (#71, #79, #80) were all parked in `needs-human` (an objection waiting for a human or a `/time retry`), `promote_next()` saw three `ready` cards and promoted nothing, and the heartbeat ran every hour doing nothing while a dozen cards sat `queued`. A human had to relabel one card to free a slot. - `promote_next()` counts toward `TIME_PARALLEL` only the `ready` cards that are moving: last real beat in `dispatched`, `pr`, `ci-dispatched`, `no-checks`, `checks-failed`, or none yet. A card whose last real beat is `needs-human`, `error` or `stuck` is waiting on a person and does not hold a slot (it keeps its `ready` label so a `/time retry` still finds it). - `tick()` prints the two counts (`ready=N moving=M`) so a stall is visible in the run log. - Tests against `World`: three `ready` cards all in `needs-human` → the oldest `queued` card is promoted; two moving plus one parked → one promotion; three moving → none (as today). - CHANGELOG line under Added. DONE: PR open; `python3 .github/time/test_time.py` passes with the new checks; CI green.
teahubxyz added the queued label 2026-10-18 16:05:08 +00:00
teahubxyz referenced this issue from a commit 2026-10-19 13:48:28 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: teahubxyz/time#135