docs: state verify-build's dist/ guarantee at the width it enforces (closes #331) #338
Reference in New Issue
Block a user
Delete Branch "docs/331-verify-build-scope"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #331.
check_dist_treewalks-type f -o -type l, so the emitted-tree cross-check covers regular files and symlinks underdist/.README.mdstated it as "nothing underdist/that the build did not write", which is broader than that: fifos, sockets, device nodes and empty directories are not checked.The exclusion stays as it is. A build emits none of those types, none can carry a shippable payload, and grep on a fifo would hang rather than fail.
README.md(Build Receipts and thescript/verify-buildentrypoint bullet), the script's header comment and thecheck_dist_treecomment now say this in the same words, so the code and the docs cannot drift apart again.Scope of the diff
Files touched:
README.md,script/verify-build,TODO.md. Nothing else.script/verify-build: comment text only.git diff -U0yields zero changed lines that are not comments, and the file with comments stripped is byte-identical before and after (sha256 27e927e063b321a2fa971f03ddf02565194dbafd44f8b6ac0c97602a4b02e437on both sides). No behaviour change.README.md: the two passages above; the rest of the diff in that file isprettierreflow of the touched paragraphs.TODO.md: the Completed Steps entry the repo's Workflow section requires, plus the same precision applied to the one sentence in Status that restated the old, too-broad claim.Verification
make checkgreen on this branch, rebased onnextatcef6aaa:make fmtrun and committed;prettier --checkreports all matched files conform. Lint ran in the pinned container viascript/lint, not on the host. No containers or images left behind (docker ps -aclean).FAIL —
needs-rework. One finding.script/verify-build:2-3— the script's own opening synopsis still reads "assert that dist/ holds exactly what the build that just ran emitted", which is the same unqualified claim #331 was filed about ("nothing underdist/that the build did not write"). The DoD requires the same wording whereverscript/verify-builddescribes itself; the header paragraph at line 30, thecheck_dist_treecomment and bothREADME.mdpassages were narrowed, but the first three lines of the file — the description a reader hits first — were not, so the file now contradicts itself 28 lines apart. Its exact counterpart, theREADME.mdentrypoint bullet, got "the regular files and symlinks underdist/... (other file types are out of scope)"; the synopsis needs the same qualification, or an explicit pointer to the paragraph below that carries it.Non-blocking nit: "empty directories are not checked" is narrower than the walk — a non-empty directory whose only contents are unwalked types is equally unchecked (verified against a fixture: a
dist/directory containing only a fifo passes). Same class, no shippable payload, and it is #331's own wording, so noted rather than required.Verified and clean otherwise: no behaviour change confirmed independently — every one of the 22 changed lines in
script/verify-buildmatches^[+-][[:space:]]*#, the file contains no heredoc so no code line can masquerade as a comment, mode stayed100755, and my own comment-stripping filter hashes both sides to27e927e0...b4a02e437. Walk unchanged atfind dist \( -type f -o -type l \) -print0; probed against a fixturedist/— fifo, empty directory and fifo-only directory pass, an extra regular file and an extra symlink each fail — so the documented width is the enforced width.TODO.mdchanged in exactly the two disclosed places. CI green one7aade4, base isnext, merges cleanly, commit title carries(closes #331), no attribution trailers, prettier clean.make checkgreen in my own clone (41 suites / 835 tests,test-verify-build39 cases, lint executed in the pinned container — theRUN make lintlayer ran, notCACHED).e7aade4d09toc394a64a65PASS — independent re-review at
c394a64, no defects.No-executable-change confirmed by my own method rather than the author's: mode
100755both sides, no heredoc in the file, every changed line matches^[+-][[:space:]]*#, and a quote-aware tokenizer of mine (drops#only outside single/double-quoted state) emits byte-identical code for both sides — no changed line begins inside one of the multi-linefail "..."strings. Walk unchanged atfind dist \( -type f -o -type l \) -print0; fixture probe run here: extra regular file, extra symlink, and a symlink pointing at a receipted file each fail, while a fifo, an empty directory, and a directory containing only a fifo each pass — documented width equals enforced width.make checkgreen in my own clone with the lint stage genuinely executed (#11 [lint 1/1] RUN make lintDONE 4.7s, not CACHED; eslint +prettier --checkin the pinned container), 41 suites / 835 tests,test-verify-build39 cases.Two called out rather than filed:
script/verify-build:374-377is a fifth self-description and opens unqualified — "This says dist/ contains no others: an artifact that was added after the build ... is not something this check may pass over". Unlike the file synopsis the previous review failed on, it is the first paragraph of a single contiguous comment block whose closing paragraph now carries the bound ("the guarantee is bounded to what is walked"), so I read it as exposition rather than drift risk. Noted, not required.Disclosure: the pre-existing unbackticked
grepatTODO.md:121sits inside an untouched #309 entry; leaving it out of scope is right.