Name GOVERNANCE.md in its own carried-files list, and point reviewer rules at it - #458
Merged
ptr727 merged 2 commits intoJul 30, 2026
Merged
Conversation
…rules at it Review on the promotion raised three findings on the split. Two hold. The carried-files list omitted `GOVERNANCE.md`, the file the rule is written in and now the primary carried governance file. `spec/files.json` declares it carried, so the list contradicted the baseline. `.github/copilot-instructions.md` said a rule a reviewer must honor has to live in `AGENTS.md` to be provider-independent. The router holds no rule text, so that sentence sent reviewer-binding rules to the wrong file. The earlier sweep fixed the first half of that same line and left this clause, which is the same fix-the-instance failure the sweep existed to correct. The third finding is declined. It reads `git ls-files` as printing paths relative to the repo top level even under `-C`, which would make the join in tracked_paths produce broken paths. It prints them relative to the `-C` directory: `git -C spec ls-files` yields `audit.py`, not `spec/audit.py`, and discovery over a subdirectory returns paths that all exist, from a relative root and an absolute one. A case pins the invariant, since passing `--full-name` would flip it with nothing else to notice. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the repo’s governance documentation to reflect that reviewer-binding rules live in GOVERNANCE.md (with AGENTS.md acting as a router), and adds a regression test to pin git ls-files -C <subdir> path relativity so discovery continues to yield valid paths when run from a subdirectory.
Changes:
- Add a unit test ensuring
prose_lint.discover()returns existing paths when rooted at subdirectories (pinninggit ls-files-Cbehavior unless--full-nameis introduced). - Update
GOVERNANCE.md’s carried-files prose to include itself in the carried set. - Fix
.github/copilot-instructions.mdto route reviewer-binding rule placement toGOVERNANCE.md(rather thanAGENTS.md).
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| scripts/test_prose_lint.py | Adds a regression test covering subdirectory-rooted discovery and ensuring discovered paths exist. |
| GOVERNANCE.md | Updates carried-files prose to include the governance file itself in the carried set. |
| .github/copilot-instructions.md | Corrects the “reviewer-binding rules must live in …” statement to point to GOVERNANCE.md (routed from AGENTS.md). |
The list enumerates backticked filenames, so a prose self-reference reads as a different kind of member and a scan for filenames misses it. The "this file" form stays where the surrounding text is prose. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ptr727
added a commit
that referenced
this pull request
Jul 30, 2026
…ain (#457) Promotes 3974ac2 (#455) and c4d3980 (#458). AGENTS.md becomes a thin router (87,457 -> 7,789 bytes) with the rule text in GOVERNANCE.md, and docs/token-cost.md records the measurement behind it. The scripts/ gates get tests. Five defects in them all reported success while doing nothing: the charset table omitted three characters the rule names, the duplicate-word allowlist contradicted its own comment, discovery reached 246 generated files against a rule that names those directories, lstrip ate every dotfile prefix so --diff was blind to .github/, and the table was first written with literal non-ASCII in the file the rule scans. Each fix carries the case that would have caught it. CI gates the self-tests, both repo_gate checks, and the charset and duplicate-word rules. The semicolon rule stays warn-only. Promoted now so a new repo scaffolds against the router shape rather than the pre-split monolith: groundTruthBranch cannot name develop (AUDIT.md section 1, and #340 settled it for HomeAssistant-Config), so until main carries GOVERNANCE.md a newly scaffolded repo either holds the pre-split shape or is audited against a branch lacking what it carries. Sections declared verbatim changed, so every downstream copy is stale until re-vendored. spec/fidelity_honesty.py distinguishes stale from modified by hash.
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.
Answers the three review findings on promotion PR #457. Two held, one is declined with evidence.
Held. The carried-files list in
GOVERNANCE.mdomittedGOVERNANCE.mditself, whichspec/files.jsondeclares carried. And.github/copilot-instructions.mdstill said a reviewer-binding rule "has to live inAGENTS.md" - the router holds no rule text, so that sent such rules to the wrong file. The earlier sweep fixed the first half of that same line and left this clause.Declined. The third finding reads
git ls-filesas printing repo-top-level-relative paths even under-C, which would maketracked_pathsjoin them wrongly. It prints them relative to the-Cdirectory:Discovery over a subdirectory returns 16 paths that all exist, from a relative root and an absolute one. Rather than only declining, a case now pins the invariant, because passing
--full-namewould flip the behavior with nothing else to catch it.Whole gate green: 26 self-test cases, markdownlint 0 issues across 39 files, zero introduced splices.
🤖 Generated with Claude Code