Uh oh!
There was an error while loading. Please reload this page.
docs(ci): type-check 作业行补两道 i18n 门禁,并把该表的钉粒度降到步骤级 (#3653) - #3683
Merged
Conversation
`ci-cd-pipeline.md` 的 type-check 行只列了五条命令,漏掉 ci.yml 里真实 存在的 `pnpm check:i18n-keys`(#3530 / PR #3547)与 `pnpm check:i18n-drift` (#3650 / PR #3659)。两步一起补齐,顺序按 ci.yml 实际。 漏项能潜伏至今,是因为 `ci-cd-pipeline-doc.test.ts` 只按作业判定: 作业键双向比对、每个作业的 name 比对,没有一条读「一个作业跑了哪些步骤」。 新增一组按命令判定的断言(双向):ci.yml 每个作业的 run: 步骤里凡是 本仓自己的命令 —— `scripts/*.mjs`、根 package.json 的 script、`turbo run` 任务 —— 都必须出现在该作业那一行,反之该行也不得写出作业没跑的命令。 判定面刻意窄于「每一个步骤」,且这条边界是**推导**出来的而不是手列的: 环境准备(corepack enable / pnpm --version / pnpm install / pnpm exec playwright / pnpm --filter … exec vite build)都不指向本仓拥有的东西, 自动落在面外,不需要豁免名单。留下的空洞(内联 shell 块写的门禁) 写进了测试头注,不当作覆盖面。 ci.yml 本体未改;逆向验证在 fixture 树上做,六条预测全部命中。 无 changeset:纯文档订正 + 测试,不改任何已发布包的行为。 Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt Co-authored-by: Claude <noreply@anthropic.com>
The latest updates on your projects. Learn more about Vercel for GitHub. |
yinlianghui
marked this pull request as ready for review
August 7, 2026 20:48
Uh oh!
There was an error while loading. Please reload this page.
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 freeto 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#3653
content/docs/guide/ci-cd-pipeline.md的type-check作业行只列了五条命令,而ci.yml那个作业实际还跑着pnpm check:i18n-keys(#3530 / PR #3547)与pnpm check:i18n-drift(#3650 / PR #3659)。两笔欠账一起清,并把这张表的钉粒度从作业级降到命令级。⛔ 未碰
.github/workflows/ci.yml本体,也未碰任何门禁脚本。改动只有两文件:该页 +scripts/__tests__/ci-cd-pipeline-doc.test.ts。1. 前提复核:ci.yml 的 run 步骤全集(全量,不止那两步)
行号已漂(正文写的 :69 今天仍是 :69,但 PR #3659 已把
fetch-depth: 0与两个步骤落进该作业),所以按内容锚定重测了每个作业的每一个run:步骤:changeset-checknode scripts/check-changeset-fixed.mjstype-checkcorepack enable→pnpm --version→node scripts/check-type-check-coverage.mjs→pnpm install --frozen-lockfile→pnpm check:spec-symbols→pnpm check:i18n-keys→pnpm check:i18n-drift→pnpm type-check:scripts→pnpm type-check→pnpm type-check:vitest-setuptestcorepack enable→pnpm --version→pnpm install --frozen-lockfile→pnpm test --shard=…/4test-coveragecorepack enable→pnpm --version→pnpm install --frozen-lockfile→pnpm test:coverage --coverage.reporter=…e2ecorepack enable→pnpm --version→pnpm install --frozen-lockfile→pnpm --filter @object-ui/console exec vite build→ 产物校验 shell 块 →echo "version=…"→pnpm exec playwright install --with-deps chromium→pnpm exec playwright install-deps chromium→pnpm test:e2e --project=chromiumdocscorepack enable→pnpm --version→pnpm install --frozen-lockfile→pnpm turbo run build --filter='@object-ui/site'逐行核对结论(处置第 2 条要求的「其余作业行顺带核对」):除
type-check外,五个作业行一条都不漏、一条都不多 —— 漏报只有正文点名的那两条,没有第三处。反方向(文档写了作业没跑的命令)全表为 0。2. 文档改动
type-check行补两步,顺序按 ci.yml 实际(夹在check:spec-symbols与type-check:scripts之间),并写清它们为什么在这个作业里:两者都用typescript解析源码,要 install 不要 build;check:i18n-drift与合并基比对,正是这个作业的 checkout 设fetch-depth: 0的原因。## Core CI Workflow小节增一段,说明这张表的第三列现在也被钉住了、按什么规则钉 —— 与该页既有的「表就是那份清单」写法同源。3. 钉粒度:命令级,双向
测量既有结构后取的最小正确形态:复用同一个 describe 里已有的
ciWorkflow/ciJobKeys/coreCiSection/docJobRows(只给docJobRows加了第三列runs),新增一个嵌套 describe 与两条断言。没有重写测试文件,既有 13 条断言一行未动。判定面刻意窄于「每一个步骤」,而且这条边界是推导出来的、不是手列的白名单:一个步骤算数,当且仅当它点名了本仓拥有的东西 ——
scripts/*.mjs文件、根package.json的一个 script、或一个turbo run任务。环境准备因此自己落在面外,不需要任何豁免条目:corepack enable、pnpm --version、pnpm install --frozen-lockfile、pnpm exec playwright install、pnpm --filter … exec vite build一个都不指向上面三类。这样这一列仍是门禁摘要而不是 YAML 的逐行誊抄 —— e2e 的产物校验与 Playwright 缓存是真步骤,但没有读者需要它们被逐条列出。留下的空洞已写进测试头注,不当作覆盖面:用内联 shell 块写的门禁不点名任何一类,这条钉看不见它。本仓的门禁都落成根 script 或
scripts/*.mjs(两类都在面内),这才是窄规则够用的唯一理由。另一处刻意的实现约束:步骤只从
run:的值里读,绝不扫原始 YAML 块 —— 光是type-check作业的注释里就出现了pnpm type-check、turbo run type-check、pnpm check:i18n-drift三条,扫原文会把注释当成步骤,这条钉就变成在描述它自己的注释。有意不加的一条:两步「存在于 ci.yml」的具名断言。
check-i18n-call-site-keys.test.ts:440与check-i18n-en-drift.test.ts:590已各自钉住自己那一步的存在;在这里再钉一遍就是一个缺陷两处报。本块只钉 YAML 与该页之间的配对,那才是原先没人拥有的部分。头注里写明了这个分工。4. 逆向验证(先写预测,后跑;六条,全部命中)
⛔ 不真改
ci.yml:在 fixture 树上做 —— 把 workflows 目录、package.json、该页、该测试各复制一份到临时目录,测试文件从自身位置推导repoRoot,所以跑的是真测试代码、读的是假树。真ci.yml全程零改动(git diff origin/main -- .github/workflows/ci.yml为空)。Tests 15 passed (15),与真树同数Tests 13 passed (13):文档少报两道真门禁,旧钉一条不红type-check加一步run: pnpm check:control-bytes,文档不动1 failed | 14 passed,- type-check: pnpm check:control-bytese2e作业e2e而非type-check(证明是逐作业而非全文件)- e2e: pnpm check:control-bytespnpm check:i18n-drift,ci.yml 不动- type-check: pnpm check:i18n-driftdocs行删掉turbo run build- docs: turbo run buildtype-check行写进pnpm lint(没有任何 ci.yml 作业跑它)credits no job with a first-party command it does not run→- type-check: pnpm lintRV-3 是这条钉子值不值得的直接证据:同一棵今天的
ci.yml,旧测试 13 条全绿,新测试(未改文档时)正向红并点名两条。5. 测试
check-doc-links是必跑的一条:本 PR 往该页新增了两个 issue 链接与一段散文。6. 无 changeset
纯文档订正 + 一条测试断言,不改任何已发布包的运行时行为,非用户可见特性 —— 与 PR #3656 / #3659 同款判断。未触碰
content/docs/releases/。7. 范围
content/docs/guide/ci-cd-pipeline.md(type-check 行补两步 + 小节增一段)、scripts/__tests__/ci-cd-pipeline-doc.test.ts(docJobRows加第三列 + 新增嵌套 describe 两条断言).github/workflows/ci.yml、任何门禁脚本、该测试文件既有的 13 条断言、content/docs/releases/🤖 Generated with Claude Code
https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
Generated by Claude Code