Compare commits
3
Commits
v0.10.1
...
ci9-gateproof
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f9c2cad57 | ||
|
|
628279a68a | ||
|
|
33e17dba0e |
@@ -110,6 +110,37 @@ name: checks
|
|||||||
# trigger` step below then keeps it that way mechanically rather than by asking
|
# trigger` step below then keeps it that way mechanically rather than by asking
|
||||||
# the next editor to read this comment.
|
# the next editor to read this comment.
|
||||||
#
|
#
|
||||||
|
# ⚠️ READ THE BLIND SPOTS ON THAT STEP BEFORE TRUSTING THE SENTENCE ABOVE.
|
||||||
|
# "Mechanically" holds only for a reintroduced filter that still names the
|
||||||
|
# PR's own base. For blind spots 1 and 3 the defence IS this comment, because
|
||||||
|
# the guard lives inside the workflow that a filter makes Gitea skip. Blind
|
||||||
|
# spot 3 is the one that matters: a filter naming a branch THIS pull request
|
||||||
|
# does not target is itself skipped, lands green and untested, and then every
|
||||||
|
# subsequent pull request the filter DOES NOT NAME is skipped too. That is the
|
||||||
|
# gate off, silently.
|
||||||
|
#
|
||||||
|
# ⚠️ THAT DIRECTION IS THE WHOLE POINT AND IT IS EASY TO WRITE BACKWARDS. A
|
||||||
|
# pull request that MATCHES the filter still runs; it is the one the filter
|
||||||
|
# excludes that Gitea sits out, reports `skipped`, and the rollup launders
|
||||||
|
# into `success`. An earlier draft of this very clause said "matching it is
|
||||||
|
# skipped", which is the inverse of the measurement and contradicted the
|
||||||
|
# paragraph directly below.
|
||||||
|
#
|
||||||
|
# ⚠️ AND THE DANGEROUS ONE IS NOT `branches: [main]`, WHICH AT LEAST LOOKS
|
||||||
|
# WRONG. It is `branches: [release/1.0]`, which looks like tightening onto the
|
||||||
|
# protected branch and is what a careful person would write. Every day-to-day
|
||||||
|
# pull request still runs and still goes green, so nothing appears broken -
|
||||||
|
# and the only thing switched off is the `release/1.0` -> `master` release
|
||||||
|
# PR, i.e. the one whose content reaches an installed system. SEC-2 made that
|
||||||
|
# PR the mandated release path (docs/RELEASE.md), so this is now a live route
|
||||||
|
# rather than a hypothetical one.
|
||||||
|
#
|
||||||
|
# Closing it needs a SECOND permanently unfiltered workflow posting its own
|
||||||
|
# context, with that context added to the `status_check_contexts` of BOTH
|
||||||
|
# `release/1.0` AND `master` - both carry the rule since SEC-2, and adding it
|
||||||
|
# to one alone leaves the hole open on the other. A forge change, with the
|
||||||
|
# owner.
|
||||||
|
#
|
||||||
# THE MEASUREMENT, because the obvious guess is wrong and was nearly written
|
# THE MEASUREMENT, because the obvious guess is wrong and was nearly written
|
||||||
# here as fact. A skip-ci keyword in a commit message (`[skip ci]`, `[ci skip]`,
|
# here as fact. A skip-ci keyword in a commit message (`[skip ci]`, `[ci skip]`,
|
||||||
# `[no ci]`, `[skip actions]`, `[actions skip]`) does NOT behave like a filter
|
# `[no ci]`, `[skip actions]`, `[actions skip]`) does NOT behave like a filter
|
||||||
|
|||||||
Reference in New Issue
Block a user