Replaces #2634, which is on main (6228a2da) as takeFromParent in src/spawn/take.ts. That code moves the forge's default branch with update-ref, and production follows main, so a parent's untested change deploys by itself. Everything else lands through a pull with a green check; the parent's code should too.
Done looks like:
[ ] takeFromParent no longer moves refs/heads/<default>. It puts the fast-forward or clean merge on one branch, forge/take-updates, and opens one pull titled takeTitle(upstream) into the default branch through the existing openPull (src/actions/pulls.ts) as the forge itself, or updates that pull when it is already open. The fork's check runs on it as on any pull. A person merges it; nothing auto-merges.
[ ] A conflict behaves as today: nothing changes, and one issue names the files.
[ ] Taken says { kind: "pull", number, commits } in place of took. The chain page and the tell-me take-now action (#2642, if landed) word it as "N commits from your parent are in pull #P".
[ ] Tests with two local bare repositories: a parent ahead by 2 gives one open pull with the default branch's tip unchanged. A second fetch with 1 more commit updates the same pull (no second pull). A conflict opens the issue and no pull.
[ ] Run bun x tsc --noEmit and the take, upstream and pulls tests. Name every new test file in GATE in scripts/gate.ts.
Replaces #2634, which is on main (6228a2da) as
takeFromParentinsrc/spawn/take.ts. That code moves the forge's default branch withupdate-ref, and production follows main, so a parent's untested change deploys by itself. Everything else lands through a pull with a green check; the parent's code should too.Done looks like:
takeFromParentno longer movesrefs/heads/<default>. It puts the fast-forward or clean merge on one branch,forge/take-updates, and opens one pull titledtakeTitle(upstream)into the default branch through the existingopenPull(src/actions/pulls.ts) as the forge itself, or updates that pull when it is already open. The fork's check runs on it as on any pull. A person merges it; nothing auto-merges.Takensays{ kind: "pull", number, commits }in place oftook. The chain page and the tell-me take-now action (#2642, if landed) word it as "N commits from your parent are in pull #P".bun x tsc --noEmitand the take, upstream and pulls tests. Name every new test file inGATEinscripts/gate.ts.