{ "schema": 1, "generated_from": "docs/编号规范.md §4 编号空间总表(§4.1 在册 / §4.2 目标 / §4.3 冻结 / §4.4 划界)+ §6 模块码表 + §7 迁移映射。游标取「规范记载值」与「全库实测最大号」的较大者,实测偏差一律写进 cursor_note,不凭印象编。", "decidable_ratio_baseline": 84.0, "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/内存管理/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--(§4.2 / §7.1)" }, { "name": "中文形 陷阱", "pattern": "陷阱 ?[0-9]{1,2}", "severity": "error", "why": "中文形陷阱编号(§2 P-4 禁止),须写 TRAP--(§4.2 / §7.1)" }, { "name": "小写 gen 代次", "pattern": "\\bgen[ -]?[0-9]{2,3}\\b", "severity": "error", "why": "台架代次字面不统一(§7.1),须写 GEN-(§4.2)" }, { "name": "小写 round 轮次", "pattern": "\\bround ?[0-9]{1,2}\\b", "severity": "error", "docs_only": true, "why": "台架轮次字面(§7.1),须写 RUN--(§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-(§4.2;存量 M1~M3)", "pattern": "\\bMS-[0-9]{1,2}\\b", "owner_docs": [ "docs/任务规划/采集保护收尾.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--(§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--(§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--(现 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--`,数字不变、只补模块码(§7.1)。**已知盲区(登记而非静默放过)**:docs/硬件平台/V0.0_网表详细分析报告.md(5 处)与 V0.1_网表详细分析报告.md(1 处)里的 `Trap05` 语义确指 `TRAP-NET-05`(CH395F 与 RTL8305 自动协商不兼容)已于批 7 统一为 TRAP-NET-05(6 处,改名工具已解除对本目录的排除);本目录**仍不在门禁扫描语料内**:粗测有约 4200 处 R/C/D/J/X/U/T 位号,位号类型识别做完前纳入会让 --strict 天天为位号拦提交,那等于把闸门变成噪音源。", "adjacent_cues": [ "Trap", "trap", "陷阱", "Trap_Records" ] }, { "name": "FEAT", "class": "FEAT", "title": "网络层功能/驱动改进项 F--(§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 **2026-10-25 废止**,改语义名;存量仅作历史指称)", "pattern": "\\bW[0-9]+\\b", "owner_docs": [ "docs/任务规划/README.md" ], "scope": "global", "frozen": true, "cursor": "W8", "cursor_owner_only": true, "check_dangling": false, "dangling_outside_owner": "warn", "allow_missing_defs": [ "W8", "W0" ], "cursor_note": "2026-10-25 用户裁定废止:波次号看着像执行顺序,实际 W8 排在 W3/W4 之前,读者必须先查表 → 改语义名(采集保护收尾 / 数据可信 / 预算与内存 / 结构债 / 验证常态 / UI 扩展 / 仓库决策),执行序 = README §2.0 表序。属主文档已不再定义任何 W 号,故 check_dangling 关闭;游标冻结 W8,存量引用仅作历史指称", "adjacent_cues": [ "波次", "规划" ] }, { "name": "WAVE-TASK", "class": "W", "title": "波次子任务卡 W-(§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- 形态已废止(§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(§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/任务规划/采集保护收尾.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.1 **2026-10-25 废止**,改语义名;存量仅作历史指称)", "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": "2026-10-25 废止:与元器件位号 C1~Cn、UI 约束清单 C5~C9 同字母不同义(§4.4),属主文档已不再定义 C 号 → 条目改语义名", "adjacent_cues": [ "结构债", "波次" ], "dangling_note": "与元器件位号同形(§4.4),全库悬空判定误报面大 → 只在属主登记处文档内拦越游标(cursor_owner_only)" }, { "name": "D-WAVE", "class": "D", "title": "验证窗口排期条目 D2~D7(§4.1 **2026-10-25 废止**,改语义名;存量仅作历史指称)", "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-;存量冻结)", "pattern": "\\bM[1-3]\\b", "owner_docs": [ "docs/任务规划/采集保护收尾.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-)", "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-(§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-(§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-(§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-(§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(原属主文档 2026-10-25 已删;登记处迁 §4.5,§4.3 冻结历史快照)", "pattern": "\\bN-[0-9]{1,3}[a-z]?\\b", "owner_docs": [ "docs/编号规范.md" ], "scope": "doc-scoped", "frozen": true, "cursor": null, "check_dangling": false, "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 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走", "owner_note": "属主文档 docs/问题记录/项目审查与优化建议报告.md 已于 2026-10-25 删除(用户裁定:内容大部分已闭环);登记职责与 26 行「号 → 现在详述于」对照表迁到 docs/编号规范.md §4.5,故 owner_docs 指向该节——它只用于**恢复可判定比例**(§4.5 是冻结存档登记处),定义集仍为空(snapshot_only 族剔除规范正文,见 check_ids.py 的 _def_owners),因此不参与悬空/撞号/裸形判定。未闭环项早已并轨到登记簿 N-19~N-29 + U 簇" }, { "name": "D-RPT", "class": "D-RPT", "title": "报告自有编号 D-x(原属主文档 2026-10-25 已删;登记处迁 §4.5,§4.3 冻结历史快照)", "pattern": "\\bD-[0-9]\\b", "owner_docs": [ "docs/编号规范.md" ], "scope": "doc-scoped", "frozen": true, "cursor": null, "check_dangling": false, "dangling_outside_owner": "warn", "adjacent_required": true, "adjacent_cues": [ "报告", "审查" ], "collides_with": "D", "snapshot_only": true, "snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走", "owner_note": "属主文档 docs/问题记录/项目审查与优化建议报告.md 已于 2026-10-25 删除(用户裁定:内容大部分已闭环);登记职责与 26 行「号 → 现在详述于」对照表迁到 docs/编号规范.md §4.5,故 owner_docs 指向该节——它只用于**恢复可判定比例**(§4.5 是冻结存档登记处),定义集仍为空(snapshot_only 族剔除规范正文,见 check_ids.py 的 _def_owners),因此不参与悬空/撞号/裸形判定。未闭环项早已并轨到登记簿 N-19~N-29 + U 簇" }, { "name": "S-RPT", "class": "S-RPT", "title": "报告自有编号 S-x(原属主文档 2026-10-25 已删;登记处迁 §4.5,§4.3 冻结历史快照)", "pattern": "\\bS-[0-9]\\b", "owner_docs": [ "docs/编号规范.md" ], "scope": "doc-scoped", "frozen": true, "cursor": null, "check_dangling": false, "adjacent_required": true, "adjacent_cues": [ "报告", "审查" ], "collides_with": "N", "snapshot_only": true, "snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走", "owner_note": "属主文档 docs/问题记录/项目审查与优化建议报告.md 已于 2026-10-25 删除(用户裁定:内容大部分已闭环);登记职责与 26 行「号 → 现在详述于」对照表迁到 docs/编号规范.md §4.5,故 owner_docs 指向该节——它只用于**恢复可判定比例**(§4.5 是冻结存档登记处),定义集仍为空(snapshot_only 族剔除规范正文,见 check_ids.py 的 _def_owners),因此不参与悬空/撞号/裸形判定。未闭环项早已并轨到登记簿 N-19~N-29 + U 簇" }, { "name": "R-RPT", "class": "R-RPT", "title": "报告自有编号 R-x(原属主文档 2026-10-25 已删;登记处迁 §4.5,§4.3 冻结;内存优化项)", "pattern": "\\bR-[0-9]{1,2}\\b", "owner_docs": [ "docs/编号规范.md" ], "scope": "global", "frozen": true, "cursor": "R-9", "check_dangling": false, "adjacent_required": true, "adjacent_cues": [ "报告", "审查" ], "cursor_note": "实测现存至 R-9(2026-10-15 落地);§1.2 记「R1=风险、R-2=内存优化项」同字母歧义", "snapshot_only": true, "snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走", "owner_note": "属主文档 docs/问题记录/项目审查与优化建议报告.md 已于 2026-10-25 删除(用户裁定:内容大部分已闭环);登记职责与 26 行「号 → 现在详述于」对照表迁到 docs/编号规范.md §4.5,故 owner_docs 指向该节——它只用于**恢复可判定比例**(§4.5 是冻结存档登记处),定义集仍为空(snapshot_only 族剔除规范正文,见 check_ids.py 的 _def_owners),因此不参与悬空/撞号/裸形判定。未闭环项早已并轨到登记簿 N-19~N-29 + U 簇" }, { "name": "F-RPT", "class": "F-RPT", "title": "报告自有编号 F-x(原属主文档 2026-10-25 已删;登记处迁 §4.5,§4.3 冻结历史快照)", "pattern": "\\bF-[0-9]{1,2}\\b", "owner_docs": [ "docs/编号规范.md" ], "scope": "global", "frozen": true, "cursor": null, "check_dangling": false, "adjacent_required": true, "adjacent_cues": [ "报告", "审查" ], "snapshot_only": true, "snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走", "owner_note": "属主文档 docs/问题记录/项目审查与优化建议报告.md 已于 2026-10-25 删除(用户裁定:内容大部分已闭环);登记职责与 26 行「号 → 现在详述于」对照表迁到 docs/编号规范.md §4.5,故 owner_docs 指向该节——它只用于**恢复可判定比例**(§4.5 是冻结存档登记处),定义集仍为空(snapshot_only 族剔除规范正文,见 check_ids.py 的 _def_owners),因此不参与悬空/撞号/裸形判定。未闭环项早已并轨到登记簿 N-19~N-29 + U 簇" }, { "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-。登记为族只为防校验 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(原属主文档 2026-10-25 已删;排期见 README §2.0 / 登记簿 U 簇,§4.3 冻结历史快照)", "pattern": "\\bU[1-5]\\b", "owner_docs": [ "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(该报告 2026-10-25 已删除);现行排期见 docs/任务规划/README.md §2.0「UI 扩展」与 登记簿 U 簇行", "owner_note": "属主文档 docs/问题记录/项目审查与优化建议报告.md 已于 2026-10-25 删除(用户裁定:内容大部分已闭环);登记职责与 26 行「号 → 现在详述于」对照表迁到 docs/编号规范.md §4.5,故 owner_docs 指向该节——它只用于**恢复可判定比例**(§4.5 是冻结存档登记处),定义集仍为空(snapshot_only 族剔除规范正文,见 check_ids.py 的 _def_owners),因此不参与悬空/撞号/裸形判定。未闭环项早已并轨到登记簿 N-19~N-29 + U 簇" }, { "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-;§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-)", "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-;文档内编号)", "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-NETSOCK", "class": "TC", "title": "主机侧单测用例号:CH395F socket 栈核心(fd 表分配/跨上下文消息/错误码经通知值回传/监听门控)(net_socket)", "pattern": "\\bTC-NETSOCK-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/net_socket/*" ], "scope": "global", "frozen": false, "cursor": "TC-NETSOCK-560", "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-SYSLOG", "class": "TC", "title": "主机侧单测用例号:运行与自检日志存储(定长记录 + 批量写 + 读窗口)(sys_log_mcu)", "pattern": "\\bTC-SYSLOG-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/sys_log_mcu/*" ], "scope": "global", "frozen": false, "cursor": "TC-SYSLOG-108", "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-CFGFST", "class": "TC", "title": "主机侧单测用例号:配置文件存储引擎(落盘与回读校验)(cfg_file_store_mcu)", "pattern": "\\bTC-CFGFST-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/cfg_file_store_mcu/*" ], "scope": "global", "frozen": false, "cursor": "TC-CFGFST-053", "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-SOESTORE", "class": "TC", "title": "主机侧单测用例号:SOE 事件顺序记录持久化(soe_store)", "pattern": "\\bTC-SOESTORE-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/soe_store/*" ], "scope": "global", "frozen": false, "cursor": "TC-SOESTORE-024", "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-CONLOG", "class": "TC", "title": "主机侧单测用例号:控制台单写者日志(环形缓冲 + TX 软复位自愈)(console_log)", "pattern": "\\bTC-CONLOG-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/console_log/*" ], "scope": "global", "frozen": false, "cursor": "TC-CONLOG-167", "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)" }, { "name": "TC-HOST-NETCFG", "class": "TC", "title": "主机侧单测用例号:网络配置编排与跨任务保存交接(test/host/net_cfg)", "pattern": "\\bTC-NETCFG-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/net_cfg/*" ], "scope": "global", "frozen": false, "cursor": "TC-NETCFG-056", "cursor_owner_only": true, "check_dangling": true, "allow_orphans": true, "subitem_ok": true, "owner_note": "B 层口径(2026-10-21 批 3 定:这些号在代码目录外零消费者,属主登记处 = 单测代码本身,不逐号补文档);本族 2026-10-23 随覆盖率口径 §9 P1 第①批新建模块补登记", "cursor_note": "游标按实测最大号收录(2026-10-23):越界即视为未登记的冒号牌" }, { "name": "TC-HOST-FTPCFG", "class": "TC", "title": "主机侧单测用例号:FTP 鉴权配置 [ftp] 段(test/host/ftp_cfg)", "pattern": "\\bTC-FTPCFG-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/ftp_cfg/*" ], "scope": "global", "frozen": false, "cursor": "TC-FTPCFG-014", "cursor_owner_only": true, "check_dangling": true, "allow_orphans": true, "subitem_ok": true, "owner_note": "B 层口径(2026-10-21 批 3 定:这些号在代码目录外零消费者,属主登记处 = 单测代码本身,不逐号补文档);本族 2026-10-23 随覆盖率口径 §9 P1 第①批新建模块补登记", "cursor_note": "游标按实测最大号收录(2026-10-23):越界即视为未登记的冒号牌" }, { "name": "TC-HOST-PROTSTOR", "class": "TC", "title": "主机侧单测用例号:保护定值持久化胶水层(test/host/prot_set_store)", "pattern": "\\bTC-PROTSTOR-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/prot_set_store/*" ], "scope": "global", "frozen": false, "cursor": "TC-PROTSTOR-016", "cursor_owner_only": true, "check_dangling": true, "allow_orphans": true, "subitem_ok": true, "owner_note": "B 层口径(2026-10-21 批 3 定:这些号在代码目录外零消费者,属主登记处 = 单测代码本身,不逐号补文档);本族 2026-10-23 随覆盖率口径 §9 P1 第①批新建模块补登记", "cursor_note": "游标按实测最大号收录(2026-10-23):越界即视为未登记的冒号牌" }, { "name": "TC-HOST-TASKPROF", "class": "TC", "title": "主机侧单测用例号:任务耗时探针与上报节流(test/host/task_prof)", "pattern": "\\bTC-TASKPROF-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/task_prof/*" ], "scope": "global", "frozen": false, "cursor": "TC-TASKPROF-020", "cursor_owner_only": true, "check_dangling": true, "allow_orphans": true, "subitem_ok": true, "owner_note": "B 层口径(2026-10-21 批 3 定:这些号在代码目录外零消费者,属主登记处 = 单测代码本身,不逐号补文档);本族 2026-10-23 随覆盖率口径 §9 P1 第①批新建模块补登记", "cursor_note": "游标按实测最大号收录(2026-10-23):越界即视为未登记的冒号牌" }, { "name": "TC-HOST-TC-HOST-LFTPIO", "class": "TC", "title": "主机侧单测用例号:FTP 文件 IO 层与路径规范化(test/host/lftpd_io)", "pattern": "\\bTC-LFTPIO-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/lftpd_io/*" ], "scope": "global", "frozen": false, "cursor": "TC-LFTPIO-037", "cursor_owner_only": true, "check_dangling": true, "allow_orphans": true, "subitem_ok": true, "owner_note": "B 层口径(2026-10-21 批 3 定:这些号在代码目录外零消费者,属主登记处 = 单测代码本身,不逐号补文档);2026-10-23 随覆盖率口径 §9 P1 新建模块补登记", "cursor_note": "游标按实测最大号收录(2026-10-23):越界即视为未登记的冒号牌" }, { "name": "TC-HOST-TC-HOST-LFTSTR", "class": "TC", "title": "主机侧单测用例号:FTP 命令行字符串工具(同模块内)(test/host/lftpd_io)", "pattern": "\\bTC-LFTSTR-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/lftpd_io/*" ], "scope": "global", "frozen": false, "cursor": "TC-LFTSTR-005", "cursor_owner_only": true, "check_dangling": true, "allow_orphans": true, "subitem_ok": true, "owner_note": "B 层口径(2026-10-21 批 3 定:这些号在代码目录外零消费者,属主登记处 = 单测代码本身,不逐号补文档);2026-10-23 随覆盖率口径 §9 P1 新建模块补登记", "cursor_note": "游标按实测最大号收录(2026-10-23):越界即视为未登记的冒号牌" }, { "name": "TC-HOST-NETSEL", "class": "TC", "title": "主机侧单测用例号:NET 层 select/poll 事件观测(test/host/net_select)", "pattern": "\\bTC-NETSEL-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/net_select/*" ], "scope": "global", "frozen": false, "cursor": "TC-NETSEL-019", "cursor_owner_only": true, "check_dangling": true, "allow_orphans": true, "subitem_ok": true, "owner_note": "B 层口径(2026-10-21 批 3 定:这些号在代码目录外零消费者,属主登记处 = 单测代码本身,不逐号补文档);2026-10-23 随覆盖率口径 §9 P1 新建模块补登记", "cursor_note": "游标按实测最大号收录(2026-10-23):越界即视为未登记的冒号牌" }, { "name": "TC-HOST-NETLIS", "class": "TC", "title": "主机侧单测用例号:NET 层监听自动重建(test/host/net_listener)", "pattern": "\\bTC-NETLIS-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/net_listener/*" ], "scope": "global", "frozen": false, "cursor": "TC-NETLIS-026", "cursor_owner_only": true, "check_dangling": true, "allow_orphans": true, "subitem_ok": true, "owner_note": "B 层口径(2026-10-21 批 3 定:这些号在代码目录外零消费者,属主登记处 = 单测代码本身,不逐号补文档);2026-10-23 随覆盖率口径 §9 假 CH395F 立项第一批补登记", "cursor_note": "游标按实测最大号收录(2026-10-23):越界即视为未登记的冒号牌" }, { "name": "TC-HOST-NETPEND", "class": "TC", "title": "主机侧单测用例号:NET 层挂起 recv 与挂起 send(test/host/net_pending)", "pattern": "\\bTC-NETPEND-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/net_pending/*" ], "scope": "global", "frozen": false, "cursor": "TC-NETPEND-040", "cursor_owner_only": true, "check_dangling": true, "allow_orphans": true, "subitem_ok": true, "owner_note": "B 层口径(2026-10-21 批 3 定:这些号在代码目录外零消费者,属主登记处 = 单测代码本身,不逐号补文档);2026-10-23 随覆盖率口径 §9 假 CH395F 第二批补登记", "cursor_note": "游标按实测最大号收录(2026-10-23):越界即视为未登记的冒号牌" }, { "name": "TC-HOST-NETEV", "class": "TC", "title": "主机侧单测用例号:NET 层事件分发与周期对账(test/host/net_events)", "pattern": "\\bTC-NETEV-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/net_events/*" ], "scope": "global", "frozen": false, "cursor": "TC-NETEV-058", "cursor_owner_only": true, "check_dangling": true, "allow_orphans": true, "subitem_ok": true, "owner_note": "B 层口径(2026-10-21 批 3 定:这些号在代码目录外零消费者,属主登记处 = 单测代码本身,不逐号补文档);2026-10-23 随覆盖率口径 §9 假 CH395F 第三批补登记", "cursor_note": "游标按实测最大号收录(2026-10-23):越界即视为未登记的冒号牌" }, { "name": "TC-HOST-LFTINET", "class": "TC", "title": "主机侧单测用例号:FTP 的 socket 适配层(test/host/lftpd_inet)", "pattern": "\\bTC-LFTINET-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/lftpd_inet/*" ], "scope": "global", "frozen": false, "cursor": "TC-LFTINET-070", "cursor_owner_only": true, "check_dangling": true, "allow_orphans": true, "subitem_ok": true, "owner_note": "B 层口径(2026-10-21 批 3 定:这些号在代码目录外零消费者,属主登记处 = 单测代码本身,不逐号补文档);2026-10-23 随覆盖率口径 §9 P1 FTP 批次补登记", "cursor_note": "游标按实测最大号收录(2026-10-23):越界即视为未登记的冒号牌" }, { "name": "TC-HOST-LFTPD", "class": "TC", "title": "主机侧单测用例号:FTP 控制通道协议层(test/host/lftpd)", "pattern": "\\bTC-LFTPD-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/lftpd/*" ], "scope": "global", "frozen": false, "cursor": "TC-LFTPD-034", "cursor_owner_only": true, "check_dangling": true, "allow_orphans": true, "subitem_ok": true, "owner_note": "B 层口径(2026-10-21 批 3 定:这些号在代码目录外零消费者,属主登记处 = 单测代码本身,不逐号补文档);2026-10-23 随覆盖率口径 §9 P1 FTP 批次补登记", "cursor_note": "游标按实测最大号收录(2026-10-23):越界即视为未登记的冒号牌" }, { "name": "TC-HOST-I104SRV", "class": "TC", "title": "主机侧单测用例号:IEC 104 上行服务生命周期(test/host/iec104_serv)", "pattern": "\\bTC-I104SRV-[0-9]{1,4}[a-z]?\\b", "digit_width": [ 2, 4 ], "owner_docs_glob": [ "test/host/iec104_serv/*" ], "scope": "global", "frozen": false, "cursor": "TC-I104SRV-041", "cursor_owner_only": true, "check_dangling": true, "allow_orphans": true, "subitem_ok": true, "owner_note": "B 层口径(2026-10-21 批 3 定:这些号在代码目录外零消费者,属主登记处 = 单测代码本身,不逐号补文档);2026-10-23 随覆盖率口径 §9 P1 收官批次补登记", "cursor_note": "游标按实测最大号收录(2026-10-23):越界即视为未登记的冒号牌" } ], "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" ], "designator_rule": "硬件语料位号识别:docs/硬件平台/ 与 docs/芯片手册/ 里匹配 ^[RCDJXUT][0-9]{1,3}$(无连字符)的字面量判为**位号**,不产生任何编号结论;不含 B(V0.0 网表报告的 B1 是真专项条目),带连字符的 D-7/N-18/TC-206 不受影响。机制在 check_ids.py 的 add() 里落地(统计键 designator_skipped)。**本目录仍未纳入扫描语料**:纳入前必须先把位号从可判定比例的 refs_total 里减掉,否则约 4200 处位号会把比例分母灌水、掩盖真实变化。 【批 9 扩展】同一规则再覆盖**引脚名/总线名/网名/区间**:^[A-Z]{2,3}[0-9]{1,2}(-[0-9]{1,2})?(如 PB12-15、PG0-15、PF13-15、DB0-15、OS0-2、KEY1-3、AIN1),同样不进 refs_total。带连字符的一字母形态(C-10 / A-9 / N-18 / D-7)与 TC-206 / TC1003 一律不受影响,仍照旧判。器件料号(FOC-817SC-F 被切成 FOC-817)**不做形状规则**:[A-Z]{3}-\\d{3} 与真家族 DEF-* 撞形,代价远大于收益,故留在台账 reason 里记账。" }