Scope: .github/workflows
What is wrong
iderex/wache now holds the half of the pull request hygiene rules that every
board in this fleet shares, and this board is not calling it. It carries its own
implementation instead, .github/pr-hygiene/hygiene.sh, and so does every other
board. That is the problem argued in iderex/operations#1556: on 22.08. nineteen
boards carried nineteen implementations of the same three or four rules, in four
languages, no two alike, so a two line change to a rule they share cost nineteen
edits and failed in nineteen different ways.
What the shared check refuses
Four things, and nothing else:
- a pull request body that is empty or is only whitespace
- a closing keyword (
Closes, Fixes, Resolves) sitting inside a paragraph
instead of on a line of its own
- a title that is a placeholder:
wip, update, fix, changes, untitled
and the rest of that list
- with the subject rule on, a non merge commit whose subject names no issue as
[#N] or as owner/repo#N
It runs nine fixtures before it judges anything, one line that passes and one
line that bites per rule, and if a fixture fails the run refuses to judge at all
rather than showing a green tick with nothing behind it.
What does not change on this board
Nothing in .github/pr-hygiene/hygiene.sh and nothing in
.github/workflows/pr-hygiene.yml. The shared call runs beside them. Four of
this board's rules have no equivalent in the shared check at all:
- the scope comparison. Every issue a body names is read, its
Scope: line at
column zero is taken as a set of path prefixes, and the changed paths are
compared against the union of them by whole path segment, so
docs/decisions admits docs/decisions/0001.md and refuses
docs/decisions-old/0001.md. The shared check reads no paths.
- the qualifier aware reading of a reference. A number written as
owner/repo#123 names an issue on that board and is not read as one here, so
a body can paste evidence quoting another repository without turning it into a
question about this one.
- naming an issue without closing it, which is this board's practice. The rule
here is that the body names an issue, not that it closes one, because the
definition of done is frequently not met by the change that names it.
- the emptiness rule as this board means it. Here a body is empty when it says
nothing the template did not: headings, HTML comments and bare issue
references are stripped before the question is asked, so the skeleton with the
number filled in is refused. The shared check refuses only a body that is
literally blank.
A local rule goes only once the shared check is shown to cover it, one rule at a
time, in its own change. Standardising by deleting coverage would be worse than
the duplication.
Why the subject rule is switched off
Because this board puts the reference in the body on purpose, and its own check
reads the body. Measured rather than assumed:
$ gh api "repos/Flowfin/core/commits?per_page=100" \
--jq '.[] | select(.parents|length==1) | .commit.message | split("\n")[0]'
authored subjects: 52
carrying [#N]: 0
carrying (#N) or any #N: 38
of the last twenty: 8
Not one subject in this repository is in the square brackets the fleet rule
wants, and the twelve most recent carry no reference in the subject at all.
Calling the check with the subject rule on would red every pull request here on
day one. Calling it with that one rule off says this board does not meet the
rule yet, which is a statement somebody can act on. Not calling the check at all
would say nothing.
What done means
One file exists, .github/workflows/shared-hygiene.yml, it calls
iderex/wache/.github/workflows/pr-hygiene.yml pinned by commit hash, and the
Shared hygiene check appears on a pull request here and finishes green with
the nine fixture lines and the line saying the subject rule is off visible in
its log. Every other check on this board stays the colour it already is, and
.github/pr-hygiene/hygiene.sh is byte for byte unchanged.
If the shared call cannot run green beside the local gate, this issue closes
unmerged and says what refused it.
The reference stays pinned by commit hash with the version in the comment
beside it. A moving @main would let the called repository change what executes
on this board without anybody reviewing the change, and zizmor here refuses an
unpinned reference anyway.
What this waits on
Nothing. The shared check exists, it is tagged, and it has been called across a
repository boundary from two other boards already.
Scope: .github/workflows
What is wrong
iderex/wachenow holds the half of the pull request hygiene rules that everyboard in this fleet shares, and this board is not calling it. It carries its own
implementation instead,
.github/pr-hygiene/hygiene.sh, and so does every otherboard. That is the problem argued in iderex/operations#1556: on 22.08. nineteen
boards carried nineteen implementations of the same three or four rules, in four
languages, no two alike, so a two line change to a rule they share cost nineteen
edits and failed in nineteen different ways.
What the shared check refuses
Four things, and nothing else:
Closes,Fixes,Resolves) sitting inside a paragraphinstead of on a line of its own
wip,update,fix,changes,untitledand the rest of that list
[#N]or asowner/repo#NIt runs nine fixtures before it judges anything, one line that passes and one
line that bites per rule, and if a fixture fails the run refuses to judge at all
rather than showing a green tick with nothing behind it.
What does not change on this board
Nothing in
.github/pr-hygiene/hygiene.shand nothing in.github/workflows/pr-hygiene.yml. The shared call runs beside them. Four ofthis board's rules have no equivalent in the shared check at all:
Scope:line atcolumn zero is taken as a set of path prefixes, and the changed paths are
compared against the union of them by whole path segment, so
docs/decisionsadmitsdocs/decisions/0001.mdand refusesdocs/decisions-old/0001.md. The shared check reads no paths.owner/repo#123names an issue on that board and is not read as one here, soa body can paste evidence quoting another repository without turning it into a
question about this one.
here is that the body names an issue, not that it closes one, because the
definition of done is frequently not met by the change that names it.
nothing the template did not: headings, HTML comments and bare issue
references are stripped before the question is asked, so the skeleton with the
number filled in is refused. The shared check refuses only a body that is
literally blank.
A local rule goes only once the shared check is shown to cover it, one rule at a
time, in its own change. Standardising by deleting coverage would be worse than
the duplication.
Why the subject rule is switched off
Because this board puts the reference in the body on purpose, and its own check
reads the body. Measured rather than assumed:
Not one subject in this repository is in the square brackets the fleet rule
wants, and the twelve most recent carry no reference in the subject at all.
Calling the check with the subject rule on would red every pull request here on
day one. Calling it with that one rule off says this board does not meet the
rule yet, which is a statement somebody can act on. Not calling the check at all
would say nothing.
What done means
One file exists,
.github/workflows/shared-hygiene.yml, it callsiderex/wache/.github/workflows/pr-hygiene.ymlpinned by commit hash, and theShared hygienecheck appears on a pull request here and finishes green withthe nine fixture lines and the line saying the subject rule is off visible in
its log. Every other check on this board stays the colour it already is, and
.github/pr-hygiene/hygiene.shis byte for byte unchanged.If the shared call cannot run green beside the local gate, this issue closes
unmerged and says what refused it.
The reference stays pinned by commit hash with the version in the comment
beside it. A moving
@mainwould let the called repository change what executeson this board without anybody reviewing the change, and
zizmorhere refuses anunpinned reference anyway.
What this waits on
Nothing. The shared check exists, it is tagged, and it has been called across a
repository boundary from two other boards already.