Repository navigation
The base quality rules ask for a strict type checker, a linter and a formatter - #2440
Conversation
Closes #2439 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DpT5xSQaG8RrSCyeihaQsm
…here under a generated freeze core/quality.md's static-check rules gain a fenced check with placeholders and a pass condition. This repository adopts them: mypy strict and the ruff formatter under a freeze tools/freeze_static.py writes into pyproject.toml from their own output, and pyflakes as the linter. CI installs the three, pinned to minor ranges, and fails on a stale freeze. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DpT5xSQaG8RrSCyeihaQsm
…t table Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DpT5xSQaG8RrSCyeihaQsm
|
Codex round 1: one finding, fixed in the two commits above.
Fixing it showed this repository broke its own new rule (no type checker, no formatter). Owner's choice: keep the rules MUST and adopt them here.
|
…nd setup lists the checkers Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DpT5xSQaG8RrSCyeihaQsm
…tooling The type checker and the formatter now run over every file. Until the tooling is cleaned (#2441), conformance's static check fails here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DpT5xSQaG8RrSCyeihaQsm
|
Codex round 2: three findings.
Owner's choice: no freeze. The static checks read the whole tooling, so conformance's static check fails until #2441 lands; #2441 is P1 in the v3.0 milestone. |
|
Codex round 3: one finding, P1, the static check fails on the existing tooling. By design: the owner chose no freeze and accepted conformance failing until #2441 (P1, v3.0 milestone) cleans the tooling. Not fixed here. |
… until the tooling is clean Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DpT5xSQaG8RrSCyeihaQsm
|
Owner's choice after round 3: the static check reports, and does not fail, until #2441 cleans the tooling.
|
…assing With the exits ignored, the check reported PASS over the tooling's type errors and added nothing to the count awaiting a reading. It is now a manual, budgeted reading, so the run says it is not clean yet. The runner refuses an entry that ignores an exit with `|| true` unless it is manual. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DpT5xQWkHtQPrPyMoXzWMG
|
Codex round 4: one finding, fixed in a87085f.
The fix:
Before and after, Without the disposition change, the runner's new rule fails the run.
|
`|| true` ignored every exit, so a bad configuration or a crash read as a budgeted finding. The static checks now carry only the findings exit (1) past, and any other exit stops the block with it. The runner refuses a substitution that uses `|| true`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DpT5xS97qSXAAX4YJ54Tvz
|
Codex round 5: one finding, fixed in 29d0e52.
The fix:
Before and after, a block whose first checker crashes: Without the change to the entry, the runner's new rule fails the run.
|
A checker missing from the interpreter exits 1 with "No module named ...", the same exit as findings, so it read as a budgeted finding. Each command now imports its checker first and stops the block with exit 2 when it is absent. The runner refuses a findings-exit substitution without that import. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DpT5xS97qSXAAX4YJ54Tvz
|
Codex round 6: one finding, fixed in 28a3d8d.
The fix:
Before and after, with the checker not installed: Without the change to the entry, the runner's new rule fails the run.
|
|
Codex round 7: no findings. Smoke, conformance, doc sync and the quality ratchet pass; three readings wait as intended, the static checks among them. The review loop is done; the PR waits on the owner. |
core/quality.md, which every chain loads, gains a "Static checks" section. Until now no template asked for a type checker, and the linter rule loaded only when adding a check.templates/core/quality.mddocs/architecture/08-crosscutting-concepts.mdWhy, from the efficacy benchmark, round 5e:
mypy --strictfrom the project briefpy tests/run.py all: 3 suites, 0 failedCloses #2439
Also: this repository runs the three checks on itself. Until #2441 cleans the tooling (P1, before v3.0), the check reports its findings without failing.
🤖 Generated with Claude Code
https://claude.ai/code/session_01DpT5xSQaG8RrSCyeihaQsm