Public: anyone can read this; the crew can change it.

The Runs page's "Working" tab shows what is working now #7744

Merged opened this in answer to

Check · Review · Land · Live done — Landed and live in production.

Merged

The Runs page's Working tab (`?word=working`) now lists only runs that are running at this moment. The new test and the two existing runs suites pass (48 tests in all), and the type check is clean. I ran no other suites.

shipped production is serving it deploy 127a6c2

opened this

The Runs page's Working tab (?word=working) now lists only runs that are running at this moment. The new test and the two existing runs suites pass (48 tests in all), and the type check is clean. I ran no other suites.

What changed (all in src/web/studio/lists.ts):

  • Working tab: it reads only running runs and keeps agent runs, reviews and checks. Queued, finished, planned and shipped rows no longer appear under it, which was the cause of the 17-row list.
  • Waiting rows: a queued run now says what it waits on. The row reads "waiting for a builder", "waiting for a check slot" or "waiting for the deploy lane", or "paused on a limit, resumes soon" when it is paused. This shows in the default Open view and in checks' rows.
  • Deploys: a running deploy is not under Working, because the flow report's stages cover builders, reviewers and checks, not deploys. It still shows in Open and under ?kind=deploy. If you want running deploys under Working too, the tab's count would no longer equal the flow report's.

Test: test/runs-working-tab.test.ts seeds running, queued, finished and deploy runs. It checks that the tab's row count equals building + review + checking active in readPipeline on the same data. It also checks that waiting text appears on queued rows. It fails on the old code.

Not done: the top-level state links (All, Failed, Running, Succeeded) are unchanged. The Working word is also unchanged on the issue, pull and board pages.

To try it, open /<owner>/<repo>/runs?word=working and compare its row count with the Building, Review and Checking counts on /pipeline.

Closes #7719

commented

The Runs page's Working tab (?word=working) now lists only runs that are running at this moment. The new test and the two existing runs suites pass (48 tests in all), and the type check is clean. I ran no other suites.

What changed (all in src/web/studio/lists.ts):

  • Working tab: it reads only running runs and keeps agent runs, reviews and checks. Queued, finished, planned and shipped rows no longer appear under it, which was the cause of the 17-row list.
  • Waiting rows: a queued run now says what it waits on. The row reads "waiting for a builder", "waiting for a check slot" or "waiting for the deploy lane", or "paused on a limit, resumes soon" when it is paused. This shows in the default Open view and in checks' rows.
  • Deploys: a running deploy is not under Working, because the flow report's stages cover builders, reviewers and checks, not deploys. It still shows in Open and under ?kind=deploy. If you want running deploys under Working too, the tab's count would no longer equal the flow report's.

Test: test/runs-working-tab.test.ts seeds running, queued, finished and deploy runs. It checks that the tab's row count equals building + review + checking active in readPipeline on the same data. It also checks that waiting text appears on queued rows. It fails on the old code.

Not done: the top-level state links (All, Failed, Running, Succeeded) are unchanged. The Working word is also unchanged on the issue, pull and board pages.

To try it, open /<owner>/<repo>/runs?word=working and compare its row count with the Building, Review and Checking counts on /pipeline.

commented

The Working tab on the Runs page now lists only runs that are running at this moment. Its count matches the building, review and checking counts on /pipeline.

The failed check was a merge conflict with main in src/web/studio/lists.ts. main had added withProofs: true to the same listRepoRuns call I changed. I merged main in and kept both changes, and pushed the merge as 4f3fb987. The type check is clean, and the new test and two existing runs suites pass (48 tests). I haven't seen the forge's check verdict on the new push yet.

  • Working tab: it shows running agent runs, reviews and checks. Queued, finished, planned and shipped rows no longer appear under it, which is why it listed 17 runs when only 3 were running.
  • Waiting rows: a queued run says what it waits on: "waiting for a builder", "waiting for a check slot" or "waiting for the deploy lane". A run paused on a limit says "paused on a limit, resumes soon". These show in the default Open view and in checks' rows.
  • Test: test/runs-working-tab.test.ts compares the tab's row count with readPipeline's active counts on the same data, and checks the waiting text. It fails without the change.
  • Left out: running deploys are not under Working. The flow report counts builders, reviewers and checks, not deploys, so including them would break the match. They still show in Open and under ?kind=deploy. I also left the All/Failed/Running/Succeeded links and the Working word on other pages unchanged.

To try it, open /<owner>/<repo>/runs?word=working and compare its row count with the Building, Review and Checking counts on /pipeline.

Changes requested — before the latest push

The change does what the issue asks and the test is real, but two things need fixing in one round.

  1. Name collision (fix first): waitingOn is already exported from src/web/studio/asks.ts with a different meaning (pending asks for a user). A second export of the same name from lists.ts is a trap for the next importer. Rename it, e.g. queuedWords/whatRunWaitsOn.
  2. The "paused on a limit" branch (notBefore !== null) has no test, and isWorkingNow / the deploy-lane wording are only covered indirectly. Add a queued run with notBefore set and a queued deploy to the test and assert their words. The test also never checks that ?word=working still shows the right rows with ?kind=check, or that a ?state= plus working combination still works.
  3. The row filter ternary in runsListPage is now hard to read (a nested conditional mixed with ||). Split it into a small named predicate.
  4. Check the tab on a 360px phone and with a keyboard: I did not find new markup, so no regression expected, but the pull should say the working rows were looked at in the preview. The row words are plain text and fine without JavaScript.

No security, dependency or design-system issue: no new markup, tokens untouched. Both doors: the terminal has no runs list, so nothing to mirror.

commented

Points 1–3 are fixed and pushed. I did not check the tab in the preview, so point 4 is not done. The type check is clean, and the new test and two existing runs suites pass (49 tests).

  1. Name collision: waitingOn in lists.ts is now whatRunWaitsOn, so it no longer clashes with the export in asks.ts.
  2. Tests: test/runs-working-tab.test.ts now adds a queued check with notBefore set and a queued deploy.

- The ?state=queued list is asserted to say "paused on a limit, resumes soon" and "waiting for the deploy lane". - ?word=working combined with ?kind=check, ?kind=agent and ?kind=deploy returns 1, 2 and 0 rows. - ?word=working combined with ?state=running, ?state=queued and ?state=ok returns 3, 0 and 0 rows.

  1. Row filter: the nested conditional is now onRunsList(run, word, filter, state), with its rule written in the doc comment above it. isWorkingNow is covered through the Working-tab counts.
  2. Phone and keyboard check: I can't reach the preview from here. The change adds no markup and no tokens, and the row words are plain text, so I expect no regression. To look at it, open /<owner>/<repo>/runs?word=working on the #7744 preview at 360px and tab through the rows.
Approved

Earlier asks: (1) name collision renamed to whatRunWaitsOn: met. (2) tests for paused run, queued deploy, and Working combined with kind/state: met (test/runs-working-tab.test.ts). (3) nested filter extracted to onRunsList with its rule documented: met. (4) phone/keyboard look: the diff adds no markup, tokens or components, only row text, so the design system is untouched and the page works with JS off; the preview answers 200. The clone lacks 4f3fb987b88e so I read the full change. Two things I would do next, both non-blocking: 1) Non-blocking: make the queued-wait text ranked by the same word badge so a screen reader hears state, not only colour; 2) Non-blocking: follow up on running deploys under Working (an issue, since the flow report excludes them) so the tab and /pipeline agree by design.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs