Skip to content

docs(contributing): the branch-naming rule is enforced by nothing and unqualified #99

Description

@kyle-sexton

Summary

CONTRIBUTING.md Workflow step 1 states an unqualified requirement:

  1. 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:

  1. 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.
  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: lowNice-to-have, cosmetic, or speculative; opportunistic.status: needs-decisionAwaiting a human or maintainer judgment call.

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions