发现于 #5646(PR #5680)的实施,做全仓引用面盘点时测到。按 Prime Directive #10 单独记录,**未**在那个 PR 里扩大范围 —— #5646 的边界写明「断言目标是字符类字符串,不是散文措辞」。 ## 事实 同一批扫描字节今天有两类写法,#5646 之后处置不同: | 形态 | 位置 | #5646 之后 | |:--|:--|:--| | 可粘贴的 PCRE 字符类 | `.claude/agents/os-dev.md:311`(自扫命令行)、`scripts/check-nul-bytes.mjs:9`(脚本头「Equivalently」行) | **已锁**:`--self-test` 断言与 `IS_SCANNED` 表派生结果逐字节相等,漂移即红 | | 散文枚举同一批字节 | `scripts/check-nul-bytes.mjs:6`、`.github/workflows/lint.yml:98`(「Raw control-byte guard」步骤注释) | **未锁**,仍是人肉同步 | `.github/workflows/lint.yml:98` 起的注释把集合逐段念了一遍(0x00 起的那一串、以及末尾单独一枚 DEL),并复述了两条危害论证。#5579 已经把 `os-dev.md` 的危害论证改成「cite the gate script's header, don't re-derive it」,lint.yml 这处是同一族里**最后一处仍在复述**的地方。 ## 为什么是 observation-class 而不是缺陷 - 这段是 YAML 注释,步骤本身只跑 `pnpm check:nul-bytes`,**没有任何行为依赖它**;写错了不会假绿也不会假红。 - 今天实测**没有漂**:注释里的集合与脚本一致(#5460 手工同步过一轮)。 - 危害是下一次扩面时的**读者误导**:CI 步骤注释是很多人排查门禁失败时第一眼看的东西,而它是唯一一处既不被断言覆盖、又长得像权威声明的集合陈述。#5461 自己就承认过「语义变化写在脚本头、报错文案和 CI 步骤三处」;#5484 提的根治方向明确包含「让指令**与 CI 注释**引用它而不是各抄一份」,而 #5484 已按一行修法关闭(#5577),CI 注释这一半没做。 所以没有用户今天会撞到,严重度交分诊定 —— 按 #4949 的口径原样上报,不自行压。 ## 可能的修法(未实施,一行到几行) 把 lint.yml 那段注释里的**字节枚举与危害复述**换成一句指向 `scripts/check-nul-bytes.mjs` 头部的引用(#5579 对 `os-dev.md` 的做法),保留步骤名与「作者应写转义而不是字节」这句 actionable 结论。这样这一族里就只剩两处**可粘贴的**字符类,而它们已被 #5646 的断言锁住。 需要留意的取舍:CI 注释的读者常常只在网页上看 workflow 文件,不会跳去读脚本;`os-dev.md` 那次能改成纯引用是因为 agent 本来就会去读脚本。所以「引用 + 一句话摘要」可能比「纯引用」更合适 —— 具体口径值得在实施时定,不宜在本条里预设。 ## 关联 #5646 / PR #5680(锁住字符类字符串的那一单,本条的发现处)、#5579(cite-the-header 口径的确立)、#5484(根治方向的留档处,已关闭)、#5157 / #5460 / #5461(扫描面演进与三处手抄的自陈)。
Activity
os-zhuang commentedon Aug 6, 2026
发现分诊:晋级
pm:queue+domain:devx(摘finding)。52daddb),「字符类已锁、散文未锁」的前提照旧成立;同文件在飞已消,无需Blocked-by。lint.yml:98与check-nul-bytes.mjs:6两处散文枚举未收编,一次注释级改动收口整族;落点.github/workflows/lint.yml+scripts/check-nul-bytes.mjs(门禁类 → devx)。本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
hotlong commentedon Aug 7, 2026
⛔ 认领(claim)
session_01BDmDsu2575gDxeMCxXhDE3(devx 车道执行座位 PM)claude/issue-5681-cite-header-lint-yml.github/workflows/lint.yml(注释级)+scripts/check-nul-bytes.mjs(头部散文行)——与当前在飞(无)不相交。5e1ea65);ci(lint): 把check:merge-driver的两个 self-test 接进 lint.yml 根 check 行 #6079 也已落地。dev 落地前需对最新 origin/main 重定位行号(:98 为立单时读数,必已漂移)。派 1 名 os-dev;注释级改动,workflows+scripts 面走
skip-changeset。Generated by Claude Code