fix(scripts): check-single-authz-resolver 的扫描语料补下限断言 —— 根解析成功但零文件不再判绿 (#5916) - #6056
Open
hotlong wants to merge 1 commit into
Open
fix(scripts): check-single-authz-resolver 的扫描语料补下限断言 —— 根解析成功但零文件不再判绿 (#5916)#6056hotlong wants to merge 1 commit into
hotlong wants to merge 1 commit into
Conversation
…#5916) `collectScanFiles` 先 `assertRootsResolvable`(#4930),但 `out` 长度从不断言: 根还在、可读、走完一个 `.ts` 都没收到时,检查 (1) 遍历空集合、零 error, "不存在重复解析器" 就这样从零文件里得出。 照 #4932 给 `check-doc-authoring.mjs` 的 `EmptyRootError` 体例复用形状: 按根统计,任一声明的根产出 0 个文件即抛错并按名报红;下限由本次 walk 现算, 不引入需要维护的高水位棘轮;按根而非按总数,避免一个有货的根替蒸发掉的兄弟根打掩护。 self-test 三向钉死:单根为空(红且只点名该根、并报出另一根仍扫到的总数)、 全空(红且总数 0、且报的是空扫描而非误导性的 "Delegator missing")、恢复(绿)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BDmDsu2575gDxeMCxXhDE3
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
hotlong
marked this pull request as ready for review
August 6, 2026 16:56
hotlong
enabled auto-merge
August 6, 2026 16:56
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #5916
#4932同族的第三个门禁。scripts/check-single-authz-resolver.mjs已经补过 #4930 那一半(每个SCAN_ROOTS先解析,死根按名报错),缺的是另一半:根解析成功、可读,但走完一个文件都没收到。此时collectScanFiles返回空数组,检查 (1) 遍历空集合、零 error,"不存在重复解析器" 这个结论就这样从零文件里得了出来 ——assertRootsResolvable全程满意,目录就在那儿,离开的是语料。前提复核(照 Prime Directive #6,实测而非照抄正文)
在
origin/main@efedd28上对未修改的脚本跑了两个探针:packages/可解析、零个.ts(语料整体迁走)exit 1,但报的是Delegator missing: packages/rest/src/rest-server.ts×2packages/可解析、只剩两个 delegator 是.ts,真实重复解析器写成.mtsexit 0,绿场景 (a) 值得如实记一笔:今天它是红的,但红错了理由 —— 操作者被告知两个文件不见了,而实际事件是重复解析器扫描一个文件都没读。这恰好就是脚本模块头自称的 "luck, not coverage"(两个 DELEGATOR 碰巧在同一根下),而不是正文字面说的"整体绿";正文的核心断言 ——
out长度从不断言、检查 (1) 的结论来自空集合 —— 逐字成立。场景 (b) 则显示同族的静默收窄本身已经能判绿。修法要买的正是"这道门能诚实地告诉你它跑没跑"。修法
照 #4932 落地在
check-doc-authoring.mjs的EmptyRootError复用形状,未重新设计:collectScanFiles按根统计out.length增量,任一声明的根产出 0 个文件即抛EmptyRootError,按名报红,并带上本次总数;main()分出reportEmptyRoots,把"根解析了但没贡献文件"和死根分开报,并指向真正的两种成因(语料搬家 / walk 过滤器不再匹配)。未新增第二个真实
SCAN_ROOTS条目 —— 那是改这道门扫什么,不在本 issue 的申报面内。self-test 三向钉死
SCAN_ROOTS今天只有一个条目,所以"只点名该根"这一向用collectScanFiles(root, roots)已有的参数注入一个两根列表来驱动,不动生产常量:tools/可解析但无.ts⇒roots === ['tools']、不牵连packages,且total等于packages仍扫到的基线数(证明这一轮没有被整体中止,也证明按根下限不是总数下限);roots等于SCAN_ROOTS、total === 0,并断言audit抛的是空扫描而不是那对误导性的Delegator missing;.ts⇒ 回到baseline + 1;整棵树未动时audit仍为 0 error。反向验证(方向在跑之前先定:去掉断言必须红)
把
collectScanFiles还原成 main 的四行写法后跑 self-test,7 条新断言全红,其中最后一条正好钉住旧的误诊:验证
现状实跑绿 —— 新下限对真实语料不误报。
备注
scripts/check-single-authz-resolver.mjs一个文件;scripts/*.mjs不在任何 tsconfig 的 include 内、也没有对应 vitest 套件,该脚本的--self-test模式就是它的测试载体,且 CI 已在跑(pnpm check:authz-resolver同时跑 self-test 和实检),故本 PR 没有独立的pnpm test/pnpm typecheck产出可报。skip-changeset、不提交空 changeset。Generated by Claude Code