docs(ci): 删掉 ci.yml 任务表里的幽灵 dev-server 行,并给任务表加双向 pin (#3451) - #3456
Merged
Conversation
`content/docs/guide/ci-cd-pipeline.md` 的 ci.yml 一节写「Seven jobs, all
parallel」,表格第七行是 `dev-server`;ci.yml 实际只有 6 个 job。
查史后的真实时间线比 issue 假设的更糟——这一行不只是「YAML 变了、散文没跟上」:
2026-05-24 apps/dev-server 与 dev-server job 同时落地(3fb31a5d)
2026-05-26 apps/dev-server 被移除(f2a03a5f),job 保留;
`--filter @object-ui/dev-server` 自此匹配不到任何包、exit 0
——空转绿 69 天
2026-08-03 #3253(修 #3212)重写这张任务表并「补齐」dev-server 行,
描述的是一个自 5 月起就没构建过任何东西的守卫。
这一行写下来的当天就是假的
2026-08-04 #3325 从 ci.yml 删掉这个空转 job,留下了这一行
2026-08-06 #3451
#3253 给 workflow 清单加了双向断言,却没给 job 表加——表格一天之内就漂了。
本 PR:
- 删掉 `dev-server` 行;「Seven jobs」改为不写死数字(沿用本页 #3212 对
workflow 计数已做过的同一决定),inventory 表的「6 of its 7 jobs」同改为
按 job 名表述。
- 「What is *not* in ci.yml」补记 dev-server 的完整来龙去脉,并写明今天既无
apps/dev-server 也无该 job,其意图由 live-e2e.yml(信息性)承接。
- ci-cd-pipeline-doc.test.ts 加 4 条断言:任务表首列 ↔ ci.yml `jobs:` keys
双向;「Appears as」列对 ci.yml `name:`(`${{ }}` 作通配,因 test 是矩阵
job);本节不得写死 job 数量;以及否认段落的反向 pin。
只改文档与测试,未动任何 workflow YAML(.github/workflows 由 #3448 负责)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
This was referenced Aug 6, 2026
yinlianghui
marked this pull request as ready for review
August 6, 2026 06:45
yinlianghui
pushed a commit
that referenced
this pull request
Aug 6, 2026
#3456 (docs(ci): 删掉 ci.yml 任务表里的幽灵 dev-server 行) 与本分支 (#3448) 都改了 content/docs/guide/ci-cd-pipeline.md,冲突落在 ci.yml 任务表的最后两行。 按并集解: • 取 main 的 #3456 全部改动 —— 删掉 `dev-server` 行、「Seven jobs」改为不写死 数字、清单表 ci.yml 行改为「every job but test-coverage (push only)」、 「What is *not* in ci.yml」补记 dev-server 的完整来龙去脉。 • 叠加本分支 #3448 的四处改动 —— 清单表新增 `docs-links.yml` 行、新增 「Internal Docs Links (docs-links.yml)」章节、任务表 `docs` 行改写为不再跑 链接检查、Link Checking 章节里 #3448 那个「已知缺口」收口(#3449 的保留)。 冲突区实际只有 `docs`/`dev-server` 两行:`docs` 行取本分支的新措辞,`dev-server` 行按 main 删除。ci.yml 与两份测试文件无冲突,自动合并。 验证: • pnpm exec vitest run scripts/ → 10 files / 144 tests 全绿。其中 #3456 新加的 4 条任务表双向 pin 与本分支 docs-links-workflow 的 7 条断言同时对并集文档 通过(任务表首列 = ci.yml 的 6 个 job key,`docs` 的「Appears as」= Build Docs)。 • node scripts/check-doc-links.mjs → "Docs links are valid.",exit 0。 • 两个 workflow YAML 经 yaml.safe_load 解析通过。 • node scripts/check-control-bytes.mjs → OK(3663 个文件);并对本次涉及的 5 个文件单独做了 grep -naP 控制字节自查,无命中。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
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 #3451
查史结论:是被删的,但比 issue 假设的更糟
issue 问「是被删了还是从未落地」。答案是被删了——但查完历史后,这一行的问题不只是「YAML 变了、散文没跟上」,它在写下来的当天就已经是假的。
apps/dev-server落地(895ab27f5),dev-serverjob 同日加入 ci.yml(3fb31a5da,「ci: guard the dev-server fixture build」)apps/dev-server被移除(f2a03a5f8「Remove in-repo dev-server, require external ObjectStack instance」)。job 保留下来,pnpm --filter @object-ui/dev-server build自此匹配不到任何包、静默 exit 0 —— 空转绿 69 天dev-server行。它描述的是一个自 5 月起就没构建过任何东西的守卫 —— 这一行在被写下的当天就是假的值得单独记一笔的是:#3253 正是那个「给 workflow 清单补上反向断言」的 PR。它把 workflow 清单钉成了双向,却没有钉 job 表——于是 job 表在一天之内就漂了。这就是本 PR 补的那个洞。
是否要把这个守卫加回来:不需要,也没有缺口。
apps/dev-server本身已经不在树中,所以「守护 apps/dev-server 的 objectstack.config.ts」今天没有对象可守;#3325 的裁决明确写了其意图由新的live-e2e.ymllane 承接(而且换成了真后端)。因此本 PR 没有任何 CI 成本方面的升级项,纯粹是文档追平现实。改了什么
1.
content/docs/guide/ci-cd-pipeline.mddev-server表格行。test-coverage(push only) runs on PRs」。ci.yml」一节补记dev-server的完整来龙去脉,并明确写出今天既没有apps/dev-server也没有该 job,以及其意图由live-e2e.yml承接。原来那两条(Lint / Build Core)措辞相应补上「never was / never did」以区分——三者中只有 dev-server 是真存在过的。2.
scripts/__tests__/ci-cd-pipeline-doc.test.ts—— 新增 4 条断言(止血的那部分)lists exactly the jobs ci.yml defines — in both directionsjobs:keys,两个方向各自给出可执行的失败信息quotes each job under the name ci.yml gives itname:。${{ ... }}按通配处理,因为test是矩阵 job(Test (shard ${{ matrix.shard }}/4),页面合理地写N),表达式之外必须逐字相符states no job count, so the number cannot drift away from the tableis telling the truth: no CI job builds the retired dev-server fixturejobs:的解析被限定在jobs:映射之内:顶层on:自己就有两空格缩进的子键(push:/pull_request:),全文件扫描会把它们读成 job。这一点连同「为什么jobs:块内除 job key 外没有别的东西能到第 2 列」都写在了代码注释里。另有一条length > 3的自检,防止解析器静默匹配为空而让测试真空变绿——这恰恰是被删的那个 job 自己演示过的失效方式。验证
反向验证(方向先预测,后运行)。 预测:新断言在 origin/main 的文档上红,修完绿。实测三条红(第四条
Appears as在 main 上是绿的,因为dev-server在 ci.yml 里没有对应name:,代码里显式continue把 key 不匹配留给上一条断言报——这是有意设计,不是漏网):修完(仓根全量
scripts/__tests__/):Sabotage 验证(证明每条断言都不是真空绿),改动均已还原:
docs行 → 反方向红:.github/workflows/ci.yml defines jobs with no row in the job table ... - docsBuild & E2E改成Build and E2E→the job table's "Appears as" for `e2e` must match ci.yml's `name: Build & E2E`: expected 'Build and E2E' to match /^Build & E2E$/其它闸门:
node scripts/check-doc-links.mjsDocs links are valid.node scripts/check-control-bytes.mjsOK (scanned 3648 tracked text file(s); skipped 85 binary)grep -naPC0 区间)tsc --noEmit --strict(针对该测试文件)eslint scripts/__tests__/ci-cd-pipeline-doc.test.ts关于 CI: 本 PR 是纯文档 + 测试改动,而
ci.yml把content/**和**/*.md放在paths-ignore里——所以docsjob(以及整个 ci.yml)很可能不会在这个 PR 上运行。这正是 #3448 追踪的那个洞。上面所有结论均以本地实跑为准,特此声明。范围
content/docs/guide/ci-cd-pipeline.md、scripts/__tests__/ci-cd-pipeline-doc.test.ts。.github/workflows/(按裁决,workflow 改动归 check-doc-links 挂在 ci.yml 的 docs job 上,对「纯 docs PR」永远不会触发(paths-ignore 含 content/**) #3448)。pnpm --filter PKG test#3443 / fix(test): 拒绝两种静默假绿的 vitest 调用,并把正确跑法写进 AGENTS.md #3437 / docs(ci): 工作流清单按实际枚举,ci.yml 任务表重写,并补上反向断言 (#3212) #3253)。顺带记录(不在本 PR 范围,也不建议在本 PR 修)
scripts/不在根tsconfig.json的include(只有packages/examples/apps),也不是任何 workspace 包,因此turbo run type-check覆盖不到scripts/__tests__/*.ts——这些测试文件的类型错误在 CI 里没有闸门。本 PR 用直接跑tsc的方式自行补了这一次,但这是个结构性缺口。是否值得单独立 issue,请 PM 定夺(我未擅自开单,因为它更像 #3448 那一类 CI 覆盖面问题,可能应挂在既有条目下)。Generated by Claude Code