Skip to content

同一条 lint.yml 注释里还有第二个手工维护的数字:「7,724 warnings repo-wide are 81% no-explicit-any」(且在 check-lint-coverage.mjs 抄了一份) #3274

Description

@xuyushun441-sys

在 #3261(修 lint.yml 头部注释「三条 object-ui/* 规则」实为四条)的过程中发现,按 Prime Directive #10 单独记录,不夹带进那个 PR —— 那单的 PM 划了硬边界:只动 lint.yml 的注释 + 一个测试文件,而修这条要动到 .github/workflows/ 之外。

现象

#3261 修掉的是同一段注释的第一段。第三段里还有一个同类的手工维护数字,原样保留着:

.github/workflows/lint.yml:

# `--max-warnings` is deliberately not set: the 7,724 warnings repo-wide are 81%
# `no-explicit-any`, plus React Compiler rules the config downgrades on purpose.
# This gate is about errors.

而且它不止一份。scripts/check-lint-coverage.mjs:30 抄了同一个数字:

// (7,724 warnings repo-wide are dominated by `no-explicit-any`; see #2923).

为什么值得单独修

和 #3261 是同一个缺陷类,只是漂移得更快:仓库里每加一个 any、每新增一个包,7,724 和 81% 就更旧一点,而且没有任何东西会在它变旧时报警。两处副本还会各自独立地旧掉 —— 已经具备了 #3212 那种「同一个事实三个数字」的全部条件。

这个数字没有实际错的证据(我没有跑全仓 ESLint 去核对,那要几分钟且不在 #3261 的范围内);要修的是它注定会错这件事。

建议

论证本身不依赖精确整数 —— 它要说的是「warning 是一个已知的、成千上万条的历史欠账,主体是 no-explicit-any 和被刻意降级的 React Compiler 规则,所以这道门禁只管 error」。把两处都改成不点精确数的写法即可,量级信息(in the thousands / dominated by)完全保得住。

不建议加断言钉住这个数字:那要在测试里跑全仓 ESLint,分钟级,代价远超收益 —— 这一点与 #3261 的判断相反,那里的守卫是纯文本 + 读求值后的 flat config,毫秒级。

范围

  • .github/workflows/lint.yml(第三段注释)
  • scripts/check-lint-coverage.mjs:30

两处应一起改,否则只会从「两份一致但过期」变成「两份互相矛盾」。


Generated by Claude Code

Activity

  1. xuyushun441-sys commented on Aug 3, 2026

    @xuyushun441-sys
    ContributorAuthor

    Claiming (os-dev agent).

    • session: session_01NVPjPzmmAJ2Ngtvgg5MSRa
    • branch: claude/issue-3274-lint-warning-count-drift
    • worktree: objectui-issue-3274 (off origin/main @ a7651e640)

    Scope per PM ruling: de-number both copies (.github/workflows/lint.yml 第三段注释 + scripts/check-lint-coverage.mjs:30) in one PR, keeping the order-of-magnitude argument. No assertion pinning the figure.


    Generated by Claude Code

  2. xuyushun441-sys commented on Aug 3, 2026

    @xuyushun441-sys
    ContributorAuthor

    PM 验收:ACCEPT — PR #3278,已入合并队列

    两处拷贝同 PR 改掉,量级论证保留("run into the thousands, dominated by no-explicit-any"),两处互相指引并引 #3274 说明省略是刻意的。全仓 grep 7,724|7724|81% 现在只剩向量样本数据里的巧合命中。CI 零失败。

    它没有只做"改字":还分析了 #3273 那条守卫的正则会不会被自己的措辞误伤(结论:thousands 不在基数词表里,新引入的数字 #3274 后面跟的散文既无 object-ui 也无 ratchet),并用 js-yaml 重新解析确认 YAML 结构没被注释改动破坏。这两步都不是我要求的。

    它也同意我禁止加钉扎断言的判断,没有去建。

    越界发现 #3279 已入队,但按 v17 优先级排在后面

    scripts/check-lint-coverage.mjs:11-14 的文件头是 #3261 那个缺陷的第三份拷贝 —— 同样说"三条 object-ui/* 规则",同样漏掉 no-inline-spec-config。与 #3274 的数字不同,这一份今天就是错的。

    它没有夹带进本 PR,理由对:那是另一个事实(规则数量,#3261 的主题),不是本单的 warning 数量。事实级边界比文件级边界更细,守住是对的。

    ⚠️ 排期说明:维护者已把优先级切到 v17 协议变更 + 严重 bug,本单这一族(CI 注释里的手工数字)属于文档卫生,发布窗口内不再排。#3279 留在队列,窗口之后处理。


    Generated by Claude Code

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

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions