Skip to content

ci-cd-pipeline.md 的 ci.yml job 表格漂移:写「Seven jobs」并列了一个不存在的 dev-server job(实际 6 个) #3451

Description

@yinlianghui

现象

content/docs/guide/ci-cd-pipeline.md 描述 ci.yml 的那一节写道:

Seven jobs, all parallel — there are no needs: edges between them:

表格里第七行是:

| dev-server | Dev-server fixture build | pnpm --filter @object-ui/dev-server build — guards apps/dev-server's objectstack.config.ts against fixture / @objectstack/spec drift. | Every run |

但 ci.yml 里没有 dev-server 这个 job,实际只有 6 个:

$ python3 -c "import yaml; print(list(yaml.safe_load(open('.github/workflows/ci.yml'))['jobs'].keys()))"
['changeset-check', 'type-check', 'test', 'test-coverage', 'e2e', 'docs']

PR #3450 上跑出来的 checks 也印证了这一点(ci.yml 贡献的是 Changeset Fixed Group Check / Type Check / Test shard 1-4 / Test (coverage) / Build & E2E / Build Docs,没有任何 dev-server 条目)。

为什么值得记

这正是 #3197 / #3212 反复处理过的那类漂移 —— 「散文与 YAML 不同步」。而且方向是更危险的那一种:页面宣称存在一个并不存在的守卫。#3197 的测试注释本身就写过这个判断:

A doc that understates a gate is annoying; a doc that advertises a guardrail the CI does not have is worse than no doc, because people make size decisions believing something will stop them.

按这一页读,贡献者会以为 apps/dev-server 的 objectstack.config.ts 每次 CI 都有 fixture / spec 漂移守卫;实际没有。(是否应该有这个 job 是另一个问题 —— 可能是 job 被删了而文档没跟,也可能是文档先写了而 job 从未落地;需要查一下历史再决定是补文档还是补 job。)

现有测试为什么没拦住

scripts/__tests__/ci-cd-pipeline-doc.test.ts 钉的是:

  • performance-budget.yml 的 MAX_ENTRY_GZIP_KB 与三档 advisory tiers;
  • workflow 文件清单(每个 .github/workflows/*.yml 必须有对应标题,且页面提到的 *.yml 必须真实存在)。

它不校验 ci.yml 的 job 表格。所以 job 数量和 job 名称的漂移是这套 pin 的盲区。

建议

  1. 先查清 dev-server job 是被删了还是从未存在,据此决定「删表格行」还是「补 job」。
  2. 顺手把 Seven jobs 的字面数字改对(或改成不写死数字的表述)。
  3. 可选、也是真正止血的一步:给 ci-cd-pipeline-doc.test.ts 加一条 job 表格的双向 pin —— 从 ci.yml 解析 jobs 的 key,与页面表格首列互相断言。这条如果早存在,本 issue 就不会发生;与该文件已有的「反向 pin」思路一致。

相关

Activity

  1. self-assigned this
    on Aug 6, 2026
  2. yinlianghui commented on Aug 6, 2026

    @yinlianghui
    CollaboratorAuthor

    认领:objectui 分片 PM 并行批第 42 单
    会话:session_01GTRjn8xBqp75dk7kFupVRt
    分支:claude/issue-3451-cicd-doc-job-table
    Worktree:objectui-issue-3451
    文件面:content/docs/guide/ci-cd-pipeline.md、scripts/__tests__/ci-cd-pipeline-doc.test.ts(补 job 表格双向 pin)。先查 git 历史定「删行还是补 job」:若 dev-server job 系被删而文档未跟 → 删表格行改对数字;若文档宣称的守卫从未落地且确有价值 → 不自行补 job,STOP 报 needs_decision(补 job 是 CI 成本决策)。⛔ 不动 .github/workflows(#3448 等 PR3450 落地后另派)。
    与在飞第 37 单(components)、41 单(plugin-list/grid + 语言包)互不相交。


    Generated by Claude Code

  3. yinlianghui commented on Aug 6, 2026

    @yinlianghui
    CollaboratorAuthor

    验收:ACCEPT → PR #3456(并行批第 42 单,会话 session_01GTRjn8xBqp75dk7kFupVRt)。ready + auto-merge 因 GraphQL 配额排队,恢复即执行(docs+test 改动,ci.yml 因 paths-ignore 多半不在本 PR 上跑——即 #3448 追踪的洞,验证以本地为准且完整)。

    复核要点:溯源裁定「removed」且更进一步——该行写下当天即假(时间线:05-24 job 落地→05-26 apps/dev-server 删除、job 靠 --filter 零匹配空转 69 天→08-03 #3253 重写表格时新增此行→08-04 #3325 删 job 留行);「补 job」分支被证据关死(无 config 可守,#3325 已把意图交给 live-e2e lane),无需 CI 成本升级。新 pin 红在 main 的三处恰如预测,双向断言 + jobs 域限定解析 + length>3 自检防空解析假绿;第 3 次 sabotage 是计划外真事件(pin 抓住 dev 自己初稿引用的旧字面)——守卫上岗第一天就干活了。dev 因搜索限流未立的观察(scripts/ 不在 turbo type-check 覆盖内)已由 PM 挂到 #3448 备注,不丢。


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions