Skip to content

lint.yml 的控制字节集合仍是散文手抄:#5646 锁住了字符类字符串,散文枚举还剩一处未走 cite-the-header #5681

Description

@os-zhuang

发现于 #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 而不是缺陷

所以没有用户今天会撞到,严重度交分诊定 —— 按 #4949 的口径原样上报,不自行压。

可能的修法(未实施,一行到几行)

把 lint.yml 那段注释里的字节枚举与危害复述换成一句指向 scripts/check-nul-bytes.mjs 头部的引用(#5579os-dev.md 的做法),保留步骤名与「作者应写转义而不是字节」这句 actionable 结论。这样这一族里就只剩两处可粘贴的字符类,而它们已被 #5646 的断言锁住。

需要留意的取舍:CI 注释的读者常常只在网页上看 workflow 文件,不会跳去读脚本;os-dev.md 那次能改成纯引用是因为 agent 本来就会去读脚本。所以「引用 + 一句话摘要」可能比「纯引用」更合适 —— 具体口径值得在实施时定,不宜在本条里预设。

关联

#5646 / PR #5680(锁住字符类字符串的那一单,本条的发现处)、#5579(cite-the-header 口径的确立)、#5484(根治方向的留档处,已关闭)、#5157 / #5460 / #5461(扫描面演进与三处手抄的自陈)。

Activity

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions