docs(hygiene): drop the hand-maintained integers from scanHeaderPosition's docstring - #1356
Merged
Merged
Conversation
…ion's docstring
Seventh member of the family that removes counted facts stated in prose with no
producer. Two sentences in one docstring, swept together:
- the "Why `.ts` only" paragraph's "3 of the 5 `.mjs` files under `scripts/`,
the `.sh` script and the four `src/docs/*.md` pages have none"
- the shebang bullet's "the two `.mjs` gates in `scripts/` do, and they carry
the header on line 2"
Both needed more than a deletion. Measured with the gate's own COPYRIGHT_HEADER,
six of the eight `.mjs` under `scripts/` DO carry the header, so the bare
enumeration would have been false in the opposite direction; and five `.mjs`
carry a shebang, one of which (check-stackblitz-lock.mjs) has no header at all,
so "they carry the header on line 2" is false as a universal claim. The wrong
count was the only thing keeping that claim narrow enough to be true.
The load-bearing half — no `.ts` file in this repo has a shebang — was
re-verified (0 of 338) and is unchanged.
No renumbering, no counting guard (ADR-0049 axis 3). COPYRIGHT_HEADER,
INDENTED_COPYRIGHT_HEADER, the scanned surface, the banner and every executable
line are untouched: six comment lines out, six in.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WMzCeNC4SZcPNBpE2zCVCg
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
This was referenced Aug 27, 2026
os-steve
marked this pull request as ready for review
August 27, 2026 09:04
This was referenced Aug 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1351
Seventh application of the standing family ruling: delete the integers, keep the claim. Two sentences in one docstring —
scanHeaderPositioninscripts/check-source-hygiene.mjs— swept together, as the card required. Six comment lines out, six in. No executable line changed.Why this needed its own PR rather than a renumber
The twin sentence went stale again between being filed and being fixed. The card was written against a measurement of
3 of 8headerless.mjs; PR #1354 normalisedscripts/publish-marketplace.mjs's licence-header spelling that same morning, and the honest reading at the moment of this edit is2 of 8. The prose said3 of the 5. Two numbers, three readings inside one day, one sentence. That is the argument, not an anecdote.Measurements — evidence the prose no longer depends on them
origin/main@3b72afa(the base of this branch, re-fetched at start of work), using the gate's own rule reimplemented verbatim —COPYRIGHT_HEADER = /^\/\/ Copyright \(c\) \d{4} ObjectStack\./from:346, applied the wayscanHeaderPositionapplies it at:425-433. Not agrep "Copyright"approximation.⛔ These figures are reported as evidence, not as numbers to write back in.
The two edits
1. The "Why
.tsonly" paragraph (:404-407)Was: "the header is universal in
.tsand is not in the rest of the scanned trees — 3 of the 5.mjsfiles underscripts/, the.shscript and the foursrc/docs/*.mdpages have none."Both integers are wrong, and — the trap this family has already paid for once — deleting them alone leaves a sentence that is false in the opposite direction: six of the eight
.mjsdo carry the header, so a bare "the.mjsfiles underscripts/… have none" asserts something untrue. The head clause needed the same treatment: "the header … is not in the rest of the scanned trees" is itself a universal negative that the six headered.mjsfalsify.Now: "the header is universal in
.tsand is not universal in the rest of the scanned trees — some of the.mjsunderscripts/, plus the.shand thesrc/docs/*.mdpages, have none."That is deliberately the wording PR #1349 landed for the twin sentence in
test/source-hygiene-header-position.test.ts, so the gate and the suite that tests it stop disagreeing — which was the point of the card.⭐ Note on the two integers that were currently accurate:
the .sh scriptandthe four src/docs/*.md pagesboth measure true today.fourstill goes, under the same ruling — a hand-maintained integer with no producer is the defect, not merely a wrong one — and losing it costs nothing, because "thesrc/docs/*.mdpages" is true and stays true.2. The shebang bullet (
:392-394) — two defects, not oneWas: "No
.tsfile in this repo has a shebang today; the two.mjsgates inscripts/do, and they carry the header on line 2, which is the shape this allows."scripts/check-stackblitz-lock.mjs, which has a shebang and no licence header at all.twotofivewould have left the second defect standing and made it worse — the wrong number was the only thing keeping the universal claim narrow enough to be true.Now: "No
.tsfile in this repo has a shebang today; some of the.mjsunderscripts/do, and where one of those carries the header it sits on line 2, which is the shape this allows." — no figure, and a conditional in place of the universal. Verified: of the five shebanged.mjs, the four that carry a header carry it on line 2; the fifth carries none, and is outside the conditional.The load-bearing half was re-verified rather than assumed, since the allowance rests on it: no
.tsfile in this repo has a shebang (0 of 338). Unchanged, and no escalation needed.What was deliberately not done
2 of 8orfive.COPYRIGHT_HEADER,INDENTED_COPYRIGHT_HEADER, the scanned surface and the banner are untouched, as is every executable line.scripts/publish-marketplace.mjsnot touched — out of scope here, and already handled by fix(hygiene): spell the marketplace script's licence header the way the gate reads it #1354.Verification
pnpm verifygreen, run on the tree that is byte-identical to this branch's head09ebcd0(git status --porcelainempty at that commit). Verdict lines as the gates printed them:typecheck, lint and build completed with no diagnostics; the whole chain exited
0(captured before any pipe).Changeset
.changeset/scan-header-position-docstring-integers.md, empty frontmatter — the sanctioned "releases nothing" declarationchangeset-check.ymldocuments. Comment text only; nothing reaches HotCRM users.Related
source-hygiene-header-position.test.tsprose says "3 of 5.mjsunderscripts/" — it is 2 of 7, both integers were already wrong, and PR #1343 nudges it to 2 of 8 #1346 / PR docs(hygiene): drop the .mjs/.md counts from the header-position pin's prose (#1346) #1349 — the twin sentence, and the quantifier wording copied herepublish-marketplace.mjs's licence header says "ObjectStack contributors." and failsCOPYRIGHT_HEADER— invisible only because the check reads.tsonly, and it is why "headerless .mjs" has two defensible counts #1352 / PR fix(hygiene): spell the marketplace script's licence header the way the gate reads it #1354 — the producer of one of these numbers; this card was serialised behind itscanHeaderPosition's "all 282.tsfiles … 274 of them on line 1" is stale in both halves — it is 324 and 324, and the 8-file gap it was hedging against has closed #1315 — edited the bullet immediately above both of these and missed them🤖 Generated with Claude Code
https://claude.ai/code/session_01WMzCeNC4SZcPNBpE2zCVCg
Generated by Claude Code