|
R15(1): repo-lint can no longer report PASS over zero files
Reproduced before fixing, both cases printing "PASS: repo lint (0 fail, 0 warn)" with exit 0: `repo_lint.py --recordd` and `repo_lint.py /nonexistent-path`. Only the two known flags were stripped, so any other --flag became argv[0] i.e. the ROOT; it resolved nowhere, rglob yielded nothing, and zero findings read as clean. This is the gate whose "0-fail" every GA-R6 stage close in this project's history cites, and it could not tell a clean repo from an unexamined one. Fix: reject unrecognised options (the actual root cause) and >1 positional root; require the root to be a directory carrying repo markers, refusing rather than defaulting to success; add a files-scanned floor; and PRINT the files-scanned count -- Phase 0 found repo-lint emitted no such figure at all, so a reader could not distinguish a thorough pass from a vacuous one. The floor SCALES, and a flat one was wrong: the first implementation used a flat 100 and failed 20 of the 47 existing harness cases, because tests/repo-lint legitimately builds ~7-file fixture repos. The strong floor now applies only to a full checkout of THIS repo, detected by two files no fixture creates; any other tree must still scan at least one file. Caught by running the harness. Harness 54/54 (was 47) -- T48-T54 lock each reproduced defect, including that the floor does NOT punish a legitimate minimal tree. Gauntlet ALL GREEN (82). repo-lint on the real repo: 0 fail, 1 standing warn, 596 files scanned. No consumer breaks -- preflight P1 reads the exit code, not the summary text; harness regexes match the unchanged "PASS: repo lint" prefix. Both verified. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvCyrwvYTTcDYnRErfMsNf |
|---|
|
|
| docs/changelog-20260727-stage5-phase0.md |
|---|
| scripts/repo_lint.py |
|---|
| tests/repo-lint/run-tests.sh |
|---|