AGENTS.md: add Verification Discipline; sweep prose on a behavior change (#356) - #358
Merged
Conversation
…nge (#356) Seven rules whose unifying property is that every failure is green: a skipped job and a passing job are indistinguishable in the aggregator, a pattern that matches less still exits zero, a gate that stops gating still reports success. No linter, status check, or review layer catches any of them. New section "Verification Discipline" (placed between Documentation Style Conventions and PR Review Etiquette - write it right, verify it, then review): a test asserts the mechanism it names; gates fail loud rather than narrowing quietly; the whole lint gate runs before every push; regex edits on CRLF files capture the carriage return; a green check is not evidence; a workflow change is only exercised by CI; and a review flags an instance, so fix the class. Three of these generalize rules that already exist in narrower form, so each cross-references its instance instead of restating it: the fail-loud rule points at WORKFLOW.md D8.4, the lint-gate rule at "Running the Linters Locally" (which documents how to invoke, not that all must run), the green-check rule at the changes-job note under Branching Model, and the CRLF rule at the Line Endings warning it explains the mechanism for. Per the amendment, the seventh rule - search for prose asserting the old behavior after changing it - goes under Documentation Style Conventions beside the present-tense rule, as its maintenance counterpart: that rule governs how to phrase a doc, this one how to keep it true when the behavior moves. The review companion ("fix the class") sits in Verification Discipline, where it generalizes past docs to any flagged defect class. README Rules gains the two that read as fleet-wide invariants rather than technique: run the whole lint gate before pushing, and make gates fail loud. Both are bullets under an existing heading, so the auto-generated Table of Contents is untouched. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a new "Verification Discipline" section to AGENTS.md and updates adjacent prose so the governance docs explicitly capture the class of failures that still appear "green" in CI, alongside a companion maintenance rule for keeping documentation accurate after behavior changes.
Changes:
- Add
## Verification DisciplinetoAGENTS.md, documenting seven verification rules (including the amendment's review companion). - Add a new Documentation Style Conventions bullet: when changing behavior, grep for prose that asserts the old behavior and update it.
- Update
README.md's "Rules -> Always" index with two new invariant-style bullets (full lint gate before pushing; gates fail loud).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| README.md | Extends the high-level rules index with two new invariant-style bullets aligned with the new verification discipline guidance. |
| AGENTS.md | Adds the new Verification Discipline section and the companion doc-maintenance rule near present-tense guidance to keep governance text accurate over time. |
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 freeto 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.
Fixes#356, including the amendment.
What lands
New
## Verification Disciplinesection in AGENTS.md, placed betweenDocumentation Style ConventionsandPR Review Etiquette- write it right, verify it, then review. It opens with the unifying property: every failure below is green, so no linter, status check, or review layer catches any of them.The six from the proposal, plus the amendment's review companion:
.matches\r.Rule 7 from the amendment - search for prose asserting the old behavior after changing it - goes under
Documentation Style Conventionsper your placement note, directly beside the present-tense rule as its maintenance counterpart: that rule governs how to phrase a doc, this one how to keep it true when the behavior underneath moves.Placement judgment on the companion: you grouped "fix the class" with rule 7 but did not place it. I put it in
Verification Disciplinerather than the docs section, because it generalizes past stale prose to any flagged defect class (a silent-narrowing pattern, a mis-worded contract). Happy to move it if you'd rather keep the pair together.Complementing rather than duplicating
You named three adjacent rules; each generalization now cross-references its instance instead of restating it:
WORKFLOW.mdD8.4 (the identity-allowlist gate, landed yesterday via publish-plan-task: the actor allowlist fails silently if the App identity changes #354)changes-job note under Branching Model (its instance for that one job)I also folded the mirror failure into rule 4: a text-mode rewrite silently flattens CRLF to LF, the inverse of the
CRCRLFcase. I hit exactly that two days ago - a scripted edit flattenedspec/project-types.jsonand CI caught it, not my local run, which is also rule 3 in action.README
Rules -> Alwaysgains the two that read as fleet-wide invariants rather than technique: run the whole lint gate before pushing, and make gates fail loud. Both are bullets under an existing heading, so the auto-generated Table of Contents needs no change (and is never hand-edited per its own rule).Validation
spec/validate.py, markdownlint, CI-scoped cspell, editorconfig-checker: clean. CRLF preserved on both files.🤖 Generated with Claude Code