Skip to content

check-doc-snippet-types 的扫描面不含 skills/ —— agent 复制进用户仓的代码样例,没有任何 typechecker 编译过 #5465

Description

@os-support-ai

越界发现,记录于 #5081(i18n 指南的 label 规则重写)实施期间。只记录,不在那个 PR 内动手。

⚠️立卡前的查重搜索被 API 限流挡下(search_issues / list_issues 对本身份返回 API rate limit already exceeded,重试两次)。分诊时请用这些关键词去重:check-doc-snippet-typessnippet 扫描面skills 未编译DOCS_ROOT。若已有同形卡,直接关掉本卡。

事实(对 origin/main @ 77f846a8b 实测)

scripts/check-doc-snippet-types.mjs 自己的头部注释把扫描面写得很清楚(:166-171):

every .mdx and .md page under content/docs, plus every packages/(name)/README.md.

skills/ 不在其中。所以 skills/objectui/guides/*.md 里的每一个 ts / tsx 代码块,没有任何 typechecker 编译过 —— 本地没有,CI 也没有。

为什么这不是「少覆盖一个目录」

同一份注释解释了这个门禁存在的理由:一个页面从落地那天就被编译,opt-out 是 reviewer 看得见的一次编辑。而 skills/ 的受害面比 content/docs 更重,理由与 #4981doc-version-claims 扫描面扩到 skills/ 时写下的完全一样,那条推理在这份台账的头部(scripts/__tests__/doc-version-claims.test.ts:190-200)逐字写着:

A fossil in content/docs costs one human a failed build; a fossil in a scaffolding guide is COPIED, into a new user repository, every time an agent follows it.

版本字面量已经因为这条推理被扩面看住了;代码样例还没有。一个类型上错误的 skills 样例,会被 agent 原样复制进用户仓,在那边才第一次报错。

同一族的另一半也值得一起判:check-doc-snippet-types.mjsUNGATED_DOCS 是一份「只能缩小」的债务清单(条目每轮重新推导,指向不存在的文件或不含 ts 块的条目会红)。把 skills/ 纳入扫描面,天然会给这份清单添一批条目 —— 那正是这个机制设计好要承接的形状,不是反对理由。

已实测的成本(#5081 那一轮)

那张卡在 skills/objectui/guides/i18n.md 新增了一个 ```typescript 块(inline locale map 形态的 label 样例)。它在合并前不会被任何机器检查;那一轮改为手工对 @objectstack/spec@17.0.0 的 schema 与 objectui 的两个 render 站点逐一核对(`containers.tsx:739` 的 `schema.title`、`elements.tsx:230` 的 `props.label`)。手工核对能做对一次,不能做对每一次。

附带记录:本地跑这个门禁会静默变成 no-op

pnpm check:doc-snippets 在未 build 的 worktree 里打印 The snippet program was NOT run: the packages it resolves against are not built,然后 exit 0。读上去像通过。这一条不必然是缺陷(CI 会先 build),但它意味着任何在本地把这个门禁读成绿的人,拿到的是零信息 —— 值得在分诊时一并判要不要让这种情形非零退出。

处置

未指派。范围与方向(扩面 vs 保持现状)是 PM/维护者的判断,不是本卡作者的。

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopm:queuetooling

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions