Skip to content

Fix the false FAILs the big-repo sweeps turned up - #29

Merged
dcadolph merged 22 commits into
mainfrom
fix/sweep-fixes
Nov 13, 2026
Merged

dcadolph merged 22 commits into
mainfrom
fix/sweep-fixes

Conversation

@dcadolph

Copy link
Copy Markdown
Owner

Two sweeps over 84 large repositories found two real documentation defects and 24 places where kibble misread a document or its output. This fixes those misreads and the new ones the reruns reached for the first time. Twenty-two commits. Each fix comes with unit tests built from the real document or output and a negative control, and was then rerun in Docker against the repositories that exposed it.

Documents kibble never read are now read. A README named in any letter case is found. A go install line with a valued flag such as -tags 'postgres' is read as an install route. A local npm install <name> runs in a scratch project when a manifest in the checkout declares that name, and its binary comes from the package's own bin field.

Lines kibble should not run are left alone. An ellipsis used as a path segment and an all-caps name with a numeric suffix such as UTILITY_1 are placeholders. A block under a bare platform heading such as ### macOS is skipped on Linux. Guides kept for a retired version, with legacy, deprecated, or archived in the file name, are skipped.

Files a document shows and then runs are written first. A shell block whose first line is a comment naming one file is written as that file. A fenced block is also written as a file when the paragraph just above it names exactly one file whose extension matches the fence language. A path the checkout already holds is never overwritten.

Outputs kibble misread are read correctly. tcell's unset TERM error reads as interactive. A longer no-match message, and an exit code the document lists as not found, read as no data. An installer that stops because crontab is missing reads as a missing program. A line after a skipped line that would have provided its tool is blocked, not failed. Subcommands the source defines but the released binary lacks are reported as unreleased instead of drift. A failure is explained by its message, not by a trailing stack frame or file location.

Python steps run on the newest release the project's stated range allows, so a project capped below the newest Python no longer fails on it.

The reruns exposed cases where the checkout, not the document, was at fault, and these now read as blocked. A Go build fails because the document's file landed beside the repository's own package. A Node script imports a package the reader has not installed, when the import comes from the script the line names. A bundler cannot resolve its entry file. A tool says the checkout is not its kind of repository and names its own init command, which moves 183 jj lines that all failed for that one reason.

Equal flag-check and doc-coverage rows of one binary collapse to one row. nodemon's corpus pin moves from 2,0,0 to 3,0,0, since its local install route now runs and the collapse removes the doubled row. The README and design notes document each new rule.

Checked: build, vet, race tests, and golangci-lint are clean. The Docker reruns reconcile 768 rows with no unexplained move. Both real finds still fail, the true failures of three control repositories are unchanged, and every corpus pin holds.

@dcadolph
dcadolph merged commit 3add2b9 into main Nov 13, 2026
3 checks passed
@dcadolph
dcadolph deleted the fix/sweep-fixes branch November 13, 2026 00:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant