Skip to content

Name the required checks on the default branch #47

Description

@iderex

Depends on every check issue in this milestone and in the scaffolding milestone.
Two of those are still open, #12, which lands Analyze (go), and #44:

gh issue list --repo Flowfin/site --state open --limit 200 \
  --json number,title,milestone \
  --jq '.[]|select(.milestone.title=="Quality parity"
        or .milestone.title=="Scaffolding and the gate")|"\(.number)\t\(.title)"'
12	Add code scanning under the check name Analyze (go)
18	Add the LICENSE file once the licence is chosen
44	Mutation testing on the generator
47	Name the required checks on the default branch
62	Add the code of conduct this repository does not have
135	Default branch: Required check names did not succeed

Run 2026-08-23. Of the six, #18 and #62 land a document rather than a check,
#47 is this issue, and #135 reports a run rather than landing one. The
dependency was written here as a description of a set rather than as numbers,
so nothing could follow it and nothing could tell when it stopped being true.

Today nothing is required to merge here, re-taken 2026-08-31 because the paste
that stood here showed three rule types and was undated, and the branch gained a
fourth on 2026-08-28:

gh api repos/Flowfin/site/rulesets/20572614 --jq '[.rules[].type]'
["deletion","non_fast_forward","pull_request","required_signatures"]
gh api repos/Flowfin/site/rulesets/20572614       --jq '[.rules[]|select(.type=="required_status_checks")|.parameters.required_status_checks[].context]'
[]

The fourth rule is the signature one and is the paragraph further down rather
than this one. What this paragraph is about is the rule that is still absent, and
the empty list above is what the last clause of the done condition compares
against.

The pull request rule is in place and asks for zero approvals, so a change can
land with no check having reported at all. Every workflow in the tree could be
red and the merge button would still be green. Until the contexts are named in
the ruleset, the gate is a set of workflows that run rather than a gate.

The contexts to require, once each one exists and has been shown to bite:
build, Reproducible build, Analyze (go), DCO sign-off,
Deterministic PR-hygiene checks, Enforce greppable invariants,
Reject Trojan Source Unicode, Audit workflows (zizmor), prettier,
dependency-review, Package (site) / Build bundle,
Package (site) / Generate SBOM, Static analysis (semgrep).

Every name on that list is either a workflow already in this tree or an issue in
this plan that lands one, and the parity ledger is where the mapping is argued.
A name here with neither behind it is the failure this issue exists to avoid.

Two notes on sequencing. A context named in a ruleset before the workflow
reports it blocks every pull request forever, so each name goes in after its
first green run on a real pull request. And a check that is skipped by a path
filter never reports, which a ruleset reads as never satisfied, so no required
check may sit behind a path filter.

Signature verification and the bypass list belong to the same change, and they
are not the same kind of thing. The empty bypass list is parity, and the value
of having none is that the gate applies to everyone. Signature verification
would have been an addition rather than parity, and it arrived on both branches
before this issue did anything:

gh api repos/Flowfin/jellyfin-plugin-sso/rulesets/18802863 --jq '{bypass:.bypass_actors,types:[.rules[].type]}'
{"bypass":[],"types":["deletion","non_fast_forward","required_status_checks","pull_request","required_signatures"]}
gh api repos/Flowfin/site/rulesets/20572614 --jq '{bypass:.bypass_actors,types:[.rules[].type]}'
{"bypass":[],"types":["deletion","non_fast_forward","pull_request","required_signatures"]}

Run 2026-08-30. So there is no difference for the ledger to record in either
direction, and what is left of this clause is the empty bypass list, which both
branches already carry. The paste that stood here showed the target with four
rule types and carried no date; where that was found is the comment of
2026-08-30.

Done when

The command above prints required_status_checks among the rule types, the
context list matches the names above, bypass_actors is empty, and a pull
request with one failing check cannot be merged.

Activity

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

Metadata

Metadata

Assignees

Labels

blocked-on-a-repository-settingWaits on a repository setting rather than a change to this tree.blocked-on-another-issueWaits on work tracked by another open issue on this board.ci

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions