docs / getting-started
When it does not block
The four things that go wrong: fwozen missing from the required-checks dropdown, a live freeze that does not block, a check stuck red after a thaw, and a merge that went through anyway.
complete · updated 1 september 2026
Four things go wrong often enough to have a heading. Each one is a symptom, not a cause, because a symptom is what you have when you arrive here.
fwozen is not in GitHub’s required-checks dropdown
GitHub only offers checks it has seen complete recently. Fwozen writes the real current verdict to every enforcement-relevant commit before it offers you the GitHub step, which is normally what puts fwozen in the picker, and it re-writes quiet repositories on a timer.
The case where it still will not appear: you are enrolling a branch that is already frozen. The honest result then is a failing check, and GitHub may decline to offer one it has never seen succeed. Fwozen will not post a fake success to get around that. Lift the freeze, wait for the check to land green on an open pull request, then add it. The target stays visibly pending in the meantime and retries itself after the thaw.
A freeze is live but pull requests are still mergeable
The freeze and the block are two different things. Fwozen writes a failing check; GitHub stops the merge only if that check is required on the branch. Until it is, a freeze is advisory: red, visible, ignorable.
- Open the branch in the dashboard and read its enforcement state. Only enforcing asserts anything; anything else names what is missing.
- Bypass actors. A ruleset with a non-empty bypass list lets those actors merge straight through. Fwozen names the actors GitHub discloses and says so plainly when GitHub discloses nothing, which is most of the time.
- Classic branch protection. The effective-rules endpoint reports rulesets rather than classic protection, so Fwozen reports the result as unknown rather than showing you a green light it has not earned. Move the branch to a ruleset.
The check is still failing after the freeze ended
Ending a freeze re-queues every target and rewrites each check to success. If one is still red, the fan-out has not reached that commit yet: the freeze page shows the targets and their state, and Retry re-queues the ones that failed. Pushing a new commit also produces a fresh check. If GitHub is rate-limiting us, the dashboard says so rather than pretending the write happened.
A merge went through during a freeze
The audit log is where this starts: it names the actor, the source and the reason for every freeze, thaw and exception, so the first question is whether the freeze was actually in force at that moment and whether an exception was granted for that pull request.
- An exception on that pull request lets exactly it through, with a reason and a name.
- A bypass actor on the ruleset merges through anything. This is the common answer, and it is invisible to us when GitHub does not disclose the list.
- A pull request already in a merge queue is handled: Fwozen fails the live merge-group head. That mechanism is implemented and unit-tested, and has not been demonstrated against a live GitHub merge queue, so if you see one slip we want the details at [email protected].
- The check was never required on that branch. Back to the section above.
Nothing here matching? Support lists what we answer and how fast. If it is an API response, quote the requestId from the error envelope and we can find the exact request.