Repository navigation
feat(kix): show each base's landing queue - #566
Conversation
Quest-Claim: 8bd9cbc3f1fdcc9a
/projects/github/<owner>/<name>/queue lists each base's queue in landing order, its builds with their runs, and the watcher's drops from the last day with each one's outcome, for GitHub's merge queue and the watcher's own queue alike. It reads GitHub when served, under the maintainer check every project page uses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r/queue-page # Conflicts: # quest/m0/queue-watcher/per-base.md
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head: 114621d
Base: ddcefaa
No actionable findings identified in this static review.
The direction is sound: derive each base's queue from GitHub, reuse the existing live maintainer authorization, and keep queue assembly separate from rendering without adding stored queue state. I inspected the changed route, data fetching and pagination, queue ordering and build links in both modes, drop/outcome pairing and terminal-removal fallback, navigation links, fake GitHub support, and the new tests. I also checked the surrounding authorization and watcher/check-writing code.
Limits: GitHub-connector-only source review. I did not run builds or tests, execute the application, or independently reproduce the live-data results reported in the PR. This is a COMMENT review, not approval or a claim that the PR is ready to merge.
(Written by review (OpenAI))
|
quest land watch: the merge queue removed this pull request at 114621d because it conflicts with The land fixer works on it in the background, and the watcher re-enqueues it at the back of the queue once it is fixed or judged flaky, or hands it back here with what it needs. (written by quest land watch) |
|
quest land watch: armed auto-merge on this pull request at af61ca1, so it joins the back of the merge queue once its required checks pass, with the land fixer's fix ( (written by quest land watch) |

Finishes
quest/m0/queue-watcher/queue-page.md: kix shows each enrolled repository's landing queue at/projects/github/<owner>/<name>/queue, linked from the project's activity page and its inbox row.Summary
isMergeQueueEnabledis set): entries are listed bymergeQueueEntry.position. An entry inAWAITING_CHECKSis the build, and it links its merge group's run (taken from the first unfinished check's job link, trimmed to the run). After the entries come the PRs whose armed auto-merge is still waiting on checks to join.autoMergeRequest.enabledAtorder. Each one shows the title of its unfinishedquest queuecheck run. The run that isIN_PROGRESSis the build, and it links the run'sdetails_url.<!-- quest land fixer: <pick> removed ... -->) in the last 24 hours, newest first. Each drop shows its reason and links the comment. Its outcome is the watcher's next marked comment on the same pick: re-enqueued, handed back, fix not applied, refused, or held. Only comments from an app or a writer count, the same rulequest statusapplies to ejection comments. A dropped PR that has since closed is looked up by number to find its base.#authorized, the same live maintainer check every enrolled-project page uses. A private repository's readers without maintain get the 403 that the rest of kix gives today, until Private repositories widens that check for all pages.cloudflare/dev/github.ts) models these reads, so the route test and the seeded server can render the page.Checked against live moq-dev/moq data:
mainshowed 4 queued entries, one of them building with its run link, and 90 drops in the last day with their outcomes;releaseshowed in its own section.Choices made without asking
RemovedFromMergeQueueEvent. The watcher posts a marked removal comment in both modes, and its outcome comments carry the same pick marker. One repository-wide comment listing therefore covers both modes, and it includes PRs that have since merged or closed. Removals the watcher skips by design (a merge, or the App's own removal) are not drops. The plan named both sources; dropping the timeline events is simpler and loses nothing the page shows.Public API and wire impact
GET /projects/github/:owner/:repository/queue(HTML).pull_requests,issues,checks, andstatusesread, which observation already holds.Checks
just checkpassed.just worker-testpassed (22 files, 545 tests), including the newcloudflare/test/queue.test.ts.quest check --base origin/mainpassed.just testoutside the Worker) did not run, since nothing outsidecloudflare/andquest/changed.Suggested follow-ups
🤖 Generated with Claude Code
(Written by Claude Opus 5.5)
Review
mechanical fix by codex, gpt-6.1-sol, medium effort:
Merged base and re·solved quest/m0/queue-watcher/README.md conflict, preserving base child-list removal and PR queue-page documentation; ran just check and just test successfully.(head af61ca1)Rewritten by
quest reviewafter each round.01a1b88f-984f-7d31-8c6b-c8d05a8e8c8f, round 2The updated fallback displays terminal dispositions from removal comments, resolving the prior finding without introducing new issues in the reviewed changes.cloudflare/src/github/queue.ts:226:Read terminal dispositions from removal comments;Drop.next now preserves the removal comment’s prose second paragraph, and QueuePage displays it when no later outcome exists; the added unit and route assertions cover this fallback, including a held removal.After round 2: merged
origin/mainat 114621d. The merge was conflict-free except for taking main's deletion ofquest/m0/queue-watcher/per-base.md, which drops this PR's one-line edit to that file. Nothing undercloudflare/changed since the reviewed head c96a33a.just checkandjust worker-test(545 tests) passed again on the merge.