Found at PR #591's merge digest (control tower, 2026-07-20). The org ruleset (17988999) sets required_signatures: true, gating on every constituent commit of a PR — a single commit signed with an unregistered key (UNKNOWN_KEY) or unsigned (NO_SIG) blocks the merge even when everything else is clean, and the failure surfaces only as an opaque mergeStateStatus: BLOCKED.
Evidence: #591 had 2 UNKNOWN_KEY commits (authored on a lane machine whose signing key GitHub doesn't recognize) + 1 NO_SIG (an agent worktree commit that skipped signing); the desktop's config produces VALID commits.
Actions:
- Inventory each machine running lanes (desktop, personal laptop, work laptop) — confirm
user.signingkey + gpg.format config AND that the key is registered on the GitHub account. Register missing keys.
- Ensure agent worktrees inherit signing config (the NO_SIG commit suggests a worktree/env where commit.gpgsign didn't apply).
- Babysit/tower diagnostic: when mergeStateStatus is BLOCKED with green checks + zero threads, check commit verification states before anything else (this failure mode reads as "mystery block").
Cross-repo note: ruleset itself is github-iac-owned; no ruleset change recommended — fix the keys, keep the protection.
Found at PR #591's merge digest (control tower, 2026-07-20). The org ruleset (17988999) sets
required_signatures: true, gating on every constituent commit of a PR — a single commit signed with an unregistered key (UNKNOWN_KEY) or unsigned (NO_SIG) blocks the merge even when everything else is clean, and the failure surfaces only as an opaquemergeStateStatus: BLOCKED.Evidence: #591 had 2 UNKNOWN_KEY commits (authored on a lane machine whose signing key GitHub doesn't recognize) + 1 NO_SIG (an agent worktree commit that skipped signing); the desktop's config produces VALID commits.
Actions:
user.signingkey+ gpg.format config AND that the key is registered on the GitHub account. Register missing keys.Cross-repo note: ruleset itself is github-iac-owned; no ruleset change recommended — fix the keys, keep the protection.