Files
STM32F4-Base/scripts/id_registry.json
T
wandering1 52976bdec3 refactor(编号): 批 4 陷阱号统一为 TRAP-<模块码>-<nn>
本批是 ② 形态迁移清的第一族(用户裁定顺序:② 里的 Trap 一族先做)

统一了什么(数字不变、只补模块码,§7.1)——改名工具 23 处 / 11 文件
- Trap 01~07 → TRAP-GD5F-01~07:属主文档 7 个标题行从此成为定义位
- 陷阱 1 → TRAP-RTC-01(SD2506 属 RTC 域,§4.2)、见陷阱 01 → TRAP-GD5F-01
- Trap 21 / Trap 19 → TRAP-NET-21 / TRAP-NET-19(引用的是活登记处
  CH395F_Trap_Records.md,号本身不变)
- 波及 Drivers/BSP/GD5F2GQ5UE/*(4 处注释)与 test/board/*(2 处)→ 已重编

三处判读后**刻意不改**(写进 §8.3,不让人当成漏网)
- docs/环境与部署/并行任务工作树方案.md 的 wip/trap22-fix 是 git 分支名,不是编号;
  这类非编号字面量要靠类型处理,与位号 T1、IEEE 负序 S2、gitlint 规则 ID 同一批
- docs/UI设计/菜单页面设计.md 变更记录行的「陷阱 3」按 §8.1 冻结不改写
- docs/硬件平台/V0.0、V0.1 网表报告里 6 处 Trap05 语义确指 TRAP-NET-05,但该目录
  是门禁与改名工具共同的排除语料 → 不越界动笔,盲区登记进注册表 TRAP 族 cursor_note

两处不是改名、是改错话(映射表类工具的典型失效:字面对了、意思错了)
- scripts/README.md 原写「Trap 19 从未存在」;改名后字面变成 TRAP-NET-19,而它是
  **真实条目**(SET_MAC 必须在 INIT_CH395 之前)→ 那句话成了假话,改用站得住的例子
- docs/编号规范.md 同一处事故叙述补准确说法:当年裸形不在册 ≠ 这个坑不存在
- 菜单页面设计.md 的「见 §8.2 陷阱 1」本就不是 TRAP-* 族的号(指本文小节第 1 条),
  改写成「见本文 §8.2 第 1 条(lv_text_get_width 的 length=0 陷阱)」

关闸第一次真拦人:咬的是自己家的审计表
- scripts/rename_maps/batch3-trap.json 里必然写着 Trap 21 / 陷阱 1 等旧形态,
  被当成 6 类「台账外新账」→ 提交被拦(拦得对,但表不是语料)
- 第 4 次同一类自循环(前三次:别名表、注册表、债务台账)→ 整个 rename_maps/
  目录入 excluded_paths;这条规律写进 §8.4:**登记号的表一律不得当引用语料**

实测变化
- 错误级 659 → 632(−27);② 空格/中文形 Trap 残余 2 处(都是上面刻意保留的)
- ③ 悬空错误 44 → 42:TRAP-GD5F-01/05/06 三处历史悬空引用自动落地为已定义
- 编号字面量 8277 → 8312(识别面没有缩水,这是改名最容易踩的坑);
  可判定比例 82.92% → 82.99%(基线 82.6%);⑦ 定义无引用 100 → 103(如 TRAP-GD5F-02
  只有定义位无人引用,如实挂 warn 不压掉)
- 台账 --prune-backlog 收掉已还清 42 条,剩 298 条(只减不增);--strict 通过

另修:core.autocrlf=true 把 SD2506_Trap_Records.md 检出成 CRLF(41 处)→ 还原 LF,
该文件 diff 只剩 1 行实质改动(仓库权威行尾是 LF,见 .gitattributes)

验证(全绿)
- @build:0 错误 0 警告(Program Size Code=213356 RO=18580 RW=1184 ZI=131480)
- ci_local.py:L0 + L0.5 全过(16 runner / 1104 断言)
- check_doc_links.py --all:143 篇文档 0 失效、0 待确认
- 改动文件字节卫生逐项与 HEAD 对比:BOM / CR / U+FFFD 异常 0

审计轨迹与文档
- 映射表 scripts/rename_maps/batch3-trap.json(含作用域切分理由与刻意不改清单)
- 别名 11 条全部带 scope;docs/编号规范.md §7.1 行状态、§8.3 批 4 行 + 说明段、
  §8.4 自循环第 4 条、变更记录
2026-10-21 12:32:13 +08:00

1617 lines
56 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"schema": 1,
"generated_from": "docs/编号规范.md §4 编号空间总表(§4.1 在册 / §4.2 目标 / §4.3 冻结 / §4.4 划界)+ §6 模块码表 + §7 迁移映射。游标取「规范记载值」与「全库实测最大号」的较大者,实测偏差一律写进 cursor_note,不凭印象编。",
"decidable_ratio_baseline": 82.6,
"spec_docs": [
"docs/编号规范.md"
],
"bare_check_letters": [
"S",
"T",
"N",
"W",
"E",
"M",
"B",
"C",
"D",
"U",
"A",
"O",
"G",
"V",
"R",
"P"
],
"bare_forbidden": {
"S": "登记簿 S-x(§4.1,§7.1 并入 N 族):连字符形才是规范形态",
"T": "登记簿 T-x(§4.1,§7.1 并入 N 族):连字符形才是规范形态",
"N": "登记簿 N-x(§4.1 在册保留):连字符形才是规范形态"
},
"excluded_paths": [
"Lib/",
"Middlewares/",
"Drivers/CMSIS/",
"Drivers/STM32F4xx_HAL_Driver/",
"docs/芯片手册/",
"docs/硬件平台/",
"docs/内存管理/data/",
"docs/images/",
"MDK-ARM/RTE/",
"simulator/SDL2/",
"simulator/build/",
"simulator/tests/ref/",
".venv/",
".git/",
"__pycache__/",
".workbuddy-ai/",
".vscode/",
".gitignore",
".gitattributes",
".editorconfig",
"requirements.txt",
"ci-artifacts/",
"test/board/third_party/",
"scripts/id_registry.json",
"scripts/id_aliases.json",
"scripts/check_ids.py",
".dsh/skills/*/scripts/state/",
".dsh/n31_neg_inject_gen217.log",
".dsh/n31_neg_inject_gen221_form5.log",
"scripts/id_known_backlog.json",
"scripts/rename_maps/"
],
"excluded_suffixes": [
".svg",
".png",
".jpg",
".jpeg",
".gif",
".bin",
".map",
".htm",
".html",
".tsv",
".log",
".o",
".axf",
".hex",
".ico",
".ttf",
".woff",
".pyc",
".sct",
".lin",
".s",
".bat",
".ps1"
],
"noise_literals": [
"^UTF-[0-9]+$",
"^RS-[0-9]+$",
"^SHA-[0-9]+$",
"^MD5-[0-9]+$",
"^AES-[0-9]+$",
"^CRC-[0-9]+$",
"^SOIC-[0-9A-Z]+$",
"^SOP-[0-9A-Z]+$",
"^TSSOP-[0-9A-Z]+$",
"^MSOP-[0-9A-Z]+$",
"^QFN-[0-9A-Z]+$",
"^LQFP-[0-9A-Z]+$",
"^TQFP-[0-9A-Z]+$",
"^SOT-[0-9A-Z]+$",
"^WSON-[0-9A-Z]+$",
"^DIP-[0-9A-Z]+$",
"^SMD-[0-9A-Z]+$",
"^MAX-[0-9]+$",
"^MIN-[0-9]+$",
"^LEN-[0-9]+$",
"^SIZE-[0-9]+$",
"^DMA-[0-9]+$",
"^IRQ-[0-9]+$",
"^GPIO-[0-9]+$",
"^USART-[0-9]+$",
"^UART-[0-9]+$",
"^SPI-[0-9]+$",
"^I2C-[0-9]+$",
"^CAN-[0-9]+$",
"^DBG-[0-9]+$",
"^ERR-[0-9]+$",
"^TCP-[0-9]+$",
"^UDP-[0-9]+$",
"^IP-[0-9]+$",
"^PC-[0-9]+$",
"^ST-[0-9]+$",
"^ADC-[0-9]+$",
"^PWM-[0-9]+$",
"^DAC-[0-9]+$",
"^R[0-9]+-[0-9]+$",
"^L[0-9]{1,4}-[0-9]{1,4}$",
"^SDL[0-9]-[0-9]",
"^XH-[0-9A-Z]+$",
"^Y[0-9]-[0-9]+$",
"^A-Z0-9$",
"^X-[0-9]+$",
"^V[0-9A-Z]{2,}-[0-9]+$"
],
"malformed": [
{
"name": "空格形 Trap",
"pattern": "\\b[Tt][Rr][Aa][Pp] ?[0-9]{1,2}\\b",
"severity": "error",
"why": "空格形陷阱编号(§2 P-4 禁止),须写 TRAP-<MOD>-<nn>(§4.2 / §7.1)"
},
{
"name": "中文形 陷阱",
"pattern": "陷阱 ?[0-9]{1,2}",
"severity": "error",
"why": "中文形陷阱编号(§2 P-4 禁止),须写 TRAP-<MOD>-<nn>(§4.2 / §7.1)"
},
{
"name": "小写 gen 代次",
"pattern": "\\bgen[ -]?[0-9]{2,3}\\b",
"severity": "error",
"why": "台架代次字面不统一(§7.1),须写 GEN-<nnn>(§4.2)"
},
{
"name": "小写 round 轮次",
"pattern": "\\bround ?[0-9]{1,2}\\b",
"severity": "error",
"docs_only": true,
"why": "台架轮次字面(§7.1),须写 RUN-<yyyymmdd>-<n>(§4.2);代码里的 round 变量名不受检"
},
{
"name": "会话临时号 Task #N",
"pattern": "\\bTask ?#[0-9]+\\b",
"severity": "error",
"why": "会话临时号禁止入册(§4.3),改写为可解析引用或就地展开成事实描述(§7.2)"
}
],
"blind_spots": [
"裸形同字母多义(§1.2:P1 五义 / L1 四义 / U1 四义 / D7 三义 / O4 四义):裸形只在**属主登记处文档内**判悬空与游标,文档外降为告警——机械全库判定必然一边倒误报,收口属 §9 阶段 1-② 的 L0~L3→T0~T3 与 WI 迁移批次。",
"圈号编号(①②③…):与正常列举无法机械区分,不入判定;§7.1 的 RC-01~05 迁移批次落地后再收。",
"TC 用例的「文档侧/代码侧」双向一一对应由 check_test_traceability.py 判(本门禁只判形态与定义存在性),两脚本同挂 id-check 钩子。"
],
"families": [
{
"name": "FR",
"class": "FR",
"title": "功能需求(§4.1 在册保留)",
"pattern": "\\bFR-[A-Z0-9]{1,6}-[0-9]{1,2}\\b",
"owner_docs": [
"docs/产品需求/产品需求设计文档.md"
],
"scope": "global",
"frozen": false,
"cursor": null,
"check_dangling": false,
"cursor_note": "各域独立递增(§4.1);实测现存 FR-<域>-1..5(未补零),规范 §4.1 写的是 \\d{2} 与现状不符 → 按现状收录,补零属 §9 阶段 1 未落地项",
"dangling_note": "需求正文以散文描述、未逐条建定义行 → 悬空校验待 §4.1 需求表补号后启用"
},
{
"name": "NFR",
"class": "NFR",
"title": "非功能需求(§4.1 新建,现 §7 全是散文无号)",
"pattern": "\\bNFR-[A-Z0-9]{1,6}-[0-9]{1,2}\\b",
"owner_docs": [
"docs/产品需求/产品需求设计文档.md"
],
"scope": "global",
"frozen": false,
"cursor": null,
"cursor_note": "从 NFR-<域>-01 起(§4.1)",
"check_dangling": false
},
{
"name": "N",
"class": "N",
"title": "登记簿条目(§4.1 在册保留;S-x/T-x 按 §7.1 并入本族)",
"pattern": "\\bN-[0-9]{1,3}[a-z]?\\b",
"owner_docs": [
"docs/任务规划/登记簿.md",
"docs/任务规划/README.md"
],
"scope": "global",
"frozen": false,
"cursor": "N-34",
"check_dangling": true,
"cursor_note": "规范 §4.1 记游标 N-34;实测登记簿现存至 N-30(N-31 曾于 2026-10-14 被复用撞号,见 docs/任务规划/README.md §0)→ 新条目一律改语义标识(P-8),实需编号才取 N-34",
"adjacent_cues": [
"登记簿"
]
},
{
"name": "S-LDG",
"class": "N",
"title": "登记簿 存储/日志管线 条目(§7.1 续号并入 N,存量冻结)",
"pattern": "\\bS-[0-9]{1,2}\\b",
"owner_docs": [
"docs/任务规划/登记簿.md",
"docs/任务规划/README.md"
],
"scope": "global",
"frozen": true,
"cursor": "S-5",
"check_dangling": true,
"cursor_note": "现存 S-3/S-4/S-5;§7.1 之后不再新增 S 号",
"adjacent_cues": [
"登记簿"
]
},
{
"name": "T-LDG",
"class": "N",
"title": "登记簿 测试与工具链 条目(§7.1 续号并入 N,存量冻结)",
"pattern": "\\bT-[0-9]{1,2}\\b",
"owner_docs": [
"docs/任务规划/登记簿.md",
"docs/任务规划/测试与架构专项.md",
"docs/任务规划/README.md"
],
"scope": "global",
"frozen": true,
"cursor": "T-7",
"check_dangling": true,
"cursor_note": "现存 T-7(复审 T-1~T-5 见 docs/任务规划/测试与架构专项.md 卷首)",
"adjacent_cues": [
"登记簿",
"专项"
]
},
{
"name": "E-AUD",
"class": "E-AUD",
"title": "错误码传播审计发现(§4.1 / §4.3 冻结于 E-63)",
"pattern": "\\bE-[0-9]{1,2}\\b",
"owner_docs": [],
"owner_note": "属主文档 docs/问题记录/错误码传播审计.md 已于 2026-10-15 删除 → 无法判定义存在与否,属主登记处不存在 = 不可判定",
"scope": "global",
"frozen": true,
"cursor": "E-63",
"check_dangling": false,
"cursor_note": "禁止新增(§4.3);新发现一律语义标识(§3.3)",
"dangling_note": "§4.3「引用照旧」:门禁只拦游标之外的新号"
},
{
"name": "E-EXP",
"class": "E-EXP",
"title": "网络自愈台架实验编号(§4.1 已封闭,无连字符)",
"pattern": "\\bE[0-9]{1,2}\\b",
"owner_docs": [
"docs/网络/网络自愈架构设计.md"
],
"scope": "global",
"frozen": true,
"cursor": "E19",
"cursor_owner_only": true,
"check_dangling": true,
"dangling_outside_owner": "warn",
"cursor_note": "规范 §4.1 记「已封闭 E0~E15」,实测 网络自愈架构设计.md §5.2 实验表已到 E19 → 游标按实测 E19 收录,封闭线待规范修订",
"adjacent_cues": [
"自愈",
"实验"
]
},
{
"name": "I-ORPHAN",
"class": "I",
"title": "孤儿编号 I-1/I-2(§7.2:属主已并入 网络自愈架构设计.md §9.3)",
"pattern": "\\bI-[12]\\b",
"owner_docs": [
"docs/网络/网络自愈架构设计.md"
],
"scope": "global",
"frozen": true,
"cursor": null,
"check_dangling": false,
"malformed": "§7.2 孤儿编号:原属主《网络Socket监听生命周期设计说明》已并入 docs/网络/网络自愈架构设计.md §9.3,不再补编号定义行 → 就地展开成事实描述",
"note": "登记为族是为了让校验 1 不重复报它(它已由 §7.2 定性),同时保留形态整改提示"
},
{
"name": "WI",
"class": "WI",
"title": "工作项 / 任务卡(§4.2 规划类 → 语义标识;本族是迁入目标)",
"pattern": "\\bWI-[0-9]{1,3}\\b",
"owner_docs": [],
"owner_note": "§3.3 / P-8:规划类新条目改语义标识 → 属主登记处 = docs/任务规划/ 各文件的语义短语,不建号表",
"scope": "global",
"frozen": true,
"cursor": null,
"check_dangling": false,
"dangling_note": "登记为族只为让规范里出现的 WI-001 等迁入目标形态可判定,并拒绝「新增 WI 号」的误用"
},
{
"name": "DR",
"class": "DR",
"title": "决策记录(§4.2 规划类 → 语义标识;§7.1 D1~D10 → DR-001~010)",
"pattern": "\\bDR-[0-9]{1,3}\\b",
"owner_docs": [],
"owner_note": "[计划] docs/架构设计/决策记录登记簿.md 未创建,且 P-8 已把决策类改判语义标识",
"scope": "global",
"frozen": true,
"cursor": null,
"check_dangling": false
},
{
"name": "OQ",
"class": "OQ",
"title": "待确认 / 开放问题(§4.2 规划类 → 语义标识)",
"pattern": "\\bOQ-[0-9]{1,3}\\b",
"owner_docs": [
"docs/任务规划/基线与待确认.md"
],
"scope": "global",
"frozen": true,
"cursor": null,
"check_dangling": false
},
{
"name": "MS-TGT",
"class": "M",
"title": "里程碑目标形态 MS-<nn>(§4.2;存量 M1~M3)",
"pattern": "\\bMS-[0-9]{1,2}\\b",
"owner_docs": [
"docs/任务规划/W1-采集保护收尾.md"
],
"scope": "global",
"frozen": false,
"cursor": null,
"check_dangling": true,
"dangling_note": "§4.2 游标 MS-01;M1~M3 迁 MS-01~03 属 §7.1 未落地批次"
},
{
"name": "TRAP-NOMOD",
"class": "TRAP",
"title": "陷阱记录(无模块码形态,§7.1 待补模块码)",
"pattern": "\\bTRAP-[0-9]{2}\\b",
"owner_docs_glob": [
"docs/问题记录/*_Trap_Records.md"
],
"scope": "global",
"frozen": true,
"cursor": null,
"check_dangling": false,
"malformed": "缺模块码:须写 TRAP-<MOD>-<nn>(§4.2 / §6;§7.1「数字不变,补模块码」)"
},
{
"name": "TC",
"class": "TC",
"title": "测试用例(§4.1 在册保留,机器解析族)",
"pattern": "\\bTC-[A-Z][A-Z0-9]{0,9}-[0-9]{2,4}[a-z]?\\b",
"owner_docs_glob": [
"docs/测试说明/*_Test_Guide.md",
"docs/测试说明/*单元测试说明.md",
"docs/测试说明/实机测试实施指南.md",
"docs/测试说明/链路延迟测试说明.md",
"docs/测试说明/自动化测试流程.md",
"docs/测试说明/存储维护与容量恢复.md"
],
"scope": "global",
"frozen": false,
"cursor": null,
"digit_width": [
2,
4
],
"check_dangling": true,
"cursor_note": "§4.1 写的模块码正则是 [A-Z]{1,4},实测 GD5F/I104 含数字 → 正则放宽为 [A-Z][A-Z0-9]{0,4}(单一真源在此,规范行待同步);序号 3 位起是 §4.1 目标,现存 2 位形态属 §7.2 孤儿待处置 → digit_width 暂收 2 位,§9 阶段 1-① 收紧到 3",
"adjacent_cues": [
"测试",
"用例",
"指南",
"说明"
],
"module_code_note": "2026-10-20 批 2 模块码单词化后码长可达 9 位(ADCHEALTH/WATCHDOG),{0,4} 放宽到 {0,9};不放宽会让改名后的号整批从门禁眼里消失(实测漏 950 处)",
"subitem_ok": true
},
{
"name": "TC-UPPER",
"class": "TC",
"title": "测试用例(大写后缀形态,§7.1 待统一小写)",
"pattern": "\\bTC-[A-Z][A-Z0-9]{0,9}-[0-9]{2,4}[A-Z](?![A-Za-z])\\b",
"owner_docs_glob": [
"docs/测试说明/*.md"
],
"scope": "global",
"frozen": true,
"cursor": null,
"check_dangling": false,
"malformed": "大写后缀非法:§4.1 规定后缀只允许 -<小写字母>(§7.1 统一为小写)",
"module_code_note": "2026-10-20 批 2 模块码单词化后码长可达 9 位(ADCHEALTH/WATCHDOG),{0,4} 放宽到 {0,9};不放宽会让改名后的号整批从门禁眼里消失(实测漏 950 处)",
"subitem_ok": true
},
{
"name": "TC-NOMOD",
"class": "TC",
"title": "测试用例(无模块码形态,§7.2 孤儿:缺文档 = 追溯断链)",
"pattern": "\\bTC-[0-9]{2,4}[a-z]?\\b",
"owner_docs_glob": [
"docs/测试说明/*_Test_Guide.md",
"docs/测试说明/*单元测试说明.md"
],
"scope": "global",
"frozen": true,
"cursor": null,
"check_dangling": false,
"malformed": "缺模块码:须写 TC-<MOD>-<nnn>(§4.1 / §6 模块码表;§7.2 列为孤儿待补文档)",
"subitem_ok": true
},
{
"name": "TM",
"class": "TM",
"title": "测试阶段(§4.1 在册保留,模块码取 §6)",
"pattern": "\\bTM-[A-Z][A-Z0-9]{0,9}-[0-9]{2}\\b",
"owner_docs_glob": [
"docs/测试说明/*.md"
],
"scope": "global",
"frozen": false,
"cursor": null,
"digit_width": [
2,
2
],
"check_dangling": true,
"cursor_note": "TM-PHY-* 属 §6 废止模块码(PHY → NET,别名见 id_aliases.json),历史文档不回改",
"adjacent_cues": [
"测试"
]
},
{
"name": "DP",
"class": "DP",
"title": "测试设计原则(§4.1 目标形态带模块码)",
"pattern": "\\bDP-[A-Z][A-Z0-9]{0,9}-[0-9]{2}\\b",
"owner_docs_glob": [
"docs/测试说明/*.md"
],
"scope": "global",
"frozen": false,
"cursor": null,
"digit_width": [
2,
2
],
"check_dangling": true,
"adjacent_cues": [
"测试",
"原则"
]
},
{
"name": "DP-LEGACY",
"class": "DP",
"title": "测试设计原则(无模块码存量,§7.1 待加模块码)",
"pattern": "\\bDP-[0-9]{2}\\b",
"owner_docs_glob": [
"docs/测试说明/*.md"
],
"scope": "global",
"frozen": true,
"cursor": "DP-04",
"digit_width": [
2,
2
],
"check_dangling": false,
"cursor_note": "现存 DP-01~04(CH395F_Test_Guide.md);§7.1 迁 DP-NET-01~04,历史文档不回改",
"malformed": "缺模块码:§4.1 要求 DP-<MOD>-<nn>(现 DP-01 跨文档会撞)"
},
{
"name": "TRAP",
"class": "TRAP",
"title": "陷阱记录(§4.2 保留原号,历史证词高频锚点)",
"pattern": "\\bTRAP-[A-Z][A-Z0-9]{0,9}-[0-9]{2}\\b",
"owner_docs_glob": [
"docs/问题记录/*_Trap_Records.md"
],
"scope": "global",
"frozen": false,
"cursor": null,
"digit_width": [
2,
2
],
"check_dangling": true,
"cursor_note": "分模块各自递增:NET 01~21(属主 docs/问题记录/CH395F_Trap_Records.md)、GD5F 01~07(GD5F2GQ5UE_Trap_Records.md)、RTC 01(SD2506_Trap_Records.md)。批 4(2026-10-21)已把空格形 `Trap NN` 与中文形 `陷阱 N` 统一成 `TRAP-<MOD>-<nn>`,数字不变、只补模块码(§7.1)。**已知盲区(登记而非静默放过)**:docs/硬件平台/V0.0_网表详细分析报告.md(5 处)与 V0.1_网表详细分析报告.md(1 处)里的 `Trap05` 语义确指 `TRAP-NET-05`(CH395F 与 RTL8305 自动协商不兼容),但 docs/硬件平台/ 与 docs/芯片手册/ 同为门禁语料与本工具的共同排除目录,故本批不动笔、也不声称已合规。",
"adjacent_cues": [
"Trap",
"trap",
"陷阱",
"Trap_Records"
]
},
{
"name": "FEAT",
"class": "FEAT",
"title": "网络层功能/驱动改进项 F-<MOD>-<nn>(§4 总表缺这一族)",
"pattern": "\\bF-[A-Z][A-Z0-9]{0,9}-[0-9]{1,2}\\b",
"owner_docs": [
"docs/网络/网络自愈架构设计.md"
],
"scope": "global",
"frozen": false,
"cursor": null,
"check_dangling": true,
"cursor_note": "实测 F-NET-2~F-NET-17 / F-DRV-* 定义在 docs/网络/网络自愈架构设计.md 的功能对照表并被大量代码注释引用,但 §4.1/§4.2 总表里没有这一族 → 门禁先按实测收编,规范 §4 补行随本批同步提(§5.1 第 1 步:表里没有的类别先改规范)",
"adjacent_cues": [
"自愈",
"功能",
"改进"
]
},
{
"name": "PRINCIPLE",
"class": "PRINCIPLE",
"title": "编号设计原则 P-1~P-8(§2,定义就在 docs/编号规范.md)",
"pattern": "\\bP-[0-9]\\b",
"owner_docs": [
"docs/编号规范.md"
],
"scope": "global",
"frozen": false,
"cursor": "P-8",
"check_dangling": true,
"cursor_note": "八条设计原则(§2,2026-10-15 加 P-8);⚠ 与档位词 P0~P3(§4.4)与审计条目 P0-x(P-AUDIT)不同形,靠连字符区分",
"adjacent_cues": [
"原则",
"§2"
]
},
{
"name": "PAT",
"class": "PAT",
"title": "缺陷模式九类(§4.2.1,定义就在 docs/编号规范.md)",
"pattern": "\\bPAT-[0-9]{2}\\b",
"owner_docs": [
"docs/编号规范.md"
],
"scope": "global",
"frozen": true,
"cursor": "PAT-09",
"digit_width": [
2,
2
],
"check_dangling": true,
"cursor_note": "封闭九类(§4.2.1);新增类别先改规范"
},
{
"name": "RC",
"class": "RC",
"title": "net 周期对账类型(§4.2,唯一被代码逻辑引用的圈号链)",
"pattern": "\\bRC-[0-9]{2}\\b",
"owner_docs": [
"docs/网络/网络自愈架构设计.md"
],
"scope": "global",
"frozen": true,
"cursor": "RC-05",
"digit_width": [
2,
2
],
"check_dangling": true,
"cursor_note": "RC-01~RC-05(§4.2)",
"adjacent_cues": [
"对账"
]
},
{
"name": "GEN",
"class": "GEN",
"title": "台架日志代次(§4.2 目标形态,数字不变仅改字面)",
"pattern": "\\bGEN-[0-9]{1,3}\\b",
"owner_docs": [
"docs/测试说明/串口助手设计说明.md"
],
"scope": "global",
"frozen": false,
"cursor": null,
"check_dangling": false,
"dangling_note": "代次是运行时计数、不落登记表 → 无定义行可查;小写 gen 形态由 malformed 拦(§4.4 划界:与 net_get_generation() 是两回事)"
},
{
"name": "RUN",
"class": "RUN",
"title": "台架轮次(§4.2 目标形态,日期制)",
"pattern": "\\bRUN-[0-9]{8}-[0-9]{1,2}\\b",
"owner_docs": [
"docs/测试说明/实机测试实施指南.md"
],
"scope": "global",
"frozen": false,
"cursor": null,
"check_dangling": false
},
{
"name": "WAVE",
"class": "W",
"title": "波次(§4.1 在册保留;裸形 W<n> 合法)",
"pattern": "\\bW[0-9]+\\b",
"owner_docs": [
"docs/任务规划/README.md"
],
"scope": "global",
"frozen": false,
"cursor": "W8",
"cursor_owner_only": true,
"check_dangling": true,
"dangling_outside_owner": "warn",
"allow_missing_defs": [
"W8",
"W0"
],
"cursor_note": "游标 W8(§4.1);W2 已清空销项但槽位保留不复用(README §2.0 注)",
"adjacent_cues": [
"波次",
"规划"
]
},
{
"name": "WAVE-TASK",
"class": "W",
"title": "波次子任务卡 W<n>-<m>(§4.1 已废止,并入 WI / 语义标识)",
"pattern": "\\bW[0-9]+-[0-9]+\\b",
"owner_docs": [
"docs/任务规划/README.md"
],
"scope": "global",
"frozen": true,
"cursor": null,
"check_dangling": false,
"malformed": "子任务卡 W<n>-<m> 形态已废止(§4.1「子任务卡不再用 W1-0 形态,并入 WI」)→ 改语义标识(§3.3)"
},
{
"name": "L-PROT",
"class": "L",
"title": "采集与保护分层条目(§4.1 在册保留,代码侧样板族)",
"pattern": "\\bL[0-9](?:\\.[0-9])?-[0-9]{1,2}\\b",
"owner_docs": [
"docs/算法/继电保护功能复现规划.md"
],
"scope": "global",
"frozen": false,
"cursor": null,
"check_dangling": true,
"cursor_note": "L 前缀专属本族 + 裸形 L<n>(§4.1);裸形 L0/L0.5/L1/L2/L3 同时被测试分层/UI 四层/CubeMX 三层使用(§1.2「L1 四义」)→ 裸形不入判定,见 unmanaged_bare",
"adjacent_cues": [
"规划",
"保护",
"分层"
]
},
{
"name": "B-WAVE",
"class": "B",
"title": "功能主线排期条目 B0~B10(§4.2 目标 → WI;存量冻结)",
"pattern": "\\bB[0-9]{1,2}\\b",
"owner_docs": [
"docs/任务规划/README.md",
"docs/任务规划/W1-采集保护收尾.md",
"docs/任务规划/排期详述.md"
],
"scope": "global",
"frozen": true,
"cursor": "B10",
"cursor_owner_only": true,
"check_dangling": false,
"dangling_outside_owner": "warn",
"allow_missing_defs": [
"B0"
],
"cursor_note": "§7.1 → WI-001…(阶段 1-② 未落地);与位号 B1/B7、审计快照 B1~B10 同形 → 文档外只告警",
"adjacent_cues": [
"主线",
"波次"
],
"dangling_note": "与元器件位号同形(§4.4),全库悬空判定误报面大 → 只在属主登记处文档内拦越游标(cursor_owner_only)"
},
{
"name": "C-WAVE",
"class": "C",
"title": "结构债排期条目 C1~C6(§4.2 目标 → WI;存量冻结)",
"pattern": "\\bC[1-9]\\b",
"owner_docs": [
"docs/任务规划/README.md",
"docs/任务规划/排期详述.md"
],
"scope": "global",
"frozen": true,
"cursor": "C6",
"cursor_owner_only": true,
"check_dangling": false,
"dangling_outside_owner": "warn",
"cursor_note": "与元器件位号 C1~Cn、UI 约束清单 C5~C9 同形(§4.4)→ 只在属主登记处文档内判定",
"adjacent_cues": [
"结构债",
"波次"
],
"dangling_note": "与元器件位号同形(§4.4),全库悬空判定误报面大 → 只在属主登记处文档内拦越游标(cursor_owner_only)"
},
{
"name": "D-WAVE",
"class": "D",
"title": "验证窗口排期条目 D2~D7(§4.2 目标 → WI;存量冻结)",
"pattern": "\\bD[1-9]\\b",
"owner_docs": [
"docs/任务规划/README.md",
"docs/任务规划/排期详述.md"
],
"scope": "global",
"frozen": true,
"cursor": "D7",
"cursor_owner_only": true,
"check_dangling": false,
"dangling_outside_owner": "warn",
"cursor_note": "与位号 D7、设计决策 D1~D10、报告自有 D-x 四方同形(§1.2「D7=验证窗口、D-7=文档门禁、D1~D7=设计决策」)→ 只在属主登记处文档内判定",
"adjacent_cues": [
"验证",
"窗口"
],
"dangling_note": "与元器件位号同形(§4.4),全库悬空判定误报面大 → 只在属主登记处文档内拦越游标(cursor_owner_only)"
},
{
"name": "MS",
"class": "M",
"title": "里程碑 M1~M3(§4.2 目标 MS-<nn>;存量冻结)",
"pattern": "\\bM[1-3]\\b",
"owner_docs": [
"docs/任务规划/W1-采集保护收尾.md",
"docs/任务规划/README.md"
],
"scope": "global",
"frozen": true,
"cursor": "M3",
"cursor_owner_only": true,
"check_dangling": false,
"dangling_outside_owner": "warn",
"cursor_note": "M1~M3(§7.1 → MS-01~03);正则只收 M1~M3——M4 是 Cortex-M4 内核名,不是里程碑",
"dangling_note": "与元器件位号同形(§4.4),全库悬空判定误报面大 → 只在属主登记处文档内拦越游标(cursor_owner_only)"
},
{
"name": "DEF",
"class": "DEF",
"title": "缺陷 / 问题发现(§4.2 目标形态 DEF-<nnn>)",
"pattern": "\\bDEF-[0-9]{1,3}\\b",
"owner_docs": [],
"owner_note": "[计划] docs/问题记录/缺陷登记簿.md 尚未创建 → 属主登记处不存在 = 不可判定",
"scope": "global",
"frozen": false,
"cursor": null,
"check_dangling": false,
"dangling_note": "属主登记处创建后启用(§9 阶段 1-③)"
},
{
"name": "GAP",
"class": "GAP",
"title": "模拟器差距(§4.2;§7.1 收编 H-x / L-x / 差距 N-x)",
"pattern": "\\bGAP-[0-9]{1,3}\\b",
"owner_docs": [
"docs/测试说明/模拟器差距清单.md"
],
"scope": "doc-scoped",
"frozen": false,
"cursor": "GAP-17",
"check_dangling": true,
"adjacent_required": true,
"cursor_note": "GAP-01~GAP-17(§7.1 按文档内出现顺序)",
"adjacent_cues": [
"差距"
]
},
{
"name": "SC",
"class": "SC",
"title": "实机验证场景(§4.2;§7.1 收编实机预检 A1~A8、看门狗 V2/V4/V5)",
"pattern": "\\bSC-[0-9]{1,3}\\b",
"owner_docs": [
"docs/测试说明/实机测试实施指南.md"
],
"scope": "doc-scoped",
"frozen": false,
"cursor": null,
"check_dangling": true,
"adjacent_required": true,
"adjacent_cues": [
"实机",
"场景"
]
},
{
"name": "RSK",
"class": "RSK",
"title": "风险 RSK-<nn>(§4.2 文档内编号:各文档风险表自 RSK-01 起)",
"pattern": "\\bRSK-[0-9]{1,3}\\b",
"owner_docs_glob": [
"docs/**/*.md"
],
"scope": "doc-scoped",
"frozen": false,
"cursor": null,
"check_dangling": false,
"dangling_note": "文档内编号:属主 = 引用它的那篇文档自身,全库悬空校验无意义 → 只判紧邻文档名(§5.2)",
"adjacent_required": true
},
{
"name": "ST",
"class": "ST",
"title": "专项内部实施阶段 ST-<n>(§4.2 文档内编号;存量 P0~P5)",
"pattern": "\\bST-[0-9]{1,2}\\b",
"owner_docs_glob": [
"docs/**/*.md"
],
"scope": "doc-scoped",
"frozen": false,
"cursor": null,
"check_dangling": false,
"adjacent_required": true
},
{
"name": "UL",
"class": "UL",
"title": "UI 标准化四层 UL-<n>(§4.2 文档内编号;存量报告 UI 四层 L0~L3)",
"pattern": "\\bUL-[0-9]\\b",
"owner_docs": [
"docs/UI设计/UI_设计架构.md"
],
"scope": "doc-scoped",
"frozen": false,
"cursor": "UL-3",
"check_dangling": true,
"adjacent_required": true,
"adjacent_cues": [
"UI",
"架构"
]
},
{
"name": "LAT",
"class": "LAT",
"title": "链路延迟分段 LAT-<nn>(§4.2 文档内编号;存量 L1~L11)",
"pattern": "\\bLAT-[0-9]{1,2}\\b",
"owner_docs": [
"docs/测试说明/链路延迟测试说明.md"
],
"scope": "doc-scoped",
"frozen": false,
"cursor": "LAT-11",
"check_dangling": true,
"adjacent_required": true,
"adjacent_cues": [
"延迟"
]
},
{
"name": "CS",
"class": "CS",
"title": "CubeMX 定制存活三层 CS-1~CS-3(§4.2;存量 AGENTS.md 的 L1/L2/L3)",
"pattern": "\\bCS-[0-9]\\b",
"owner_docs": [
"docs/子系统设计/看门狗设计说明.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": "CS-3",
"check_dangling": true,
"adjacent_required": true,
"cursor_note": "CS-1~CS-3(§4.2)",
"adjacent_cues": [
"看门狗",
"存活"
]
},
{
"name": "N-RPT",
"class": "N-RPT",
"title": "《项目审查与优化建议报告》自有编号 N-xx(§4.3 冻结历史快照)",
"pattern": "\\bN-[0-9]{1,3}[a-z]?\\b",
"owner_docs": [
"docs/问题记录/项目审查与优化建议报告.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": null,
"check_dangling": true,
"dangling_outside_owner": "warn",
"adjacent_required": true,
"adjacent_cues": [
"报告",
"审查"
],
"collides_with": "N",
"cursor_note": "⚠ 与登记簿 N-x 同名不同义(§4.3 / AGENTS.md 模块约定)→ 引用必须紧邻「报告」或报告文档名",
"snapshot_only": true,
"snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走"
},
{
"name": "D-RPT",
"class": "D-RPT",
"title": "报告自有编号 D-x(§4.3 冻结历史快照)",
"pattern": "\\bD-[0-9]\\b",
"owner_docs": [
"docs/问题记录/项目审查与优化建议报告.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": null,
"check_dangling": true,
"dangling_outside_owner": "warn",
"adjacent_required": true,
"adjacent_cues": [
"报告",
"审查"
],
"collides_with": "D",
"snapshot_only": true,
"snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走"
},
{
"name": "S-RPT",
"class": "S-RPT",
"title": "报告自有编号 S-x(§4.3 冻结历史快照)",
"pattern": "\\bS-[0-9]\\b",
"owner_docs": [
"docs/问题记录/项目审查与优化建议报告.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": null,
"check_dangling": true,
"adjacent_required": true,
"adjacent_cues": [
"报告",
"审查"
],
"collides_with": "N",
"snapshot_only": true,
"snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走"
},
{
"name": "R-RPT",
"class": "R-RPT",
"title": "报告自有编号 R-x(§4.3 冻结;内存优化项)",
"pattern": "\\bR-[0-9]{1,2}\\b",
"owner_docs": [
"docs/问题记录/项目审查与优化建议报告.md"
],
"scope": "global",
"frozen": true,
"cursor": "R-9",
"check_dangling": true,
"adjacent_required": true,
"adjacent_cues": [
"报告",
"审查"
],
"cursor_note": "实测现存至 R-9(2026-10-15 落地);§1.2 记「R1=风险、R-2=内存优化项」同字母歧义",
"snapshot_only": true,
"snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走"
},
{
"name": "F-RPT",
"class": "F-RPT",
"title": "报告自有编号 F-x(§4.3 冻结历史快照)",
"pattern": "\\bF-[0-9]{1,2}\\b",
"owner_docs": [
"docs/问题记录/项目审查与优化建议报告.md"
],
"scope": "global",
"frozen": true,
"cursor": null,
"check_dangling": true,
"adjacent_required": true,
"adjacent_cues": [
"报告",
"审查"
],
"snapshot_only": true,
"snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走"
},
{
"name": "A-AUDIT",
"class": "A-AUDIT",
"title": "CH395F_Trap_Records 2026-10-11 审计快照 A1~A6(§4.3 冻结)",
"pattern": "\\bA[1-6]\\b",
"owner_docs": [
"docs/问题记录/CH395F_Trap_Records.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": "A6",
"cursor_owner_only": true,
"check_dangling": false,
"dangling_note": "与实机预检 A1~A8(§4.2 → SC-nn)同形 → 只在本档内判存在,不做全库悬空",
"adjacent_required": true,
"adjacent_cues": [
"审计",
"Trap_Records"
],
"collides_with": "A-REVIEW",
"snapshot_only": true,
"snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走"
},
{
"name": "B-AUDIT",
"class": "B-AUDIT",
"title": "CH395F_Trap_Records 2026-10-11 审计快照 B1~B10(§4.3 冻结)",
"pattern": "\\bB10\\b|\\bB[1-9]\\b",
"owner_docs": [
"docs/问题记录/CH395F_Trap_Records.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": "B10",
"cursor_owner_only": true,
"check_dangling": false,
"dangling_note": "与主线 B0~B10、位号 B1 三方同形(§1.2「B10 在规划是送检窗口、在陷阱审计是孤儿监听」)→ 只在本档内判",
"adjacent_required": true,
"adjacent_cues": [
"审计",
"Trap_Records"
],
"collides_with": "B",
"snapshot_only": true,
"snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走"
},
{
"name": "S-REVIEW",
"class": "S-REVIEW",
"title": "2026-10-02 复审条目 S1~S14(§7.1 → WI;编号不回收)",
"pattern": "\\bS1[0-4]\\b|\\bS[1-9]\\b",
"owner_docs": [
"docs/任务规划/测试与架构专项.md"
],
"scope": "global",
"frozen": true,
"cursor": "S14",
"cursor_owner_only": true,
"check_dangling": true,
"dangling_outside_owner": "warn",
"cursor_note": "「编号不随条目删除而回收」(专项文档卷首)→ 已销项的号再被引用即悬空;⚠ 与登记簿 S-3/S-4/S-5 同号不同义(§1.2),也与 CI 步骤号 S3、代码规范条款号 S3 同形 → 文档外只告警",
"adjacent_cues": [
"复审",
"专项"
]
},
{
"name": "A-REVIEW",
"class": "A-REVIEW",
"title": "2026-10-02 复审条目 A-1~A-7(§7.1 → WI)",
"pattern": "\\bA-[0-9]\\b",
"owner_docs": [
"docs/任务规划/测试与架构专项.md"
],
"scope": "global",
"frozen": true,
"cursor": "A-7",
"check_dangling": true,
"cursor_note": "现存 A-4/A-5 行,其余已销项(编号不回收)",
"adjacent_cues": [
"复审",
"专项"
]
},
{
"name": "T-REVIEW",
"class": "T-REVIEW",
"title": "2026-10-02 复审条目 T-1~T-5(专项文档卷首,编号不回收)",
"pattern": "\\bT-[1-5]\\b",
"owner_docs": [
"docs/任务规划/测试与架构专项.md"
],
"scope": "global",
"frozen": true,
"cursor": "T-5",
"check_dangling": true,
"adjacent_cues": [
"复审",
"专项"
],
"collides_with": "N"
},
{
"name": "P-AUDIT",
"class": "P",
"title": "2026-09 代码审计缺陷条目 P0-x~P3-x(§4.3 冻结;在册项 §7.1 → DEF)",
"pattern": "\\bP[0-3]-[0-9]{1,2}\\b",
"owner_docs": [
"docs/任务规划/README.md",
"docs/任务规划/测试与架构专项.md",
"docs/任务规划/登记簿.md",
"docs/任务规划/排期详述.md"
],
"scope": "global",
"frozen": true,
"cursor": null,
"check_dangling": true,
"dangling_outside_owner": "warn",
"adjacent_required": true,
"adjacent_cues": [
"审计",
"报告",
"P1 收尾",
"严重度"
],
"cursor_note": "⚠ 档位词 P0~P3 不带 -<数字> 后缀(§4.4);本族是历史审计条目,形态按 §4.3 冻结沿用,新发现改语义标识(§3.3);报告侧 P-x 属历史基线(§4.3),文档外按告警处理",
"snapshot_only": true,
"snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走"
},
{
"name": "O-DOC",
"class": "O",
"title": "各设计文档「本期不做 / 遗留可选项」O1~O4(§3.2 默认不造编号)",
"pattern": "\\bO[1-9]\\b",
"owner_docs_glob": [
"docs/**/*.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": null,
"check_dangling": false,
"dangling_note": "§3.2:这类清单默认改 § 小节引用;确需逐条引用才用文档内编号 OOS-<nn>。登记为族只为防校验 1 误报",
"adjacent_required": true,
"adjacent_cues": [
"遗留",
"不做",
"可选"
]
},
{
"name": "H-GAP",
"class": "H-GAP",
"title": "模拟器差距清单 H-1~H-7(§7.1 → GAP-01~07)",
"pattern": "\\bH-[0-9]\\b",
"owner_docs": [
"docs/测试说明/模拟器差距清单.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": "H-7",
"check_dangling": true,
"adjacent_required": true,
"adjacent_cues": [
"差距"
]
},
{
"name": "L-GAP",
"class": "L-GAP",
"title": "模拟器差距清单 L-1~L-4(§7.1 → GAP-08~11)",
"pattern": "\\bL-[0-9]\\b",
"owner_docs": [
"docs/测试说明/模拟器差距清单.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": "L-4",
"check_dangling": true,
"adjacent_required": true,
"adjacent_cues": [
"差距"
]
},
{
"name": "N-GAP",
"class": "N-GAP",
"title": "模拟器差距清单 N-1~N-6(§7.1 → GAP-12~17;与登记簿 N-x 同名不同义)",
"pattern": "\\bN-[0-9]\\b",
"owner_docs": [
"docs/测试说明/模拟器差距清单.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": "N-6",
"cursor_owner_only": true,
"check_dangling": false,
"dangling_note": "1 位数 N-x 与登记簿同号(§1.2 病根)→ 本族不判悬空,只在属主文档内拦越游标;迁移属 §9 阶段 1-①",
"collides_with": "N"
},
{
"name": "U-RPT",
"class": "U",
"title": "报告 UI 标准化簇 U1~U5(§4.3 冻结历史快照)",
"pattern": "\\bU[1-5]\\b",
"owner_docs": [
"docs/问题记录/项目审查与优化建议报告.md",
"docs/任务规划/README.md",
"docs/任务规划/登记簿.md"
],
"scope": "global",
"frozen": true,
"cursor": "U5",
"cursor_owner_only": true,
"check_dangling": false,
"dangling_note": "与 UI 状态机 U1~U15、位号 U17 三方同形(§4.4 位号目录已排除)→ 只拦越游标",
"cursor_note": "U1~U5 见报告 §6.5;W6 波次按此推进(docs/任务规划/README.md §2.0)"
},
{
"name": "U-STATE",
"class": "U-STATE",
"title": "Socket 状态机组合 U1~U15(§1.1 各模块设计文档自造;文档内编号)",
"pattern": "\\bU1[0-5]\\b|\\bU[1-9]\\b",
"owner_docs": [
"docs/网络/网络自愈架构设计.md",
"docs/网络/Net层阻塞模型架构设计.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": "U15",
"cursor_owner_only": true,
"check_dangling": false,
"dangling_note": "裸形与报告 U1~U5、位号 U17 同形(§1.2「U1 四义」)→ 只在属主文档内拦越游标",
"adjacent_required": true,
"adjacent_cues": [
"状态机",
"组合",
"自愈"
],
"collides_with": "U"
},
{
"name": "D-DOC",
"class": "D-DOC",
"title": "网络自愈设计决策 D1~D10(§4.2 目标 DR-<nnn>;§7.1 D1~D7 → DR-001~007)",
"pattern": "\\bD10\\b|\\bD[1-9]\\b",
"owner_docs": [
"docs/网络/网络自愈架构设计.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": "D10",
"cursor_owner_only": true,
"check_dangling": false,
"dangling_note": "与验证窗口 D2~D7、位号 D7、报告 D-x 四方同形(§1.2)→ 只在属主文档内拦越游标",
"adjacent_required": true,
"adjacent_cues": [
"决策",
"自愈"
],
"collides_with": "D"
},
{
"name": "V-WD",
"class": "V",
"title": "看门狗验证用例 V2/V4/V5(§7.1 → SC-<nn>)",
"pattern": "\\bV[2-9]\\b",
"owner_docs": [
"docs/子系统设计/看门狗设计说明.md",
"docs/测试说明/实机测试实施指南.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": null,
"cursor_owner_only": true,
"check_dangling": false,
"dangling_note": "与固件版本号 V0.1/V1.0、实机预检项同形 → 只在属主文档内判",
"adjacent_required": true,
"adjacent_cues": [
"看门狗",
"验证",
"实机"
]
},
{
"name": "RISK",
"class": "RISK",
"title": "专项风险裸形 R1~R8(§4.2 目标 RSK-<nn>;文档内编号)",
"pattern": "\\bR[1-8]\\b",
"owner_docs": [
"docs/算法/继电保护功能复现规划.md",
"docs/子系统设计/看门狗设计说明.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": "R8",
"cursor_owner_only": true,
"check_dangling": false,
"dangling_note": "与报告 R-x(内存优化项,连字符形)同字母不同形(§1.2)→ 只在属主文档内拦越游标",
"adjacent_required": true,
"adjacent_cues": [
"风险",
"规划",
"看门狗"
]
},
{
"name": "T-TEST",
"class": "T-TEST",
"title": "测试分层五档 T0/T0.5/T1/T2/T3(§4.2 目标形态;现存写 L0~L3)",
"pattern": "\\bT[0-3](?:\\.5)?\\b",
"owner_docs": [
"docs/测试说明/测试开发标准流程.md"
],
"scope": "global",
"frozen": false,
"cursor": null,
"cursor_owner_only": true,
"check_dangling": false,
"dangling_note": "§7.1 迁移批未落地(现存字面是 L0~L3)→ 本族是迁入目标,登记只为让新写法可判定;裸形 T1~T3 与 UART 引脚功能名同形,不做全库判定"
},
{
"name": "G-GATE",
"class": "G",
"title": "门禁档位 G0~G3(§4.2,与测试分层两套不合并)",
"pattern": "\\bG[0-3](?:\\.5)?\\b",
"owner_docs": [
"docs/测试说明/测试开发标准流程.md"
],
"scope": "global",
"frozen": true,
"cursor": null,
"cursor_owner_only": true,
"check_dangling": false
},
{
"name": "L-LAYER",
"class": "L-LAYER",
"title": "测试分层 / 算法层现存裸形 L0~L3(§4.2 目标 → T0~T3;§1.2 记四义)",
"pattern": "\\bL[0-3](?:\\.5)?\\b",
"owner_docs": [
"docs/测试说明/测试开发标准流程.md",
"App/algo/README.md"
],
"scope": "global",
"frozen": true,
"cursor": null,
"check_dangling": false,
"dangling_note": "阶段 1-②(L0~L3 → T0~T3,全库最大机械批次)未落地 → 本族只登记不判定(§9)"
},
{
"name": "CODE-RULE",
"class": "CODE-RULE",
"title": "嵌入式 C 代码规范条款号(V1.0;配原文章节号,如 CODE-RULE-03 (3.4.1))",
"pattern": "\\bCODE-RULE-[0-9]{2}\\b",
"digit_width": [
2,
2
],
"owner_docs": [
"scripts/check_coding_standard.py"
],
"scope": "global",
"frozen": false,
"cursor": "CODE-RULE-19",
"cursor_owner_only": true,
"owner_note": "属主登记处 = 门禁脚本的规则表本身(单一事实源);docs/代码规范/pre-commit使用说明.md 与规范原文是引用方",
"cursor_note": "2026-10-20 批 1 由 scripts/rename_ids.py 从裸形 S1~S19 单词化(旧号见 id_aliases.json 的 scoped 条目)。S14 历史上不存在(脚本无该条),空洞不复用 → 游标 19"
},
{
"name": "MENU-STATE",
"class": "MENU-STATE",
"title": "UI 菜单像素回归状态号(按键序列状态,共 8 态)",
"pattern": "\\bMENU-STATE-[0-9]{2}\\b",
"digit_width": [
2,
2
],
"owner_docs": [
"simulator/tests/check_menu_rows.py"
],
"scope": "global",
"frozen": true,
"cursor": "MENU-STATE-07",
"cursor_owner_only": true,
"owner_note": "属主登记处 = check_menu_rows.py 的 STATES 表(键序 → 状态);UI_自动化测试流程.md 与 simulator/README.md 是引用方",
"cursor_note": "2026-10-20 批 1 从裸形 S0~S7 单词化(原名与登记簿 S-x、代码规范条款、2026-10-02 复审专项条目四义撞形,见 §1.2)。8 态封顶:加状态先改游标"
},
{
"name": "TC-HOST-NANDPORT",
"class": "TC",
"title": "主机侧单测用例号:dhara NAND 移植层(N-21)(test/host/nand_port)",
"pattern": "\\bTC-NANDPORT-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/nand_port/*"
],
"scope": "global",
"frozen": false,
"cursor": "TC-NANDPORT-700",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21):这些号实测在代码目录外零消费者(唯一外部引用是 id_aliases.json 自己),故属主登记处 = 单测代码本身,不逐号补文档;class 仍为 TC → 跨模块同号由校验 4 抓",
"cursor_note": "游标按实测最大号收录(2026-10-21):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-PROTSET",
"class": "TC",
"title": "主机侧单测用例号:保护定值模型 L3(test/host/prot_set)",
"pattern": "\\bTC-PROTSET-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/prot_set/*"
],
"scope": "global",
"frozen": false,
"cursor": "TC-PROTSET-011",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21):这些号实测在代码目录外零消费者(唯一外部引用是 id_aliases.json 自己),故属主登记处 = 单测代码本身,不逐号补文档;class 仍为 TC → 跨模块同号由校验 4 抓",
"cursor_note": "游标按实测最大号收录(2026-10-21):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-PROTELEM",
"class": "TC",
"title": "主机侧单测用例号:保护元件/判据框架 L3(test/host/prot_elm)",
"pattern": "\\bTC-PROTELEM-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/prot_elm/*"
],
"scope": "global",
"frozen": false,
"cursor": "TC-PROTELEM-013",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21):这些号实测在代码目录外零消费者(唯一外部引用是 id_aliases.json 自己),故属主登记处 = 单测代码本身,不逐号补文档;class 仍为 TC → 跨模块同号由校验 4 抓",
"cursor_note": "游标按实测最大号收录(2026-10-21):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-FREQ",
"class": "TC",
"title": "主机侧单测用例号:L2.5 测频(自适应窗)(test/host/freq)",
"pattern": "\\bTC-FREQ-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/freq/*"
],
"scope": "global",
"frozen": false,
"cursor": "TC-FREQ-011",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21):这些号实测在代码目录外零消费者(唯一外部引用是 id_aliases.json 自己),故属主登记处 = 单测代码本身,不逐号补文档;class 仍为 TC → 跨模块同号由校验 4 抓",
"cursor_note": "游标按实测最大号收录(2026-10-21):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-FTPAUTH",
"class": "TC",
"title": "主机侧单测用例号:FTP 鉴权与锁定策略(test/host/ftp_auth)",
"pattern": "\\bTC-FTPAUTH-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/ftp_auth/*"
],
"scope": "global",
"frozen": false,
"cursor": "TC-FTPAUTH-010",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21):这些号实测在代码目录外零消费者(唯一外部引用是 id_aliases.json 自己),故属主登记处 = 单测代码本身,不逐号补文档;class 仍为 TC → 跨模块同号由校验 4 抓",
"cursor_note": "游标按实测最大号收录(2026-10-21):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-SHA256",
"class": "TC",
"title": "主机侧单测用例号:SHA-256 摘要(口令哈希底座)(test/host/sha256)",
"pattern": "\\bTC-SHA256-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/sha256/*"
],
"scope": "global",
"frozen": false,
"cursor": "TC-SHA256-008",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21):这些号实测在代码目录外零消费者(唯一外部引用是 id_aliases.json 自己),故属主登记处 = 单测代码本身,不逐号补文档;class 仍为 TC → 跨模块同号由校验 4 抓",
"cursor_note": "游标按实测最大号收录(2026-10-21):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-SOE",
"class": "TC",
"title": "主机侧单测用例号:SOE 事件顺序记录编解码(test/host/soe)",
"pattern": "\\bTC-SOE-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/soe/*"
],
"scope": "global",
"frozen": false,
"cursor": "TC-SOE-007",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21):这些号实测在代码目录外零消费者(唯一外部引用是 id_aliases.json 自己),故属主登记处 = 单测代码本身,不逐号补文档;class 仍为 TC → 跨模块同号由校验 4 抓",
"cursor_note": "游标按实测最大号收录(2026-10-21):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-ADCHEALTH",
"class": "TC",
"title": "主机侧单测用例号:L1 采集有效性校验(test/host/adc_health)",
"pattern": "\\bTC-ADCHEALTH-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/adc_health/*"
],
"scope": "global",
"frozen": false,
"cursor": "TC-ADCHEALTH-011",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21):这些号实测在代码目录外零消费者(唯一外部引用是 id_aliases.json 自己),故属主登记处 = 单测代码本身,不逐号补文档;class 仍为 TC → 跨模块同号由校验 4 抓",
"cursor_note": "游标按实测最大号收录(2026-10-21):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-IEC104",
"class": "TC",
"title": "主机侧单测用例号:IEC 60870-5-104 协议栈(test/host/iec104)",
"pattern": "\\bTC-IEC104-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/iec104/*"
],
"scope": "global",
"frozen": false,
"cursor": "TC-IEC104-023",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径同其余 TC-HOST 族;本族是 2026-10-21 补漏——上批模块码改名前它是纯数字 `TC-104-*`,未进当时的悬空普查,故漏建族",
"cursor_note": "游标按实测最大号收录(2026-10-21)"
}
],
"unmanaged_bare": {
"note": "以下裸形族在 §9 阶段 1-② 迁移落地前**不做全库判定**——它们彼此、与元器件位号(§4.4)、与档位词大面积同形(§1.2 的五义/四义清单)。这些族的判定范围已收窄到「属主登记处文档内」(cursor_owner_only),文档外降为告警;显式登记 = 记录盲区,不是「检查通过」。",
"patterns": [
"\\bL[0-9](?:\\.[0-9])?\\b",
"\\bP[0-3]\\b",
"\\bU[0-9]{1,2}\\b",
"\\bH[0-9]\\b",
"\\bI[0-9]\\b",
"\\bJ[0-9]\\b",
"\\bQ[0-9]{1,2}\\b",
"\\bF[0-9]{1,2}\\b",
"\\bR[0-9]\\b",
"\\bV[0-9]\\b"
]
},
"owner_docs_exclude": [
"docs/测试说明/测试文档模板规范.md"
]
}