rebuild_f5.sh leaves f5/integration stale when the PR queue is empty nf-d8a3 ← Beads

closed priority 2 task unassigned activesession:a

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".

Why it happens

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".

Options

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.

Dependencies

None.

Comments

No comments.

Add a comment