在 #5916(PR #6056)补扫描语料下限断言时顺带量到的残余,与该 PR 的修法正交,不在其申报面内,故单独记录。
观察
scripts/check-single-authz-resolver.mjs 的 walk() 收集条件是:
else if (e.endsWith('.ts') && !e.endsWith('.test.ts') && !e.endsWith('.d.ts')) out.push(p);
'x.mts'.endsWith('.ts') 为 false(ts 前一个字符是 m 而非 .),.cts 同理。所以声明的扫描根 packages/ 下的 .mts / .cts 一个都不进语料 —— 检查 (1)「不存在重复的请求上下文解析器」这个结论,是在不包含它们的集合上得出的。
origin/main@efedd28 实测:
packages/ 下 .mts/.cts: 12
packages/ 下 .ts: 3053
12 个文件全部在 packages/spec/scripts/ 下(check-strictness-ledger.mts、liveness/*.mts 等构建/存活性脚本)。
今天是休眠的,不是漏判
逐个查过这 12 个文件,没有任何一个同时引用 sys_user_role 与 sys_user_permission_set,即没有一个会触发该门禁的启发式。所以今天没有真实漏判,用户也碰不到 —— 按 observation 归档,不带 pm:queue,请分诊裁定。
风险是形状上的:若日后有请求上下文解析逻辑落到 .mts/.cts(或仓库整体迁移扩展名),这道门会在看不见它的情况下继续印绿,正是 #4930 / #5916 这一族反复关的那种"门跑了但没读到"。
与 #5916 的关系(为什么不是同一件事)
可能的修法(供分诊参考,未实现)
- 把过滤器放宽到
/\.(m|c)?ts$/ 并保持 .d.ts / .test.ts 排除 —— 语料变大,需确认那 12 个脚本不会误触发启发式(实测不会);
- 或明确记录"只扫
.ts 是有意的",把理由写进模块头,让下一个读者不必重新推导。
按 1 更贴近"声明即执行":门禁声称读遍 packages/,那就该真的读遍。
相关:#5916(按根下限,已由 PR #6056 落地)、#4930 / #4916(死根按名报错)、#4932(同族先例)、#4690(「提取失败必须红」出处)。
在 #5916(PR #6056)补扫描语料下限断言时顺带量到的残余,与该 PR 的修法正交,不在其申报面内,故单独记录。
观察
scripts/check-single-authz-resolver.mjs的walk()收集条件是:'x.mts'.endsWith('.ts')为 false(ts前一个字符是m而非.),.cts同理。所以声明的扫描根packages/下的.mts/.cts一个都不进语料 —— 检查 (1)「不存在重复的请求上下文解析器」这个结论,是在不包含它们的集合上得出的。origin/main@efedd28实测:12 个文件全部在
packages/spec/scripts/下(check-strictness-ledger.mts、liveness/*.mts等构建/存活性脚本)。今天是休眠的,不是漏判
逐个查过这 12 个文件,没有任何一个同时引用
sys_user_role与sys_user_permission_set,即没有一个会触发该门禁的启发式。所以今天没有真实漏判,用户也碰不到 —— 按 observation 归档,不带pm:queue,请分诊裁定。风险是形状上的:若日后有请求上下文解析逻辑落到
.mts/.cts(或仓库整体迁移扩展名),这道门会在看不见它的情况下继续印绿,正是 #4930 / #5916 这一族反复关的那种"门跑了但没读到"。与 #5916 的关系(为什么不是同一件事)
SCAN_ROOTS条目至少产出 1 个文件。本条它结构上看不见 ——packages/产出 3053 个.ts,远在下限之上,而那 12 个文件照样不在语料里。packages/,实际只扫了它的一个扩展名子集。可能的修法(供分诊参考,未实现)
/\.(m|c)?ts$/并保持.d.ts/.test.ts排除 —— 语料变大,需确认那 12 个脚本不会误触发启发式(实测不会);.ts是有意的",把理由写进模块头,让下一个读者不必重新推导。按 1 更贴近"声明即执行":门禁声称读遍
packages/,那就该真的读遍。相关:#5916(按根下限,已由 PR #6056 落地)、#4930 / #4916(死根按名报错)、#4932(同族先例)、#4690(「提取失败必须红」出处)。