Repository navigation
fix(loop): the WIP limit was on the backlog column, not on work in progress - #116
Merged
Merged
Conversation
…ogress
The swarm ran at 14% of capacity and the author refused to help, saying it was
at the WIP limit. It was counting the wrong column.
MEASURED. Five authored issues open, so room = 0 and nothing was filed. FOUR of
those five had already been dispatched and were sitting in sendBack or wait.
The real queue - issues nobody has started - was ONE.
open queen-authored: 5 (1426 1425 1424 1421 1420)
of those dispatched at least once: 4
UNSTARTED, the actual queue: 1
Kanban limits work IN PROGRESS and never the backlog. Dependabot's
open-pull-requests-limit, which this was copied from, exists to protect a HUMAN
reviewer's capacity - and the reviewer here answers in p50 0.8 s, measured over
119 dispatches. There is no human to protect and nothing to throttle.
Little's Law gives the target. Bee runtime is p50 792 s over 120 dispatches; four
workers therefore consume roughly 18 tasks an hour while the author fires about
four times an hour. The queue must hold enough that a worker always finds
something - workers + 1 - and that is a depth, not a census of everything open.
An issue with a dispatch row is IN PROGRESS. It is not queue and is no longer
counted as queue.
WHAT IS DELIBERATELY UNCHANGED. A count that could not be taken still returns
null and still refuses to file: zero would LIFT the limit rather than hold it.
And the stall guard still reads the oldest OPEN issue rather than the oldest
unstarted one, because an issue dispatched six hours ago and still not closed is
exactly as much evidence that the drain has stopped as one nobody ever started.
The guard asks 'is anything finishing'; the queue depth asks 'is anything
starting'. Its message now prints both numbers, having once printed a count of
open issues while the variable held the queue depth.
Result: room 0 -> 4, four issues filed with disjoint boundaries (browseros-ai#1427-browseros-ai#1430),
and the swarm reached 4 bees of 4 for the first time, with 3 more queued.
selftest 60/60.
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.
The swarm ran at 14% of capacity and the author refused to help, saying it was at the WIP limit. It was counting the wrong column.
The measurement
Five open, so
room = 0and nothing was filed. Four of those five had already been dispatched and were sitting insendBackorwait— work in progress. The real queue, issues nobody has started, was one.Why the rule was wrong, not just mistuned
Kanban limits work in progress and never the backlog. Dependabot's
open-pull-requests-limit— the model this was copied from — exists to protect a human reviewer's capacity.Measured here over 119 dispatches:
There is no human to protect and nothing to throttle. Little's Law gives the target instead: four workers consume roughly 18 tasks an hour while the author fires about four times an hour, so the queue must hold enough that a worker always finds something —
workers + 1. That is a depth, not a census of everything open.An issue with a dispatch row is in progress. It is not queue and is no longer counted as queue.
What is deliberately unchanged
nulland still refuses to file. Zero would lift the limit rather than hold it — the oldest rule in this file.Result
room 0 → 4. Four issues filed with pairwise disjoint boundaries (Trinity-S-AI-DNA/trios#1427–browseros-ai#1430), and the swarm reached 4 bees of 4 for the first time, with 3 more queued:node selftest.mjs→ 60 passed, 0 failed, no network. Three new cases pin the rule, the null-refusal, and the report agreeing with the measure it reads.