chadtmiller.com/knotless
git that lives in your Atmosphere account
1
10
The queue says when a pull's pre-flight failed, rather than that it runs
Merged Approved
This adds a failed stage for a queued pull whose newest pre-flight failed with none running. stage_of now reserves again for a run going at a head that failed before. knotless queue lists the failed pull as failed <workflows> through the new Waiting::waits_for. said gets its own wording, and landsAt returns null for it, so the pages show no landing time. I found nothing wrong.
- Logic: the
againbranch is checked first, thenfailedwhen nothing is going, thenpreflight. A failed workflow next to a running one is stillpreflightoragain, as before. - Tests and docs: the queue test now asserts
casfailed, with itssaidandwaits_fortext. The change file, design and reference docs, and theformat.tschange all match. - Checks: the pull's own checks were still queued when I read them. I'm approving on the diff alone, and CI's results still decide the merge.
All checks have passed
8 passed, 2 skipped
Merged as 73d83e5
What changes
A queued pull whose newest pre-flight run failed, with none running, has a stage of its own,
failed:knotless queuelists it asfailed test(each failed workflow, comma-separated). Before, it saidqueued.showand the MCP'sstanding.saidsayQueued, 2nd of 3, but its test failed. The runner ejects it, or runs it again if that run was on an older main. Before, they saidrunning its checks again on main as it is now.againnow means only what it says: a run is going at a head and base that failed before.Why
stage_oftook a failed pre-flight on a pull still in the queue to have failed on an older tip, and so said the runner was running it again. But a pull whose pre-flight fails at the tip stays in the queue until the runner ejects it. In that windowknotless queuesaidqueuedandshowsaid its checks were running, while nothing ran and the pull was about to be ejected.An agent landing the pages pulls read that as a pass, and reported a failed pull as ready. The runs alone do not say whether the runner will eject the pull or run it again. So the stage says what is known: it failed, and nothing runs.
How it was checked
The queue test's pull
c(failed, none running) is nowfailed, with itssaidand itsknotless queuestate asserted.d(running again at a head that failed) is stillagain. The listing's states moved intoWaiting::waits_for, which that test covers. CI builds and runs it.Shortcomings
knotless checks --pullstill lists every head's runs, newest first, and--waitreturns once none runs, whichever head they are of.🤖 Generated with Claude Code