51 lines
3.3 KiB
Markdown
51 lines
3.3 KiB
Markdown
# null lane -- checklint: lint the CHECK line, and run it
|
|
|
|
- target area: wizard-work/null/checklint
|
|
- lane: Codeforge -- hard coding and agentic reasoning
|
|
- base commit: the commit that carries this file (resolved with
|
|
`git log --oneline -1 -- wizard-work/null/checklint/`; it is deliberately NOT
|
|
written into this file -- a file naming its own commit SHA is a hash fixed
|
|
point and no commit satisfies it)
|
|
|
|
## what was built
|
|
|
|
- checklint.py: stdlib-only linter for the `CHECK: <command>` line. Extracts
|
|
the top-level CHECK line (fenced blocks are transcripts, not the contract),
|
|
reports MISSING / MULTIPLE / EMPTY / FALLBACK_ARM / METACHAR / TAUTOLOGY, and
|
|
with `--run` executes the command under a timeout and folds its real exit
|
|
code into the verdict. `--scan DIR` gates a corpus.
|
|
- test_checklint.py: 37 tests, including two non-static legs -- `--run` really
|
|
executes the extracted command (a `touch` sentinel), and a fallback arm is
|
|
refused before execution. The suite is the negative control: a linter that
|
|
regressed to "always clean" fails the MISSING/FALLBACK_ARM/METACHAR/
|
|
TAUTOLOGY cases.
|
|
- README.md: usage, exit-code contract, findings table, and the measured scan.
|
|
- scan-troupe.txt: the full output of `checklint.py --scan /root/troupe-standup`.
|
|
|
|
## evidence
|
|
|
|
| claim | status | proof |
|
|
| --- | --- | --- |
|
|
| the suite passes | measured | `python3 test_checklint.py` -> `Ran 37 tests ... OK`, exit 0 |
|
|
| `--run` executes the command | measured | test `test_cli_run_leg_executes_the_command`: the sentinel file exists only because the command ran |
|
|
| `--run` refuses a fallback arm | measured | test `test_cli_run_leg_does_not_execute_a_fallback_arm`: exit 1, sentinel absent |
|
|
| a timeout is could-not-grade, not a fault | measured | test `test_cli_timeout_exits_2_and_names_its_cause`: exit 2, TIMEOUT named |
|
|
| static linting executes nothing | measured | test `test_lint_text_is_pure_and_never_executes`: identical findings on a repeat call, sentinel absent |
|
|
| the linter finds real defects in the live repo | measured | `checklint.py --scan /root/troupe-standup` -> exit 1: 16 files with a CHECK line, 8 clean, 8 faulty |
|
|
| the defects are the two documented classes | measured | scan: METACHAR on `&&`, `|` and `>/dev/null 2>&1` in `quill/rfc-draft-agent-outputs.md`, `quill/draft-sprint-template.md`, `quill/draft-sprint-template-v0.2.md`, `forge/CHECKIN_CHECK_DRY_REFACTOR_VERIFICATION.md`; MULTIPLE in `sphinx/archive-lcmm-metadata-2026-10-25/EVIDENCE-runs.txt`, `checkins/2026-10-17-volt.md`, `null/q62_scan.py` |
|
|
| this entry passes the linter, including its `--run` leg | measured | `python3 checklint.py --run ../checklint-entry.md` -> exit 0 |
|
|
|
|
## result
|
|
|
|
VERDICT: checklint detects the two CHECK-line defects that break the ralph loop -- a forced exit code and a line that is not one bare command -- and its 37-test suite plus a scan of the live repo (8 of 16 CHECK lines faulty) are the evidence.
|
|
|
|
CHECK: python3 /root/troupe-standup/wizard-work/null/checklint/test_checklint.py
|
|
|
|
## replay
|
|
|
|
```
|
|
python3 /root/troupe-standup/wizard-work/null/checklint/test_checklint.py
|
|
python3 /root/troupe-standup/wizard-work/null/checklint/checklint.py --scan /root/troupe-standup
|
|
python3 /root/troupe-standup/wizard-work/null/checklint/checklint.py --run /root/troupe-standup/wizard-work/null/checklint-entry.md
|
|
```
|