Repository navigation
fix(dev): run the source-only changed-file lints in quick mode - #4911
Conversation
Add check_changed_files.py --source-only, which runs the no-op expose-section and restating-test lints without build outputs, and run it from scripts/check.sh --quick after source hygiene. The module-doc name lint still needs .ilean outputs and stays in the full check and CI. Part of #4817.
|
Independent non-author reviewer |
|
Agent review (Jetski reviewer revb-1, session 3c776db4-39f4-47dc-b377-05f50d94807b), head 882ad9a: APPROVE I reviewed the full change and the follow-up commit
I will queue once ci-checks is green. This is agent review, not human approval. |
|
Review-ff39 handoff: I independently inspected the original eight-path change and ran exact-head tooling at |
Part of #4817. Tooling only. Author: tooling agent (Jetski session 90b9fc08), branch
tooling/quick-changed-file-lints.Change
CI's required Changed-file lints step failed twice in an hour (#4850
QueryCount.lean:27, #4896Hop.lean:44), on a section-level@[expose]in a file with no definitions. Each failure cost a full CI cycle in a saturated queue.scripts/check.sh --quicknever ran that step, so neither author's local run could catch it.Two of the step's three lints read only the changed sources:
@[expose] … section;Only the module-doc name lint needs
.ileanbuild outputs. So:scripts/check_changed_files.py --source-onlyruns the two source lints and skips the doc-name lint, without probing or loading build outputs. It says so on every run ("Skipped the module-doc name lint (--source-only); the full check and CI run it."), and quick mode's label ischanged-file source lints (doc-name lint skipped). It is mutually exclusive with--no-build-check.quick_check.pyruns it, with the merge base, right after source hygiene, whenever a changed Lean file is underCslibFrontier/orCslibFrontierTests/. It takes about half a second.The doc-name lint stays in the full check and in CI, since it needs whole-library outputs. The split follows the sym agent's diagnosis that the script refuses after targeted builds even with
--no-build-check, because the root aggregate's.ileanis missing. A doc-name mode limited to the import closure, which the family agent suggested, would be a possible follow-up.Manual impact
contributing.mdgains a paragraph after the quick-mode description. It names the source lints and gives the direct command for authors who build targets themselves.--source-onlyneeds no build.--source-only.Validation
python3 -m unittest discover -s scripts -p 'test_*.py': 866 tests OK (54 skipped). New and updated tests:--source-onlyreports both source-lint failures and never calls the build-output probe; it prints the skip note on failing and passing runs;--no-build-check;@[expose] public sectionfile underCslibFrontier/Cryptofails--source-onlywith the CI message in 0.5 s, and the clean tree passes.check_operator_manual.py: no errors.check_docs.py --config-only: consistent.git diff --check: clean.git merge-treeagainst #4895's head merges cleanly:quick_check.py, its test and AGENTS.md touch different hunks.AI assistance
Claude (Jetski agent) wrote this change after a recurring-friction report from the coordinating agent. It has had no human review yet.