Summary
CONTRIBUTING.md Workflow step 1 states an unqualified requirement:
- Branch from the default branch using
<type>/<description> (for example, feat/add-widget).
Nothing enforces it. There is no branch-name rule, regex, or gate anywhere in this repository, and branch protection in the org ruleset does not constrain head-branch names.
#93 and #95 just made this inconsistent with its own neighbours. Step 4 now carefully qualifies the PR-title requirement — "Where the repository enforces this, a pr-title check reports on your pull request and must pass before merge" — and step 5 describes the merge gate that is actually enforced. Step 1 sits beside them making a bare imperative claim with no enforcement and no qualifier, so a reader has no way to tell it is advisory.
This matters more than a normal doc nit because CONTRIBUTING.md is an org-wide inherited default: the unqualified rule is read by every human contributor and every agent working in any repository that has not overridden it.
Evidence
Found by a blind reconstruction check: a fresh agent barred from reading the policy docs was asked to determine the branch-naming convention from primary sources alone. It returned could not determine, reporting no rule, regex, or gate anywhere in the repo. The only adjacent signal it found was a comment in ci.yml noting that fork branches may collide (e.g. both named patch-1), which argues concurrency should key on PR number rather than branch name — i.e. evidence that branch names are explicitly not controlled.
The decision
Two coherent options; this needs a call rather than a default:
- Enforce it. Add a branch-name gate. That work belongs in
ci-workflows (the check) and possibly github-iac (wiring it into the ruleset), not in this repository.
- Qualify it. Reword step 1 to match the honesty of steps 4 and 5 — state it as a convention rather than a requirement.
Option 2 is the cheap one and is consistent with the direction #93 and #95 just set. Option 1 is the durable one if the convention is actually wanted org-wide.
Scope
Small, if option 2. Cross-repo, if option 1.
Provenance
Surfaced by a /docs-hygiene:audit-derivability sweep of this repo's tracked markdown. The sweep's other two routed findings were re-checked against main and dropped as superseded: the README config-list trim was reversed by #80 and #83, and the CONTRIBUTING gate-restatement trim was reversed by #93 and #95. This is the only one that survived.
Summary
CONTRIBUTING.mdWorkflow step 1 states an unqualified requirement:Nothing enforces it. There is no branch-name rule, regex, or gate anywhere in this repository, and branch protection in the org ruleset does not constrain head-branch names.
#93 and #95 just made this inconsistent with its own neighbours. Step 4 now carefully qualifies the PR-title requirement — "Where the repository enforces this, a
pr-titlecheck reports on your pull request and must pass before merge" — and step 5 describes the merge gate that is actually enforced. Step 1 sits beside them making a bare imperative claim with no enforcement and no qualifier, so a reader has no way to tell it is advisory.This matters more than a normal doc nit because
CONTRIBUTING.mdis an org-wide inherited default: the unqualified rule is read by every human contributor and every agent working in any repository that has not overridden it.Evidence
Found by a blind reconstruction check: a fresh agent barred from reading the policy docs was asked to determine the branch-naming convention from primary sources alone. It returned could not determine, reporting no rule, regex, or gate anywhere in the repo. The only adjacent signal it found was a comment in
ci.ymlnoting that fork branches may collide (e.g. both namedpatch-1), which argues concurrency should key on PR number rather than branch name — i.e. evidence that branch names are explicitly not controlled.The decision
Two coherent options; this needs a call rather than a default:
ci-workflows(the check) and possiblygithub-iac(wiring it into the ruleset), not in this repository.Option 2 is the cheap one and is consistent with the direction #93 and #95 just set. Option 1 is the durable one if the convention is actually wanted org-wide.
Scope
Small, if option 2. Cross-repo, if option 1.
Provenance
Surfaced by a
/docs-hygiene:audit-derivabilitysweep of this repo's tracked markdown. The sweep's other two routed findings were re-checked againstmainand dropped as superseded: the README config-list trim was reversed by #80 and #83, and the CONTRIBUTING gate-restatement trim was reversed by #93 and #95. This is the only one that survived.