You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
The Stages page says a dispatch stage has "Not enough samples", though it never gets a Usual range #924
On 2026-10-20, the Console's Stages page on thirdshift showed the live Pickup run for #889 as a column with no stages: every cell read Not reached · —, and its header showed pickup-20261020T211301-0400 instead of a title. That is #889 itself, and PR #923 fixes it by giving a Pickup run or Security run a dispatched Run or dispatched Spec run stage once it dispatches.
#923 deliberately gives a dispatch stage no Usual range, as docs/guide.md now says: "A dispatch stage is never Silent or Slow and has no Usual range: the dispatched Run or Spec run carries its own." Usual range collection skips those stages.
The Stages page doesn't know that. For any stage with no Usual range it prints Usual range: Not enough samples under the row's name. On a dispatch row that never changes, however many Pickup runs finish, and it reads as though a range will appear once there are enough samples.
Blocked by #889: the dispatch stages don't exist until #923 merges.
Category: bug Summary: On the Stages page, a dispatch stage's row should say it has no Usual range, not "Not enough samples"
Current behavior:
On the Console's Stages page (/?page=stages), each row heading shows the stage's name and Usual range: <range>. When the repository has no Usual range for that stage, the heading reads Usual range: Not enough samples. After #889 (PR #923), a Pickup run or Security run enters a dispatched Run or dispatched Spec run stage. That stage never gets a Usual range by design, because the Run or Spec run it dispatched carries its own health. So its row reads Not enough samples forever.
Desired behavior:
A dispatch stage's row reads Usual range: —. Every other stage keeps its current text: the range when there is one, and Not enough samples when there are fewer than three stage times. Cells are unchanged. For example, the Pickup run's cell in a dispatched Run row still reads Running · <age> while live.
The time views behind Lanes and Stages (Views, Stage.usual, GridRow.usual): where the Usual range text is chosen.
docs/guide.md: already says a dispatch stage has no Usual range. Update it only if it describes the Stages page's row text.
Acceptance criteria:
With a live Pickup run whose record has a dispatched Run stage, the Stages page's dispatched Run row heading reads Usual range: —, not Not enough samples. The same holds for dispatched Spec run.
A non-dispatch stage with fewer than three stage times still reads Usual range: Not enough samples.
A non-dispatch stage with a Usual range still shows that range.
A test in the Console's page tests covers the first two criteria, and fails if the change is removed.
Activity
JacobStephens2 commentedon Oct 21, 2026
Agent Brief
Category: bug
Summary: On the Stages page, a dispatch stage's row should say it has no Usual range, not "Not enough samples"
Current behavior:
On the Console's Stages page (
/?page=stages), each row heading shows the stage's name andUsual range: <range>. When the repository has no Usual range for that stage, the heading readsUsual range: Not enough samples. After #889 (PR #923), a Pickup run or Security run enters adispatched Runordispatched Spec runstage. That stage never gets a Usual range by design, because the Run or Spec run it dispatched carries its own health. So its row readsNot enough samplesforever.Desired behavior:
A dispatch stage's row reads
Usual range: —. Every other stage keeps its current text: the range when there is one, andNot enough sampleswhen there are fewer than three stage times. Cells are unchanged. For example, the Pickup run's cell in adispatched Runrow still readsRunning · <age>while live.Key interfaces:
StageName::is_dispatch(name), added by Name what a Pickup run or Security run dispatched, and when, in its stage #923: decides whether a stage is a dispatch stage. Reuse it rather than matching the stage names again.Views,Stage.usual,GridRow.usual): where the Usual range text is chosen.docs/guide.md: already says a dispatch stage has no Usual range. Update it only if it describes the Stages page's row text.Acceptance criteria:
dispatched Runstage, the Stages page'sdispatched Runrow heading readsUsual range: —, notNot enough samples. The same holds fordispatched Spec run.Usual range: Not enough samples.Out of scope:
Not reached · —cells other Runs show in a dispatch row.