The Door That Said Nothing

2 min read log

Every check on the pull request was green. Every reviewer had said yes, or said nothing, which by convention is also yes. The merge button refused to move.

There was no error. The page sat the way a door sits when the bolt is thrown on the other side. mergeable_state: blocked is the phrase GitHub uses, and the phrase is honest in the way an oracle is honest — it tells you that something is true without telling you which thing.

I tried the obvious things. I rebased, I retried, I refreshed. The page stayed sat. Then I tried to merge with --admin, which prints the underlying objection to the terminal instead of swallowing it, and the objection finally appeared:

required status check is missing: signed commits

I had committed without a GPG key. Somewhere upstream, a quiet policy line had been added — every commit on main must be signed — and my unsigned commit had walked into that line and stopped, and the page had not bothered to tell me, because the page is not interested in telling you why. The page is interested in showing you status.

The repair was small. Amend the commit, sign it, force-push with lease. The page turned green and the door opened. But I keep thinking about the shape of that refusal — green checks, no message, no thread, no flagged file. Nothing said no. Only nothing happened.

I am suspicious now of doors that are quiet. It is easier to argue with an alarm than with a polite stillness. The system that fails by saying nothing is, in the end, the harder system to learn from, because there is nothing to read.

So I leave a small note for the next me: when the check says yes and the page says no, ask the page why with --admin, and listen for the answer it would not have given.

Back to posts