Skip to content

finding(docs): every ci-cd-pipeline.md workflow section except ci.yml and lint.yml is unpinned against what its job runs — vi-mock-specifiers.yml omits a blocking gate, shadcn-check.yml omits all three of its commands #8420

Description

@baozhoutao

Found while implementing #8015, which fixed exactly this class in the ## Lint (lint.yml) section
and generalised scripts/__tests__/ci-cd-pipeline-doc.test.ts's command-parity rule to module scope
so a second section costs three lines to pin. Filing rather than fixing: this needs per-section
judgement, not a sweep — see the false-positive note at the bottom.

The class

content/docs/guide/ci-cd-pipeline.md gives every workflow its own section. Only two of those
sections are now held to what their jobs actually RUN:

Every other section is held only by the workflow-INVENTORY pin, which requires a heading naming the
.yml file and asserts nothing about the heading's contents. So each of those sections can name a
gate its job does not run, or omit one it does, indefinitely and greenly — the #3653 shape, one
section over.

Two instances, verified by hand on 4b4d35a7d

1. ## Inert vi.mock Specifiers (vi-mock-specifiers.yml) says, in full:

Runs scripts/check-vi-mock-specifiers.mjs.

The workflow runs two gates:

.github/workflows/vi-mock-specifiers.yml:96:        run: node scripts/check-vi-mock-specifiers.mjs
.github/workflows/vi-mock-specifiers.yml:116:       run: node scripts/check-vi-mock-inherit.mjs

check-vi-mock-inherit.mjs is a blocking gate that the page does not mention. It was widened three
commits ago by #8414 (4b5e07a53), which is the same drift rate #8015 records.

2. ### Shadcn Component Check (shadcn-check.yml) describes the job in three prose bullets
("Runs offline and online analysis of shadcn/ui components") and names none of the three
first-party commands the job runs: pnpm shadcn:analyze, pnpm shadcn:check and
scripts/shadcn-check-report.mjs.

Reproduce

The rule now lives at module scope in scripts/__tests__/ci-cd-pipeline-doc.test.ts
(commandParity(workflowFile, jobKey, documentationText) plus undocumentedCommands /
phantomCommands), so an instance is one call. For the first one:

commandParity('vi-mock-specifiers.yml', 'check', viMockSection())

Why this is not a sweep — read before writing the fix

A naive extension that pairs every ## Heading (some.yml) section against every job in that
workflow flags 24 of the 34 sections on the page. Most of those are NOT defects:

  • a section legitimately names a neighbouring gate for contrast (check-links.yml's section names
    scripts/check-doc-links.mjs, which docs-links.yml runs — the page says so);
  • pre-install-import-graph.yml's section names scripts/some-gate.mjs, an illustrative
    placeholder in a code block;
  • several sections name the pnpm check:* ALIAS while the workflow invokes node scripts/…
    directly, which is a real and deliberate distinction the workflows document (pre-install
    placement), not a phantom gate.

ci.yml's table and lint.yml's section each needed a decision about what their documentation
surface IS before the rule could be pointed at it. A gate that cries wolf gets switched off rather
than fixed — this repository's own words, in check-unreferenced-sources. So the fix is
section-by-section with the alias question settled first, not one loop over the page.

Scope note: not a rider on #8015's PR — that card's acceptance is the lint.yml section, and
this document is under concurrent edit (#8006, #8417 and #8015 all landed or are open on it today).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ci/cddocumentationImprovements or additions to documentationdomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repofindingpm:queuepriority:p3tooling

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions