Skip to content

docs(ci-cd-pipeline): state the link-sweep populations instead of copying their counts (objectui#7886) - #7899

Merged
os-sam merged 1 commit into
mainfrom
claude/issue-7886-ci-cd-pipeline-doc-counts
Sep 6, 2026
Merged

docs(ci-cd-pipeline): state the link-sweep populations instead of copying their counts (objectui#7886)#7899
os-sam merged 1 commit into
mainfrom
claude/issue-7886-ci-cd-pipeline-doc-counts

Conversation

@claude

@claude claude Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Fixes #7886

content/docs/guide/ci-cd-pipeline.md's Link Checking (check-links.yml) section published the same two hand-copied document counts that objectui#7825 had just removed from that workflow's own header — in the present tense, on a page the site serves to readers, which is the most exposed of the four instances of the objectui#7448 class.

Measured on origin/main (d9580f464) at the time of this change:

claim page said measured today
content/docs/** markdown 183 184
repo-root docs/** markdown 15 17
find content/docs -type f \( -name '*.md' -o -name '*.mdx' \) | wc -l   # 184
find docs -type f \( -name '*.md' -o -name '*.mdx' \) | wc -l           # 17

check:shell-escape-residue's own verdict line corroborates the first reading independently, from a separate walk of the same tree: content/docs: 184 file(s), 1064 fence(s).

Not a number refresh

Changing 183 to 184 and 15 to 17 would only reload the trap — nothing reads either figure, so nothing would go red the next time they drift. This applies the remedy this repository has now landed three times (objectui#7448 twice, objectui#7825 once), and that this very page already applies to its own workflow count at the top ("This page deliberately states no workflow count"): state the population, and point at the reading.

The paragraph now names which trees, which extensions, and the apps/site/source.config.ts declaration the content tree comes from (dir: '../../content/docs', baseUrl /docs), says that the args glob list decides the scope and nothing else, and points at the two live readings — a find in any checkout, and Lychee's own run summary. No numeral survives in the section that adding or deleting a document could falsify: the only digits left are issue references (objectui#7448, objectui#7825, objectui#7886, objectui#3449), which the class's own pin excludes by construction.

Historical vs present tense

Read as the page actually worded it rather than assumed from the workflow header. The count-bearing sentence was wholly present tense ("Lychee sweeps both documentation trees…"); the historical claim was a separate sentence, already past tense, already carrying its PR number (objectui#3449), already carrying no live numeral — the shape the ruling asks for. It is kept, split into its own paragraph and labelled "Past tense on purpose — none of the following describes the scope today", so the boundary between the live claim and the history is visible rather than inferred. The still-live half of that sentence (the test derives the expected scope from the site config) moved up into the live paragraph, where it belongs.

objectui#3653's job table did not move — before and after, both green

This change adds and removes no ci command. The prose edited is a paragraph below the two-link-checker comparison table and unrelated to the run:-step job table objectui#3653 pins; confirmed by reading the section before editing, and by scripts/__tests__/ci-cd-pipeline-doc.test.ts carrying no mention of Lychee, check-links, sweeps or either count.

  • Before the edit: Test Files 1 passed (1) · Tests 36 passed (36) (os-verify-lock: VERDICT command-exit 0)
  • After, on the committed SHA: Test Files 1 passed (1) · Tests 36 passed (36) (os-verify-lock: VERDICT command-exit 0)

PR #7868's docs row for the report-only census step is untouched; the diff is 21 insertions and 7 deletions, all inside the one paragraph.

Measured: no pin watches these two sentences

The card asked for this reading, and explicitly not for the pin itself.

The shape is exactly the class. Run the pin regex objectui#7825 landed (POPULATION_COUNT in scripts/__tests__/check-links-workflow.test.ts) over the pre-fix paragraph and it fires on both counts — ["183 pages", "15 files"]. The narrower objectui#7448 twin regex (check-doc-fence-languages.test.ts, check-doc-component-types.test.ts) fires on both as well. Over the rewritten paragraph both return [].

Nothing was reading it. All three copies of the pin read .github/workflows/*.yml headers (the third also reads its own test file's header); none reads content/docs/**. Nine other test files read this page — check-doc-expression-carriage, check-doc-example-shared-reader, check-handler-key-read-sites, check-skill-examples, check-skill-eval-tokens, merge-queue-reporting, lint-workflow, doc-version-claims, ci-cd-pipeline-doc — and not one asserts anything about the Lychee prose or either figure. A repo-wide grep for the two literals finds them only here and, as deliberate historical fixtures, inside check-links-workflow.test.ts.

So the gap is real and unguarded, and it is reported rather than built: a fourth copy would introduce a new scan population over the content/docs tree, which this lane requires to land report-only first, and objectui#7888 is already working that pin family's own narrowness problem. Filed as an out-of-scope finding rather than carried here.

Verification

Gate union re-run after the final commit, on d6bf5f79a, with git diff HEAD empty (0 bytes):

gate exit verdict
scripts/__tests__/ci-cd-pipeline-doc.test.ts + 11 other readers of this page 0 Test Files 12 passed (12) · Tests 372 passed (372)
check:doc-types 0 ✅ Every documented component type is registered.
check:doc-snippets 0 Every covered documentation snippet compiles against the built types. (after the scoped closure build the gate's own --build-filter names — its first run was EXIT=2, precondition not met, NOT MEASURED)
check:doc-fences 0 ✅ check:doc-fences — every TypeScript block in 227 document(s) is fenced ts/tsx/typescript…
check:shell-escape-residue 0 ✅ check-shell-escape-residue: OK (5/5 root(s) resolved …)
docs:check-links 0 Links are valid across 17 scan roots.
check:control-bytes 0 ✅ check-control-bytes: OK (scanned 6393 tracked text file(s); skipped 85 binary).
check:doc-example-readers 0 OK 80 documented symbol(s) … no @example hand-spells one.
check:handler-key-reads 0 OK 106 arm(s) … every judged read is a declared member of its arm.

Governed surface, verbatim: ✅ NOT GOVERNED — 1 path(s) checked against 5 governed surface(s); none matched. / An ordinary pull request: the normal review and merge-queue route applies.

Changeset, verbatim and obeyed rather than reasoned about: Compared the working tree with d9580f464 (merge-base with origin/main): 1 file(s) changed, 0 of them published source of a package the release covers, 0 of them a manifest whose published contract moved, 0 under a package changesets ignores, 0 changeset(s) added. / ✅ No source or published contract of a released package changed in this range, so no changeset is owed. — so no changeset is added, not even the empty-frontmatter form.

Repo-wide lint, narrowed and the narrowing measured (three readings, not an assumption):

  1. Population read from eslint's own config, not guessed: every files: block in eslint.config.js targets **/*.{ts,tsx}; the single md occurrence in that file is inside a comment.
  2. File count read from --format json: eslint over the changed path returns one entry, "File ignored because no matching configuration was supplied.", 0 errors — the file is not in the judged population at all.
  3. Invariance for untouched files: the diff modifies one .md file and adds or removes no .ts/.tsx, so eslint's judged population is byte-identical before and after and no untouched file's verdict can move.

Clause-② is no: prose only, no gate predicate and no scan population changed.


🤖 Generated with Claude Code

Generated by Claude Code


Generated by Claude Code

…ying their counts (objectui#7886)

The `Link Checking (check-links.yml)` section published the same two hand-copied
document counts that objectui#7825 had just removed from that workflow's own
header, in the present tense, on a page the site serves to readers. Both had
drifted, and nothing went red over the whole distance because no gate anywhere
reads either figure.

Applies the remedy this repository has now landed three times (objectui#7448
twice, objectui#7825 once), and that this very page already applies to its own
workflow count: state the population and point at the reading, instead of
copying a count. The paragraph now names which trees, which extensions and the
`apps/site/source.config.ts` declaration the content tree comes from, and points
at two live readings — a `find` in any checkout, and Lychee's own run summary.
The historical half is split out and marked past tense; it carries no live
numeral.

No ci command is added or removed, so the objectui#3653-pinned job table does
not move.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KbJQ1y1J12nZxYzFWhP8Q3
@claude

claude Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor Author

The out-of-scope finding this PR reports under Measured: no pin watches these two sentences is filed as objectui#7901 — no assignee, label finding, left for triage. It is the coverage half of the family (which surfaces the pin reads at all); objectui#7888 is the narrowness half (the numeral and the noun must be adjacent). Separable, and the issue records why doing objectui#7888 first makes the census objectui#7901 needs honest on its first run.

No pin was built here, per the card.


Generated by Claude Code

@os-sam
os-sam marked this pull request as ready for review September 6, 2026 02:19
@os-sam
os-sam added this pull request to the merge queue Sep 6, 2026
Merged via the queue into main with commit 9688ec5 Sep 6, 2026
30 checks passed
@os-sam
os-sam deleted the claude/issue-7886-ci-cd-pipeline-doc-counts branch September 6, 2026 02:34
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.

finding(docs): ci-cd-pipeline.md publishes the same two hand-copied doc counts #7825 just removed from check-links.yml's header

2 participants