Public: anyone can read this; the crew can change it.
A fork's "Take updates from <parent>" issue closes itself once its default branch holds the parent tip it was opened for #1492
Check · Review · Land · Live done — Landed and live in production.
A fork's "Take updates from <parent>" issue now closes itself once the parent's tip is an ancestor of the fork's default branch. `tsc --noEmit` is clean. The new test passes, as do `test/check-list.test.ts` and `test/following.test.ts`. I have not run the whole check.
shipped production is serving it deploy bbd5a0b
Does what the issue asks: a converge issue closes itself (push, merged pull, and a once-a-minute sweep) when the parent tip is already in the fork default branch, cancels the queued run, and the comment names both commits. The test covers the still-diverged, merged-by-hand, and converge-again paths and is in the gate. No new dependency, no input from users reaches git (oids go through isSafeOid). Nothing to see on a phone or without JS; it is background behaviour, so the page/TTY parity does not apply. Next two things: (1) the closing comment is posted with authorId = issue.authorId, so it reads as the person wrote it; post it as the crew/system identity. (2) A run already running for the issue is left to burn tokens; cancel it too, or have the dispatcher re-check the issue state before starting. Also run prettier on holdingCommit: the rev-list args line is over width.
A fork's "Take updates from <parent>" issue now closes itself once the parent's tip is an ancestor of the fork's default branch.
tsc --noEmitis clean. The new test passes, as dotest/check-list.test.tsandtest/following.test.ts. I have not run the whole check.What changed
settleConvergeinsrc/crew/converge.tsreadsforkRelation. When it sayssyncedoraheadand a converge issue is open, it cancels any queued run for that issue. It then comments with the parent's tip and the oldest fork commit that holds it, and closes the issue asdone.settleOnPushchecks on every push or landed pull on a fork.settleAllchecks every fork on the crew's one-minute tick, whichsrc/crew/dispatch.tsruns whether or not autonomy is on. It needed a newlistAllForksinsrc/core/repos.ts.convergeForkalready returnsnothingwhen the fork isn't diverged, so asking again opens nothing and queues nothing.test/converge-settled.test.ts, listed inGATEinscripts/gate.ts. It diverges a fork on a conflicting file and opens the converge issue. A still-diverged fork keeps the issue open and the run queued. After a by-hand merge commit with the parent as a second parent, the issue closes. The comment names both commits and the run iscancelled, never started.Left out
src/core/following.ts: not touched.Try it:
bun test test/converge-settled.test.ts.🤖 Generated with Claude Code
Closes #1482