chore(引用可核闸建档注册): 08d 入文档域闸序+三处 game/ 纯文字欠账清净

- tools/run_all_gates.sh:文档域闸序加「08d 引用可核」并补头注 --docs 清单(闸清单唯一事实源只写这一处)
- game/tests/.gates/baseline.json:手工加 08d 绿记录一条(13→14,其余条目原样保留),照 8f66ae15 之 08c 与 e8b6751b 之 06b 先例
- game/tests/static_scan.sh:100:S11 词表来源注释订正——「完美排雷」已于 2026-10-21 入退役词对照表,:122 追加行成冗余(sort -u 去重后行为不变,删它属改闸件词表本体,留待代码批,注释已写明)
- game/tests/README.md::58 套件数 26→35(按 _suites() manifest 实数);:81 Config/Data 证据落点 design/qa/ → 跑批回执+reports/;:92 verifier_batch 报告落点 design/qa/ → sim-data/(依 AGENTS 在册口径)
- doc_ref_audit.py:路径解析补「尾段匹配」一档,tests/run_all.gd/views/level_map_screen.gd 这类相对 game/ 工程的简写不再误判为路径不存在(实测纳入 reports/ 的红项 17→12,余下为历史件真实漂移,佐证排除面划法)
- 待办清单:引用可核注册欠账与 README 分级表 design/qa 两条完成即整条删除;game/ 域欠账条目收窄为 :122 冗余行一项,状态处记用户特批标记
零行为改动:无一行 GDScript、无表数值、无场景资源。验证:bash -n 两闸件语法 OK/baseline 合法 JSON/闸壳 --docs 自身退出码 0(含新注册 08d 与建档记录一致)/引用可核 64 件 84 处红项 0/流水线闸 PASS 69 条目。
This commit is contained in:
DKChan committed 2026-10-21 15:53:52 +08:00
1 parent 69e473a984
commit e425ef1be0
6 files changed
+80 -81

No files matched your search

+11 -1
View File
@@ -10,6 +10,8 @@ r"""doc_ref_audit.py — 文档内代码引用可核检查(机检)
扫描面:`design/` 现行文档树 + 四份根文件(`待办清单.md`/`体验验证清单.md`/`roadmap.md`/`AGENTS.md`)。
排除面:`reports/`——中间文档唯一暂存地(doc-conventions 第 11 节;`design/research/` 已于 2026-10-21 退役),
入内文件按「吸收即死」退役,历史件不回溯改,故不入本闸判据。
(2026-10-21 实测:把 reports/ 纳进来出 17 条红项/538 处引用,多为历史件里的行号漂移与当时合法的旧路径写法——
要收紧到「现行件才受指针核对」得先立分界,暂不扩。)
自检二道(防假绿):扫描文件数为零 ⇒ FAIL;抽取到的引用数为零 ⇒ FAIL。
(正则被改写失手或路径写错时,检查会静默空转并报绿——与 static_scan 各段同规。)
@@ -85,7 +87,9 @@ def collect_docs(explicit):
def resolve(name, doc_rel, index, bybase):
"""返回 (命中路径列表, 解析方式)。方式=exact / ambiguous / none。"""
"""返回 (命中路径列表, 解析方式)。方式=exact / ambiguous / none。
依序试:文档同目录相对路径 → 仓库根路径 → 按「尾段匹配」全库找(`tests/run_all.gd`
这类相对 game/ 工程的简写靠这一步命中,否则会被误判成路径不存在)。"""
name = name.strip("./")
if "/" in name:
for cand in (
@@ -94,6 +98,12 @@ def resolve(name, doc_rel, index, bybase):
):
if cand in index:
return [cand], "exact"
suffix = "/" + name
hits = sorted(p for p in index if p.endswith(suffix))
if len(hits) == 1:
return hits, "exact"
if len(hits) > 1:
return hits, "ambiguous"
return [], "none"
cands = sorted(bybase.get(name, []))
if not cands: