Merge lane: disarm GitHub auto-merge on PRs

Task 6906 · Done · Coder · created · updated

On main (2026-10-17, 21:04:46Z), #5650 merged outside the lane about 1 h after the lane was switched on. Its runner had armed GitHub auto-merge while the lane was OFF, and GitHub merged it as soon as it became mergeable. develop moved under lane run 6904 (an 11-PR batch, mid-gate), so the lane's own rule (develop moved → requeue) throws that gate away. The guard stops NEW arming only; an existing arm survives the switch-on. Ask: the lane takes sole ownership of a PR it queues. - When a row is queued (`report_pr`), or at the latest when a batch takes it, the lane script disarms that PR's auto-merge through the forge (`jaah-forge`: add a `pr auto-merge --disable` verb if none exists; GitHub `disablePullRequestAutoMerge`). A failure is logged on the row, never fatal. - When the switch turns ON, every open runner PR of the project with auto-merge armed is disarmed the same way (a node does it; the CP never calls a forge, ADR-0156), and its runner is told the lane merges it. Out of scope: human-armed auto-merge on non-runner PRs (leave them, and name them on the Merge lane tab). Done means: lane tests cover a queued row with auto-merge armed (it is disarmed before the gate) and the switch-on sweep; `./dc check full` green.

Outcome

The lane now disarms auto-merge on every runner PR it owns: new `jaah-forge pr auto-merge --disable`, a sweep each lane run, and a sweep run when the lane turns on; the tab names PRs armed by anyone else. PR #5715 merged as fb8fcb630 and Jaah Deploy succeeded. Quick gate green; full gate not run (CP said lane off). Visual check done. Follow-up: draft Task 6919.

Pull request

Artifacts

Activity

  • Created
  • Ready
  • Runner started
  • Runner ended (done)