43fbfa140b
结论先行:我上一轮说「批 2 模块码单词化漏扫了 4 篇属主文档」——**被证据推翻** - 依据是 check_test_traceability.py 报的 DOC-ONLY 38 处里有 8 处旧模块码 (TC-AI-070/080/090、TC-PH-001/030、TC-TS-001、TC-VL-001),我据此写好了 逐号点名的改名映射表准备落盘 - 改名工具干跑 **0 处命中**:查下去这 8 处**全部在变更记录行**(| 2026-10-10 | … |)里, 写的是**当年**的用例名;按编号规范 §8.1 冻结历史不回改,旧号靠别名解析—— 而 TC-AI-070 → TC-ADCIN-070 这批**早在批 2 就已登记在 id_aliases.json** - 所以照原计划改等于**销毁历史记录、收益为零**。真缺口是判据:追溯器是唯一 没有「变更记录 / [示例] / [计划] 行豁免」的一支(check_ids / rename_ids / doc-links 都有),它把冻结历史当活引用 → 系统性假阳性 改了什么(判据,不改数据) - check_test_traceability.py 加 SKIP_LINE(与另三支脚本同源的豁免正则),两侧采集 都改为逐行判定,被豁免的号收进 frozen_ids 留痕,--verbose 全量列出—— **豁免不等于已对应**,别拿它当收敛 - 顺带把 has_intent() 的判定范围从整文件收窄到**同号所在行**(意图必须写在号旁边, 原先整文件里任何位置有人话就算过关,太松) 实测(关键是"没吞掉真对应") - DOC-ONLY 38 → **29**(−9 全是冻结行假阳性,**不是真变好**);总差异 45 → 36 - **交集 260 → 260 不变**:豁免只吐冻结行,没有让任何一条真实对应消失 - 代码侧 578 个号不变(识别面没缩,这是改名/改判据最容易踩的坑) - 错误级 632 不变(追溯不参与错误级计数);可判定比例 83.02%;--strict 通过 剩 29 处是真问题,但**不是编号问题**(要人裁决,不由门禁决定) - 4 处无模块码形态(TC-1003 / TC-206 / TC-501 / TC-704):② 大批的文档侧镜像 - TC-NET-607 一条是历史指称(原文「原 TC-NET-607/608/609,现 701/702/703」), 一对多写不进一对一的别名表 - TC-NET-302/401/402/501 标题明写「(硬件层)」= 人工台架步骤,代码无载体是预期 - 其余 20 处(TC-NET-101/102/1101/601/606/701~704/801/802/901/902/1006/1501~1503、 TC-GD5F-503)**全库无任何载体**:文档声明了用例而代码/台架/模拟器都没有实现 另一个我自己的错误,记进 §8.3 而不只是提交信息 - 补别名时把 8 个键写到了 JSON **顶层**(真容器是 aliases,515 条)→ 条目完全无效; 是 assert k not in d['aliases'] 拦下的,删掉无效键后 id_aliases.json 字节与 HEAD 一致 - 教训:DOC-ONLY 这类两侧字面比对差异,先判它是不是冻结行/别名可解析,再谈改数据; 改名工具 0 命中与 assert 失败都是**信号**,不是小故障 文档:docs/编号规范.md §8.1 口径修正记录 + §8.3 批 5 行与经过段(含被推翻的判断)+ 变更记录; docs/代码规范/pre-commit使用说明.md §2.25 顺带收编行同步;脚本 docstring 同步 验证:check_doc_links.py --all 143 篇 0 失效;id-check --strict 通过;三个改动文件 BOM=否、CR=0;未改 C/H,不需 @build;台账无需收账(本轮 0 处销账)