When the bot PR auto-merges, main moves — which the poll loop detects as 'main moved' and tries to close the PR. But the PR is already merged, so gh pr close fails with an error. Fix: when main moves, re-check PR state before closing. If it's already MERGED, exit cleanly. Also make gh pr close non-fatal (|| true) as a belt-and-suspenders guard against the same race on the other close paths.