You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Activity
xuyushun441-sys commentedon Aug 3, 2026
认领:PM 循环第 4 轮
会话:
session_01NVPjPzmmAJ2Ngtvgg5MSRa(objectui 分片 PM,账号xuyushun441-sys)分支:
claude/issue-3261-lint-yml-comment-driftWorktree:
objectui-issue-3261裁定:走「不再手工维护那个数字」,而不是把三改成四
本单给了两条路,我定第一条(可否决):注释改成不点数、不逐条枚举的写法。
理由与 #3212 完全同构,而且 #3212 刚刚在同一天证明了这一点 —— 那一页的工作流数量,文档写 11、issue 写 12、实际 13,三个数互不相同。手工维护的枚举必然漂移,而过期的枚举读起来仍然像权威。把三改成四只是把下一次漂移推迟到第五条规则加进来的那天。
content/docs/guide/ci-cd-pipeline.md新加的lint.yml一节已经刻意避开了这个数字(写的是「the ruleseslint.config.jssets toerror」),所以文档侧不会再跟着错 —— YAML 注释应当与它对齐,而不是自己再维护一份。但有一条更值钱的可选项,请先评估
本单自己提了:「如果这份清单确实有价值,就加一条断言把它钉在
eslint.config.js上,让它自己不会漂。」请先花几分钟判断可行性:能不能加一条测试,断言
lint.yml的注释(或某处清单)与eslint.config.js里实际设为error的object-ui/*规则集合一致?两种都可以交,但不要跳过这个评估就直接改注释。
边界
⛔ 只动
.github/workflows/lint.yml的注释(以及可能新增的一个测试文件)。不改任何 workflow 的实际行为,不改eslint.config.js的规则等级 —— 本单是让说明追上现实,不是改现实。注:那四条规则实测为
no-synthetic-event-trigger(:59)、no-try-catch-around-hook(:65)、no-dynamic-import-in-test-hook(:98)、no-inline-spec-config(:111),开工请自行复核行号。Generated by Claude Code
docs(ci): stop lint.yml's header comment hand-counting the object-ui …
xuyushun441-sys commentedon Aug 3, 2026
PM 验收:ACCEPT — PR #3273,已入合并队列
main、Fixes objectstack-ai/objectui#3261.github/workflows/lint.yml注释 + 新增守卫测试我要求的评估做了,而且给的是否定结论加替代方案
我要求先评估"能不能加断言把清单钉在
eslint.config.js上"。它把那个方案真的建出来并 sabotage 测过,然后拒绝了它,理由我完全认同:这是本轮我最想看到的一种回答:先例(#3212 / #3207 / #3257 都加了守卫)不等于这里也该加同款。它没有照着套。
它把守卫指向了注释的断言而不是清单
三条,层次分明:
eslint.config.js确实还有object-ui/*设为error—— 否则注释描述的是一道没有东西可守的门;pull_request上、且没有 paths-ignore 掉.ts/.tsx—— 这条价值最高:它正是 lint never ran on PRs, and turbo skipped 7 packages — threeerrorratchets were inert #2923 之前那个「规则全部空转」的状态,而注释把那段当历史在讲。一旦回到那个状态,注释就从史实变成谎言,而且没有任何其它东西会报红。设计上还有一处对的取舍:加第五条
error规则,测试刻意保持绿(sabotage 案例 F)。加规则不该需要改工作流散文 —— 守卫守的是"不许再手工计数",不是"清单必须同步"。最值得记的一条:sabotage 抓到了它自己守卫里的真 bug
案例 A2 —— 把计数跨注释换行写(也就是 #3261 原文的真实形态:
sets three结尾、下一行以#开头接`object-ui/*` rules)。它第一版正则用[^.\n]连接,跨不过中间那个\n#,于是对着 #3261 本身的原文静默通过。它自己发现了,改成先剥
#前缀、把注释拍平成一行再匹配,然后重验。这正是 sabotage 验证存在的全部理由:一个对着它本该抓住的缺陷原文都能通过的守卫,等于没有。如果只跑"改一行版本"的 sabotage,这个洞会带着一条看起来很扎实的测试一起合进 main。
另外严重性判断也对:严重度是通过 import 已求值的 flat config 得到的,而不是扫文本 —— 因为 severity 有四种写法(
'error'/2/['error', {…}]/[2, {…}])、且这些规则分散在四个files作用域不同的配置对象里。扫文本会给出与 ESLint 不同的答案。changeset:不加,判断正确
一条 CI 注释加一个仓内守卫测试,不改任何已发布包的行为或 API —— 按 AGENTS.md 这甚至不算 shipped code。
越界发现 #3274,已入队
同一条注释的第三段还有第二个手工维护的数字:「the 7,724 warnings repo-wide are 81%
no-explicit-any」,而scripts/check-lint-coverage.mjs:30还独立存了一份同样的数字。同一族缺陷,而且漂得更快(每加一个any它就更旧一点,且没有任何东西会响)。它没有顺手修,理由站得住:修它要碰
.github/workflows围栏之外的文件,而只去掉两份拷贝中的一份,会把"两边都过期但一致"变成"两边互相矛盾" —— 那更糟。而且 #3274 里它明确建议不要给这个数字加钉扎断言(那要在测试里跑全仓 ESLint),只建议两处一起去数字、保留数量级论证。同一天里对同一类问题,一处推荐加守卫、一处推荐不加,并各自给了理由 —— 这个分寸是对的。
Generated by Claude Code
docs(ci): stop hand-maintaining a repo-wide warning count in two plac…
docs(ci): 去掉 check-lint-coverage.mjs 头注里的 object-ui 规则点数,并把守卫扩到该文件 (o…
docs(ci): drop the fourth hand-copy of the object-ui ratchet list, an…