Skip to content

standards/main has no required status checks — every gate this repo ships is advisory here #956

Description

@hyperpolymath

Summary

hyperpolymath/standards — the repository that defines the estate's CI policy — has no required status checks on main, and no rule requiring a pull request at all. Every gate this repo ships and enforces elsewhere is advisory here.

This is why six consecutive PRs merged over a red governance / Debt ratchet (#955) without anyone needing an admin bypass: nothing was ever blocking.

Measured

The authoritative endpoint for what actually applies to a branch is /repos/{owner}/{repo}/rules/branches/{branch} — not /rulesets, which lists rulesets that may target other refs.

$ gh api repos/hyperpolymath/standards/rules/branches/main --jq '[.[].type]|unique|join(", ")'
deletion, non_fast_forward

$ gh api repos/hyperpolymath/standards/branches/main/protection
404 "Branch not protected"

So on standards/main: no required_status_checks, no pull_request, no required_signatures, no classic protection. The only rules are "don't delete it" and "don't force-push it".

Comparison across the estate

repo effective rules on main requires checks?
hyperpolymath/standards deletion, non_fast_forward no
hyperpolymath/rsr-template-repo code_coverage, code_quality, code_scanning, copilot_code_review, deletion, required_signatures no
metadatastician/stapeln code_coverage, code_quality, code_scanning, copilot_code_review, deletion, merge_queue, pull_request, repository_delete, repository_transfer, repository_visibility, required_deployments, required_signatures, required_status_checks yes
hyperpolymath/a2ml deletion, non_fast_forward no
hyperpolymath/marid deletion, non_fast_forward no
hyperpolymath/hypatia deletion, non_fast_forward no

stapeln shows the pattern already exists and works:

CodeQL
SonarCloud Code Analysis
governance / Code quality + docs
scan / Hypatia Neurosymbolic Analysis
governance / Validate Hypatia Baseline
analyze (actions, none)

Five of the six sampled repos have no required_status_checks. standards is the least protected of the three policy repos.

Why this matters now — it changes the ci-pipeline rollout

The agreed rollout shape is "repos whose pipeline is green at adoption get the caller blocking; red repos are seeded into a shrink-only ledger."

Adding a caller workflow does not make it blocking. A workflow only blocks a merge when a required_status_checks rule names its check context. Without that rule, the "blocking" arm and the "ledgered" arm are behaviourally identical — both just produce a red X that anyone can merge past. The ratchet would be measuring debt no one is obliged to pay.

This is the vacuous-gate condition: a gate that cannot fail anything is decoration.

Proposed cure

Two parts, both owner decisions:

  1. Decide the policy. Should standards/main require (a) a pull request, (b) a named set of status checks, (c) signatures? The stapeln ruleset is a working template. Note that requiring a PR on standards changes the owner's own direct-push workflow, which is a real cost — this is a judgement call, not an obvious yes.
  2. Decide what "blocking" means for the rollout. Either the rollout includes adding a required_status_checks rule naming the pipeline context on adopting repos, or the plan should stop using the word "blocking" and describe both arms honestly as advisory-with-a-ledger.

⚠ Both parts are configuration changes to live repositories. Nothing here should be applied without an explicit ruling.

Acceptance criteria

  • An owner ruling is recorded on Owner decision sheet D1–D72: one answerable place for #637 + #715 + #709 + #658 and this week's unfiled decisions #787 stating whether standards/main gains a required_status_checks rule, and which contexts it names.
  • If yes: gh api repos/hyperpolymath/standards/rules/branches/main --jq '[.[].type]' includes required_status_checks, and a PR with a deliberately failing gate cannot be merged without an explicit bypass.
  • The ci-pipeline rollout plan's "blocking where green" language is either implemented via a ruleset rule or reworded to match what it actually does.
  • The estate-wide question is measured, not assumed: a full sweep of rules/branches/main across all repos, reporting how many have required_status_checks. The six-repo sample above is not a census.

Related: #955 (the Debt ratchet failure this explains), #787 (decision surface).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions