Twinned from https://github.com/cfsh/ninefold/issues/400 by tools/beads/import_github.py's reconcile pass.
With zero open PRs, rebuild_f5.sh exits early:
``` ✗ No open PRs — nothing to integrate. (exit 1) ```
f5/integration is then left at whatever it was, which is now behind main:
``` main: bbe013b L3 'fit notes in view' centres the occupied range (#384) (#386) f5: d59352e Merge …'origin/fix/issue-384-fit-notes-centre' into f5/integration f5 behind main by 1 commit ```
So ./f5.sh currently hands back an older build than main — it hard-checks-out f5/integration, which no longer contains the last merge. Silent: the script reports success and prints the branch it landed on, and nothing says that branch is stale.
Small today (one commit, and that commit is #386, which Aedan already playtested from the pre-merge f5 build). It gets worse the longer the queue stays empty, and it is exactly when someone is most likely to assume "everything is merged, so f5 must be current".
f5/integration is defined as *main + every open PR head*. With no open PRs that expression is just main — a perfectly good answer the script currently treats as an error. tools/pr/rebuild_f5.sh:53:
```bash BRANCHES=$(gh pr list … --json headRefName -q '.[].headRefName' | sort -u) [ -n "$BRANCHES" ] || { echo "✗ No open PRs — nothing to integrate."; exit 1; } ```
The guard predates the queue ever being empty; it reads as "something is wrong" when the real meaning is "the frontier is main".
f5/integration to origin/main and push. The checkout at :56 already does git checkout -q -B f5/integration origin/main, so the empty case falls out of the existing path — it just needs the guard to not exit first. Verify and push as normal, print ✓ f5/integration = main (no open PRs)../f5.sh will hand back an older build. Cheaper, but leaves the trap armed.f5.sh compares against origin/main and warns when behind. Belt-and-braces on the consumer side; useful regardless of A or B, since f5 can also go stale mid-flight if a rebuild fails.A is the smallest correct change. C is a good complement — it is the only one that catches "f5 is stale" for reasons other than an empty queue.
None.
No comments.