Skip to content

check-lint-coverage.mjs 的文件头注释是 #3261 那个「三条 object-ui/* 规则」错数的第三份副本(配置里是四条) #3279

Description

@xuyushun441-sys

在修 #3274(PR #3278,去掉 lint.ymlscripts/check-lint-coverage.mjs 里那个手工维护的 warning 数字)时,在同一个文件里发现的另一处缺陷。按 Prime Directive #10 单独记录,不夹带进那个 PR —— #3274 的 PM 划了明确边界:那单只处理 warning 计数这一个事实,而这条是另一个数字、另一个事实(object-ui/* error 规则的条数),正是 #3261 的主题。

现象

scripts/check-lint-coverage.mjs:11-14(文件头 docblock):

 * The stakes are concrete: `eslint.config.js` sets three `object-ui/*` rules to
 * `error` specifically so a new violation fails CI (ADR-0054 Phase 5, #2879,
 * and the objectql.ts type-discipline ratchet). Those ratchets are worthless in
 * a package that never runs ESLint.

这是 #3261 修掉的那句话的逐字副本:同样手工点数「three」,同样括号里手工列举来源(而且同样短了一个)。#3261 只改了 .github/workflows/lint.yml,这一份原样留着。

它现在就是错的(与 #3274 不同)

#3274 的那个 warning 数字没有证据说它今天是错的,修的是「它注定会错」。这一条不一样 —— 它已经错了,和 #3261 当初错的方式一模一样。eslint.config.js 里设成 errorobject-ui/* 规则有四条:

规则 注释里给的来源 被这句话列到了吗
59 object-ui/no-synthetic-event-trigger ADR-0054 Phase 5 ratchet (C1)
65 object-ui/no-try-catch-around-hook objectui#2879 ratchet
98 object-ui/no-dynamic-import-in-test-hook 测试纪律(scoped 到测试文件) 漏了
111 object-ui/no-inline-spec-config objectql.ts type-discipline ratchet

漏掉的正是 no-dynamic-import-in-test-hook —— 和 #3261 里漏掉的是同一条。

核对方式(四条的 severity 全是 error):

grep -n object-ui/ eslint.config.js

#3273 新增的 scripts/__tests__/lint-workflow.test.ts 会读求值后的 flat config 得到同一个答案,只是它lint.yml,看不到这个文件。

为什么值得单独修

建议

改成 #3261 已经确立、且 lint.ymlci-cd-pipeline.md 都在用的泛化写法:「eslint.config.js 里设成 error 的那些 object-ui/* 规则」—— 永远为真,无需维护;每条规则自己的来源(ADR/issue)就写在 eslint.config.js 里它旁边,那才是唯一诚实的清单。

顺带值得考虑(留给处理这单的人判断,不预设结论):scripts/__tests__/lint-workflow.test.ts 的守卫目前只扫 lint.yml。它的两条断言(不得点数、不得列举规则名)已经把判定逻辑写好了,把扫描面扩到这个文件基本是把路径参数化;这样第四份副本长出来时会被机械挡住,而不是靠下一次偶然发现。成本仍是毫秒级(纯文本 + 一次已有的 flat config 求值),与 #3274 里被否掉的「跑全仓 ESLint 钉住 warning 数」不是一个量级。

范围

  • scripts/check-lint-coverage.mjs(文件头 docblock,第 11-14 行)
  • 可选:scripts/__tests__/lint-workflow.test.ts(把守卫扩到这个文件)

前情

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions