What to build
.maintainer.yml:100-105 states, as the load-bearing fact behind auto_merge: true, that required_approving_review_count is 0 and "Merges are gated by MACHINES — CI green plus the ruleset — never by a human review". The live main-protection ruleset (id 20556704, gh api repos/developerz-ai/wurk/rulesets/20556704) confirms the count is 0 but also carries require_extra_approval_for_unattributed_changes: true in its pull_request rule. GitHub's semantics for that flag: a pull request containing commits whose author is not attributed to a GitHub account needs one additional approving review on top of the configured count — so for this repo such a PR needs 1 human approval, and the platform bot's auto-merge (which the file says needs no human) will wait on it. Every squash on main today is attributed (checked the last 40: all author.login non-null), so the case has not fired yet; the day a fleet box commits with an email not linked to a GitHub account, that PR silently parks.
This issue is the documentation fix (the file's own rule at .maintainer.yml:10-14 is that it must not assert a ruleset state it does not have):
- In the
pr: block comment (.maintainer.yml:100-105), after the sentence about count 0, add the caveat: the ruleset also sets require_extra_approval_for_unattributed_changes: true, so a PR with any commit not attributed to a GitHub account needs one human approval before the bot can merge it; name the parameter and the ruleset id so the next reader can verify with gh api.
- In CONTRIBUTING.md "Pull requests" (CONTRIBUTING.md:131-140), add a numbered step: commit with an email linked to your GitHub account (
git config user.email), because unattributed commits require a human approval this repo otherwise never asks for.
Do not change the ruleset in this issue; flipping the flag is an operator decision and would be its own hitl ticket.
Acceptance criteria
Affected paths
.maintainer.yml, CONTRIBUTING.md
Verified against
c346bc9
What to build
.maintainer.yml:100-105states, as the load-bearing fact behindauto_merge: true, thatrequired_approving_review_countis 0 and "Merges are gated by MACHINES — CI green plus the ruleset — never by a human review". The livemain-protectionruleset (id 20556704,gh api repos/developerz-ai/wurk/rulesets/20556704) confirms the count is 0 but also carriesrequire_extra_approval_for_unattributed_changes: truein itspull_requestrule. GitHub's semantics for that flag: a pull request containing commits whose author is not attributed to a GitHub account needs one additional approving review on top of the configured count — so for this repo such a PR needs 1 human approval, and the platform bot's auto-merge (which the file says needs no human) will wait on it. Every squash on main today is attributed (checked the last 40: allauthor.loginnon-null), so the case has not fired yet; the day a fleet box commits with an email not linked to a GitHub account, that PR silently parks.This issue is the documentation fix (the file's own rule at .maintainer.yml:10-14 is that it must not assert a ruleset state it does not have):
pr:block comment (.maintainer.yml:100-105), after the sentence about count 0, add the caveat: the ruleset also setsrequire_extra_approval_for_unattributed_changes: true, so a PR with any commit not attributed to a GitHub account needs one human approval before the bot can merge it; name the parameter and the ruleset id so the next reader can verify withgh api.git config user.email), because unattributed commits require a human approval this repo otherwise never asks for.Do not change the ruleset in this issue; flipping the flag is an operator decision and would be its own hitl ticket.
Acceptance criteria
pr:comment namesrequire_extra_approval_for_unattributed_changesand ruleset 20556704, and no longer says merges are "never" human-gated without the caveat..maintainer.ymlstill parses as YAML (ruby -ryaml -e 'YAML.load_file(".maintainer.yml")').Affected paths
.maintainer.yml, CONTRIBUTING.md
Verified against
c346bc9