Skip to content

Say that the required checks are in force, where four files put them ahead - #170

Merged
iderex merged 1 commit into
mainfrom
work/af21-required-checks-are-in-force
Sep 5, 2026
Merged

iderex merged 1 commit into
mainfrom
work/af21-required-checks-are-in-force

Conversation

@iderex

@iderex iderex commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Closes #169.

Five sites in four files put the required checks in the future and pointed at #48 for their arrival. #48 is closed and the ruleset requires nineteen contexts, so each of those sentences told a reader the opposite of the state it was describing.

The measurement

$ gh issue view 48 --repo Flowfin/hub --json state,stateReason,closedAt --jq '"\(.state)/\(.stateReason) closed=\(.closedAt)"'
CLOSED/COMPLETED closed=2026-08-24T19:23:40Z
$ gh api repos/Flowfin/hub/rulesets --jq '.[] | "\(.id)\t\(.name)\t\(.enforcement)"'
20544694	gate	active
$ gh api repos/Flowfin/hub/rules/branches/main \
    --jq '[.[] | select(.type=="required_status_checks") | .parameters.required_status_checks[].context] | length'
19

Run 2026-09-05. And decisions/gate-parity.md's own derivation command, which asks which legs are declared and not required, prints nothing:

$ comm -23 <(grep -o 'Gate: [a-z0-9-]*' .github/workflows/gate.yml | sort -u) \
           <(gh api repos/Flowfin/hub/rules/branches/main \
              --jq '.[] | select(.type=="required_status_checks")
                    | .parameters.required_status_checks[].context' | sort)
$ echo "exit=$?"
exit=0

Run 2026-09-05, empty output: every leg this workflow declares is a required name today.

The sites, before

$ git grep -n -i 'requires no status check\|ruleset in #48\|#48 is where\|is #48 and is not done' origin/main -- .github/ decisions/ internal/
origin/main:.github/workflows/dependency-review.yml:18:  # on this repository is called "gate" and requires no status check of any kind.
origin/main:.github/workflows/dependency-review.yml:19:  # #48 is where required checks arrive. After that, adding a `name:` here renames
origin/main:.github/workflows/gate.yml:9:# The job names are what a pull request shows and what the ruleset in #48 would
origin/main:decisions/gate-parity.md:70:Widening the required set is #48 and is not done here; recording that the gap
origin/main:internal/gate/gate.go:66:// control, and the ruleset in #48 would require that one instead of this one.

and the fifth, which that pattern does not reach because it is phrased as a question:

$ git grep -n 'becomes a required name on `main` is #48' origin/main -- decisions/
origin/main:decisions/gate-parity.md:269:Which of these becomes a required name on `main` is #48. This document says what

The sites, after

$ git grep -n -i 'requires no status check\|ruleset in #48\|#48 is where\|is #48 and is not done\|becomes a required name on `main` is #48' -- .github/ decisions/ internal/ ; echo "exit=$?"
exit=1

Nothing left. What still names #48 names it in the past tense, inside the correction that says what was wrong, which is what this board asks a correction to do.

What each site now says

dependency-review.yml is the one that cost the most. It said nothing depended on the job id today, that #48 was where required checks would arrive, and that its own paragraph was a warning only in appearance. All three have turned over: dependency-review is the required context, so adding a name: to that job renames the check run, the context is reported by nothing, and every pull request on this board sits BLOCKED carrying no verdict for it - the same silence the catalogue request sits in, and just as slow to recognise. The comment says that plainly now, says what it used to say, and hands the reader the derivation command instead of a count.

gate.yml and internal/gate/gate.go each carried the requirement in the conditional - "the ruleset in #48 would require" - where it does. Both are indicative now, and gate.go adds the consequence: the build collision with the Pages deployment is a live one rather than one waiting for a requirement.

decisions/gate-parity.md keeps every dated reading and every derivation command it had. What changes is that the widening is no longer called undone, and the "What is not settled here" section stops naming an answered question and states the half that outlasts the answer: nothing in this tree reads a ruleset, so neither that file nor any check here notices the day the two disagree again. That is the reason the paragraph tells the reader to re-run the command rather than to trust the sentence.

What this does not do

It changes no ruleset, adds no check and moves no name. Nothing in this tree can read a ruleset, so nothing here refuses the next drift of this kind either; what is repaired is what four files say about a setting, and the only thing standing between this and the next one is the command each of them now hands the reader.

Evidence

$ go run . gate
gate examined 14 of 14 legs.
  build                            passed
  test                             passed
  format                           passed
  editorconfig                     passed
  tests-reach-nothing              passed
  no-hardcoded-names               passed
  site-fetches-nothing-outside     passed
  site-links-resolve               passed
  coverage                         passed
  site-declares-its-language       passed
  install-address-is-answered      passed
  colour-stands-off-every-surface  passed
  page-matches-the-token-file      passed
  pr-hygiene                       passed

A run before that one went red and it was not this change. The coverage leg refused on eight tests across four packages, every failure a httptest server on 127.0.0.1 that would not accept a connection, in a suite whose only change here is comment text. The next run of the same command on the same tree passed all 29 packages. That is recorded rather than dropped, because a red that is explained away is worth less than a red that is written down, and a reader who meets the same one should know it has been seen.

Means

Prose in the files that carry the wrong sentences, and no new artefact. What is wrong is what four files say, so the change is what they say; the derivation commands they now hand the reader are the ones already used elsewhere in the same files. No mechanism is added, and none is claimed: nothing in this tree reads a ruleset, which is stated in the change rather than worked around.

No second reader

Nobody else has read this change. The commands above stand in place of a second reader rather than beside one.

…ahead

Five sites in four files reasoned from a ruleset that requires no status
check and pointed at #48 for the day one would arrive. #48 closed as
completed on 2026-08-24 and the ruleset requires nineteen contexts, every
gate leg among them, so each sentence told a reader the opposite of the
state it was describing.

The one that cost the most is the comment on the dependency-review job. It
said nothing depended on the job id today and that adding a `name:` would
break something only after required checks arrived. That day has passed:
`dependency-review` is a required context, so a `name:` there renames the
check run and leaves every pull request on this board blocked with no
verdict for it. The comment now says so, and the count and the names are
derived by a command rather than written down where they would drift again.

gate-parity.md keeps its dated readings and its derivation commands and
stops calling the widening unsettled; what is genuinely unsettled there is
restated, which is that nothing in this tree reads a ruleset, so neither
that file nor any check here notices the day the two disagree again.

Closes #169.

Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
@iderex
iderex merged commit 1e2535f into main Sep 5, 2026
36 checks passed
@iderex
iderex deleted the work/af21-required-checks-are-in-force branch September 5, 2026 22:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Four files say the required checks are still ahead, and nineteen of them are in force

1 participant