The claim
CODESTYLE.md:19, in Clean-Compile Verification:
- Run it after every code change. The relevant language's clean-compile must pass before you commit, and CI runs the same checks as a backstop.
CI does not run the same checks. It runs the language clean-compile plus the doc-lint set, and
all of it lands in the one required status. In validate-task.yml
the Lint sources job additionally runs markdownlint (L24), cspell (L33), actionlint (L41) and
editorconfig-checker (L44-45).
Why it matters
That sentence is the one a reader consults to answer "what must be green before I push", and it
licenses the inference local clean-compile green implies CI green, which is false for every repo in
the fleet. The rule that actually covers this is a section away and in another file,
GOVERNANCE.md "Verification Discipline":
- Run the repo's whole lint gate before every push, not the parts that look relevant. CI runs
all of them, so a partial local run only defers the failure, and the tool most likely to catch a
given change is often the one it seems least about (an edit that manipulates line endings is
exactly when editorconfig-checker matters).
Read together the two are consistent; read the way an agent actually reads them - starting from the
section that defines the pre-commit gate - CODESTYLE.md's sentence is a dead end that reports the
gate is smaller than it is.
This is not theoretical. It cost a CI round trip on Financial-Modeling
#105 yesterday: fifteen new files were
written LF into a CRLF-default repo, the documented clean-compile (ruff + ruff format + mypy +
pytest) passed, markdownlint and cspell were run by hand and passed, and CI failed on the one
checker that was skipped precisely because the pre-commit gate never names it. GOVERNANCE.md
predicted that exact failure, in those words. The agent had read CODESTYLE.md's gate and not that
line.
Note that this is the failure mode GOVERNANCE.md:142 describes: no linter
catches it, because markdownlint, cspell, actionlint and editorconfig-checker all pass on a claim
that is merely untrue.
Suggested fix
Two small edits, both in CODESTYLE.md:
- Correct the backstop sentence so it stops asserting equality, and point at the whole gate.
Something like: "CI runs the same language checks as a backstop, plus the repo's doc-lint set -
see GOVERNANCE.md 'Verification Discipline' for the rule that the whole lint gate runs before
every push."
- Add the lint gate to the cross-reference list at
CODESTYLE.md:5, which
enumerates what lives in GOVERNANCE.md instead (PR titles, branching, US English, markdown style,
comments philosophy, workflow YAML, PR review etiquette) and does not mention verification
discipline or the lint gate.
I have deliberately not proposed moving the rule into CODESTYLE.md. CODESTYLE.md:200 already
delegates line endings to GOVERNANCE.md on purpose, and "Verification Discipline" is the right home
for a rule about gates that pass while the work is unfinished. The defect is only that the doc which
defines the pre-commit gate states the gate's scope incorrectly.
Raising it here rather than fixing it locally, per the carried policy that a factual error in shared
prose is fixed at the source and re-vendored.
The claim
CODESTYLE.md:19, in Clean-Compile Verification:CI does not run the same checks. It runs the language clean-compile plus the doc-lint set, and
all of it lands in the one required status. In
validate-task.ymlthe Lint sources job additionally runs markdownlint (L24), cspell (L33), actionlint (L41) and
editorconfig-checker(L44-45).Why it matters
That sentence is the one a reader consults to answer "what must be green before I push", and it
licenses the inference local clean-compile green implies CI green, which is false for every repo in
the fleet. The rule that actually covers this is a section away and in another file,
GOVERNANCE.md"Verification Discipline":Read together the two are consistent; read the way an agent actually reads them - starting from the
section that defines the pre-commit gate - CODESTYLE.md's sentence is a dead end that reports the
gate is smaller than it is.
This is not theoretical. It cost a CI round trip on Financial-Modeling
#105 yesterday: fifteen new files were
written LF into a CRLF-default repo, the documented clean-compile (
ruff+ruff format+mypy+pytest) passed, markdownlint and cspell were run by hand and passed, and CI failed on the onechecker that was skipped precisely because the pre-commit gate never names it. GOVERNANCE.md
predicted that exact failure, in those words. The agent had read CODESTYLE.md's gate and not that
line.
Note that this is the failure mode
GOVERNANCE.md:142describes: no lintercatches it, because markdownlint, cspell, actionlint and editorconfig-checker all pass on a claim
that is merely untrue.
Suggested fix
Two small edits, both in
CODESTYLE.md:Something like: "CI runs the same language checks as a backstop, plus the repo's doc-lint set -
see GOVERNANCE.md 'Verification Discipline' for the rule that the whole lint gate runs before
every push."
CODESTYLE.md:5, whichenumerates what lives in GOVERNANCE.md instead (PR titles, branching, US English, markdown style,
comments philosophy, workflow YAML, PR review etiquette) and does not mention verification
discipline or the lint gate.
I have deliberately not proposed moving the rule into
CODESTYLE.md.CODESTYLE.md:200alreadydelegates line endings to
GOVERNANCE.mdon purpose, and "Verification Discipline" is the right homefor a rule about gates that pass while the work is unfinished. The defect is only that the doc which
defines the pre-commit gate states the gate's scope incorrectly.
Raising it here rather than fixing it locally, per the carried policy that a factual error in shared
prose is fixed at the source and re-vendored.