docs(agents): record why CI / docker is not a required status #20
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "chore/record-branch-protection"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Records why
CI / dockeris excluded from the required statuses onmain, which is thehalf of the change that is not visible in the API.
mainhad no rule of any kindConfirmed before arming:
GET /branch_protectionsreturned[]. Sogit push origin mainwent straight through, and every green enforced in this repo this week was discipline
rather than a gate.
Now armed:
enable_push=false,apply_to_admins=true,enable_status_check=true,status_check_contexts=["CI / cargo*"],required_approvals=0. Zero approvals is whatmakes it cost nothing — I still merge my own work, CI merely stops being bypassable.
Why
CI / dockeris not requiredA job skipped because the job it
needs:failed still postssuccessto the commitstatus. Reproduced in this repository, not taken on report:
CI / cargoCI / docker45b68251d8e5935154de8c40The third column is the point.
GET /actions/tasksshows a singlecargotask for each ofthose commits and no
dockertask at all, so thesuccessis not a docker job that passedquickly — it is a status for work that never ran.
Requiring it would be worse than not requiring it: the rule would read as broader coverage
while being satisfied by the very failure it was meant to catch.
dockerstill runs andstill gates a release, building the exact linux/amd64 image and smoking it before publish.
It just cannot be a required status while it carries a
needs:.The glob is load-bearing
Contexts carry an event suffix —
CI / cargo (pull_request)on a PR head,CI / cargo (push)on a branch push. A literal context string matches one and silently never matchesthe other, which is an unarmed gate that reads as armed.
CI / cargo*covers both, andboth suffixes are observed above and on
cef453a/0366d5b.Acceptance
A rule read back from the server says it was stored, not that it bites, so it was pushed
against rather than inspected.
Probe branch, rule armed between two pushes. First push with no rule: accepted. Rule
armed on that branch. Second push:
Probe rule and probe branch both deleted,
HTTP 204each;git ls-remote --heads originconfirms neither remains.
And on
mainitself, because a rule proven on a throwaway branch is not a measurementof the branch that matters:
apply_to_admins=true, so it refuses the repository owner. This PR is the real merge underthe new flags.
Also
chore/one-audit-suppressionsurvived #17's merge and was still on the remote. Deleted,after confirming
origin/main..origin/chore/one-audit-suppressionwas empty.jlxq0/mantis#141.