Skip to content

CI: reconcile branch-protection required-check pins with emitted check names (estate-wide) #650

Description

@hyperpolymath

Background

Four required checks sat permanently at "Expected — Waiting for status to be reported" on this repo (the push to #645 confirmed it server-side: "4 of 4 required status checks are expected"). "Expected" is not a failure — it means a pinned context name was never reported on the head commit. Root cause: branch protection pins context strings the repo only conditionally emits. Three independent mechanisms produce the same symptom:

Required pin Producer Why it can sit "Expected"
analyze (actions, none) codeql.yml was pull_request: branches:[main,master]-gated → no run on other bases
hypatia / Hypatia Neurosymbolic Analysis hypatia-scan.yml same branch gate
Hypatia GitHub App check external; not produced by a repo workflow (see hypatia issue)
governance / Validate Hypatia baseline the standards governance reusable this repo runs a standalone governance job (#603/#604) that emits governance instead → orphaned pin

What's already done (repo-side)

What remains (needs repo-admin / branch-protection access)

  1. Repoint the affinescript governance pin governance / Validate Hypatia baselinegovernance (the name the standalone gate actually emits). Once repointed, the local bridge added in ci: make the four required status checks reportable on every PR #645 (governance-baseline.yml + governance-baseline-impl.yml) can be removed — it exists only to satisfy the stale pin without admin access.
  2. Audit each repo's required-pin list vs. emitted names. Only affinescript is API-confirmed (the "4 of 4"); hypatia / gitbot-fleet / .git-private-farm need a required-vs-emitted diff against a green main PR.
  3. Adopt the guardrail: a context may be marked Required only if it is emitted unconditionally on every PR that can target the protected branch. Pin to job names the repo's own workflows emit unconditionally — never to reusable-job names that can change out from under you, nor to app checks (see ci: Bump actions/cache from 5.0.2 to 5.0.4 #4).
  4. The Hypatia app check — tracked separately in hyperpolymath/hypatia (post on every PR or de-require).

Acceptance

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

    choreRoutine maintenance with no behaviour changecicdCI/CD: workflows, actions, lockfiles, pins, runners, release gatesscope:estateAffects many or all repos across the estate

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions