Stop CODEOWNERS from gating docs by narrowing /.github/ to workflow YAML - #1556
Open
schickling-assistant wants to merge 1 commit into
Open
schickling-assistant wants to merge 1 commit into
schickling-assistant wants to merge 1 commit into
Conversation
`/.github/ @schickling` owns every file under that path, prose included, so a one-line relative-link repair in `.github/workflows/README.md` pulls an otherwise unowned docs PR under mandatory code-owner review. Narrow the pattern to `/.github/workflows/*.yml` so workflow logic stays owned while prose under the same path stops gating unrelated work. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
PR preview
Report historyPR 1556 · 2026-08-14 11:15 UTC
|
schickling-assistant
marked this pull request as ready for review
August 27, 2026 18:23
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
.github/CODEOWNERScontains/.github/ @schickling, which owns every file under that path —workflow YAML, but also prose, issue templates, and repo-config data. The
main-branch-rulesrulesetsets
require_code_owner_review: true, so any change to any of those files makes @schickling amandatory reviewer.
The concrete case: #1528 (#1528) is a seven-file docs PR. Six of its seven files have no code owner at all.
The seventh is a one-line relative-link repair in
.github/workflows/README.md. That single file iswhat pulls the whole PR under mandatory code-owner review. Verified against the API at the time of
writing: all 16 required status checks are
SUCCESS, the ruleset'srequired_approving_review_countis0, andmergeStateStatusisBLOCKED— leavingrequire_code_owner_reviewas the only thing holding it.This is not a one-off. Docs and template changes under
.github/recur, and each one queues on areview that has nothing to do with what the entry exists to protect.
Solution
One line, one file:
The other four patterns and the header comment are unchanged. Workflow logic — the eight committed
.github/workflows/*.ymlfiles, includingrelease.yml,deploy-prod.yml, andci.yml— staysowned.
The trade-off
This is not a pure win, and the cost is not hypothetical.
@schickling is giving up visibility he currently has. Today nothing under
.github/changes withouthim seeing it. After this change, 22 of the 30 files under
.github/become unowned and canmerge without him; the 8 that stay owned are the workflow
*.ymlfiles. Some of what is given up isthe intended target and uncontroversial —
pull_request_template.md, the threeISSUE_TEMPLATE/files,
FUNDING.yml,workflows/README.md. But "prose" is not a synonym for "inconsequential":workflows/README.mddocuments how the release and deploy workflows are operated, and a wronginstruction there can be acted on by a human even though no workflow logic changed. Someone who
thinks that README is part of the release surface rather than commentary on it would be describing
this change accurately, not misreading it.
Some of the 22 go beyond prose and deserve to be named rather than absorbed into a count:
.github/CODEOWNERS/.github/; after this change it does not. That makes the change self-unlocking: the rule governing what @schickling sees is no longer something he sees, so what he gives up is not only sight of prose but the ability to notice the next narrowing..github/repo-settings.json(+.genie.ts).github/labels.json(+.genie.ts),.github/reconcile-app-manifest.json.github/scripts/pr-snapshot-artifact.mjs(+ its test)*.ymldoes not match.One more, listed so it is not a later surprise:
*.ymldoes not match*.yml.genie.ts, so the eightworkflow authoring sources are not owned by the new pattern. This one is enforced elsewhere
rather than merely unlikely —
lint:check:geniewatches.github/workflows/*.genie.tsand runsunder the required
lintcheck, so a.genie.tsedit that is not accompanied by its regenerated.ymlfails a required check, and the regenerated.ymlis owned. Editing the source alone cannotchange what GitHub executes without touching an owned file.
This PR implements exactly the narrowing that was asked for. Whether the
repo-settings.json/.github/scripts/gap should also be covered is a separate decision and a possible follow-up — notsomething this PR widens on its own.
What is bought for that cost: agent-authored docs PRs stop pulling @schickling in over one-line link
repairs. That is the whole of the benefit — a recurring class of low-value review requests goes away,
in exchange for a real and permanent reduction in what he sees.
Expected: this PR needs his approval
This change lands under the old
/.github/rule, so it is itself code-owner-gated. That isintended, not something to route around: it is one approval that removes a recurring class of them.
No changeset is included — this is repository policy, not a published-package change.
Validation
devenv tasks run check:quick— exit 0.byte-identical.
fd --hidden --type f . .github/gives 30 files; 8 match/.github/workflows/*.yml, 22 do not. That is where the table above comes from. There are no*.yamlworkflows and no.github/actions/composite actions, so the new pattern covers everyworkflow file that exists today.
gh api "repos/livestorejs/livestore/codeowners/errors?ref=<this branch>"returns{"errors":[]}.This is the check that could have falsified the change — an unparseable pattern is dropped
silently, which would leave
release.ymlanddeploy-prod.ymlunowned rather than owned.Related issues
Posted on behalf of @schickling
agent_identityagent_personaagent_supervisoragent_toolagent_tool_versionagent_runtimetooling_profile