Scope: .github/statements/statements.sh, security/statements.json
The role word that the fleet's write gate refuses in every posted text since 2026-09-01 still stands in tracked files of this board, and the trees are where it lives now; op#1789 is the parent and this is its child for this board. The word itself is not written here, because the gate refuses it; it is the word for the person who runs a project, and the gate names it when it refuses.
Measured
At origin/main 9448d22fed1d94c94e52fafe4fb75b68c5565791, after git fetch origin, against the remote-tracking ref rather than a working checkout, counting files with a whole-word, case-insensitive match:
$ git grep -il -w <the role word> origin/main -- . | wc -l
2
.github/statements/statements.sh
security/statements.json
The Scope: line above named the list rather than the paths until I changed it. scope_prefixes in .github/pr-hygiene/hygiene.sh reads that line at column zero and splits it on commas, so a sentence there declares a prefix no changed path is inside and the hygiene check refuses the change that repairs this issue. The two paths are the ones measured above.
The rule to apply
The one the write gate enforces on posted text: first person where the sentence is about this account, a role name where it is genuinely about a role somebody else fills, and nothing left that describes the person running this project from outside.
Where the word sits in text this project did not write, a licence, a code of conduct adopted verbatim, GitHub's own CODEOWNERS syntax, a quoted third-party sentence, it is somebody else's vocabulary and stays; set it apart in a fence or a block quote and say so in the change. A fixture whose bytes a test is proven against stays too, with the reason in the change.
Every replacement is a sentence and not a substitution, read line by line in the diff before it lands.
Done when
- The command above returns only files whose remaining occurrences are named in the change as foreign text or fixture bytes, read at the merge commit.
- Every landed replacement was read in the diff, and the change says so.
Scope: .github/statements/statements.sh, security/statements.json
The role word that the fleet's write gate refuses in every posted text since 2026-09-01 still stands in tracked files of this board, and the trees are where it lives now; op#1789 is the parent and this is its child for this board. The word itself is not written here, because the gate refuses it; it is the word for the person who runs a project, and the gate names it when it refuses.
Measured
At
origin/main9448d22fed1d94c94e52fafe4fb75b68c5565791, aftergit fetch origin, against the remote-tracking ref rather than a working checkout, counting files with a whole-word, case-insensitive match:The
Scope:line above named the list rather than the paths until I changed it.scope_prefixesin.github/pr-hygiene/hygiene.shreads that line at column zero and splits it on commas, so a sentence there declares a prefix no changed path is inside and the hygiene check refuses the change that repairs this issue. The two paths are the ones measured above.The rule to apply
The one the write gate enforces on posted text: first person where the sentence is about this account, a role name where it is genuinely about a role somebody else fills, and nothing left that describes the person running this project from outside.
Where the word sits in text this project did not write, a licence, a code of conduct adopted verbatim, GitHub's own
CODEOWNERSsyntax, a quoted third-party sentence, it is somebody else's vocabulary and stays; set it apart in a fence or a block quote and say so in the change. A fixture whose bytes a test is proven against stays too, with the reason in the change.Every replacement is a sentence and not a substitution, read line by line in the diff before it lands.
Done when