Files
STM32F4-Base/scripts/id_registry.json
T
wandering1 94b0d79026 feat(ui)+chore(docs): UI 补齐清单清空;数据可信销项与「卡」号清退
本笔含两组收尾工作(同一工作区内交错在 6 个共享文档/门禁配置里,
拆开会产生"文档声称的页数与树里黄金数不一致"的中间提交,故合为一笔):

一、UI 补齐(清单清空)
- 新建 6 个内容页模块:ui_page_accident / oper / alarm / start / yk
  复用 ui_w_records 共享组件(分页、空态"无记录"、按实例读盘缓存),
  记录层与五个写入点已由道F task-10 / 道G task-12 落地,本批只补页面;
  ui_page_runreport 为 13 行 2 页只读统计,四个数逐个挂范围标签
  (自电池周期 / 本次开机),boot_ready=0 显 "--" 不显 0。
- 数据面:ui_data_info_t 尾部追加 9 字段,ui_data_feed 用
  boot_stats_get() + iec104_serv_get_stats() 纯搬运;模拟器填确定值假数据
  (差异登记 docs/测试说明/模拟器差距清单.md §2.3 两行)。
- 接线:菜单树 6 叶绑 #page=,绑定叶 22→28、UI_PAGE_MAP_COUNT=28;
  字库 185→218 字 / 280→313 字形;双端注册 uvprojx +30、CMakeLists +6。
- 回归:内容页黄金 53→60(含 runreport_p2 真拍第 2 页),文本断言
  425 正向 / 36 反向;存量 53 张逐字节零漂移;记录 5 页各用独立空目录
  (模拟器把操作留痕写进 cwd 的 sim_oper.log,共用 tmp 会让空态拍不到)。

二、数据可信销项 + 「数据可信」任务卡号整族清退
- 删除已闭环的"已知电压注入验证"行与闭环结论块(证据在
  docs/硬件平台/ADC通道映射说明.md §8.1 与
  docs/测试说明/ADC前端注入验证流程.md §5~§7),§5 标识列改语义短语。
- 卡 0/0b/1~12 共 14 个号全仓 288 站点 / 56 文件清退成语义短语,
  代码注释、测试、门禁配置与文档一并改;换算表入 docs/编号规范.md §9.3。
  这一族是中文前缀,不进 check_ids 语料,刻意不入 id_aliases.json。

验证(实测)
- @build 0 错 0 警:Code=236456 RO=28124 RW=1876 ZI=137084;
  RAM +464 B(RW +304 / ZI +160),RW_IRAM1 62.2% / RW_CCM 87.9%,
  体积同码凭证与 RAM 台账已回填。
- check_menu_rows 8 状态 rc=0(池 5368/5448 常量未动);
  check_content_pages 60 页 rc=0;check_font_charset / registration /
  coding-standard / bom-drift / mojibake / doc-links --all / layer-deps /
  nested-comment 全 rc=0;check_ids --strict 无错误;主机单测
  ui_data 295 / boot_stats 21 / sys_log_mcu 141 / soe 32 / soe_store 27。

未做(不是遗漏)
- 六页真机判据(真记录翻页、掉电保持、清除后归零、boot_count 自增、
  拔 RTC 电池落 RESTARTED、IWDG 复位落 rst_cause、主站连一次 conn_up+1)
  已登记 docs/任务规划/登记簿.md §7;模拟器结构上照不到。
- docs/产品需求/产品需求设计文档.md 属另一条在飞改动,本笔不含;
  其中我已同步 6 处现状数字(28 叶 / 60 页 / 218 字),随该笔入库。
2026-10-28 07:23:16 +08:00

2222 lines
88 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": 86.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/",
"docs/硬件平台/",
"tools/netlist_semantics/"
],
"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]+$",
"N-1"
],
"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 钩子。"
],
"tc_freeze_2026_10_27": "批次三裁定(用户 2026-10-27「批次三,不做」):TC 族保留现存号但**即日停发**,不是暂缓、也不是可以清号。34 个按套件划分的 TC 子族已置 frozen=true,游标冻结在裁定日该套件存量最高号(字符串形态——整型比较会静默不生效);其中 5 个游标低于存量已抬到水位:TC-HOST-PROTELEM: TC-PROTELEM-013→TC-PROTELEM-015;TC-HOST-SYSLOG: TC-SYSLOG-108→TC-SYSLOG-137;TC-HOST-ADCHEALTH: TC-ADCHEALTH-011→TC-ADCHEALTH-023;TC-HOST-ADCCAL: TC-ADCCAL-017→TC-ADCCAL-023;TC-HOST-I104SRV: TC-I104SRV-041→TC-I104SRV-053。通用 TC 族同样置 frozen=true 但 cursor 仍为 null:单一游标表达不了每个模块码的水位,它的停发由三条兜住——per-suite 游标(校验 5 咬越游标新号)+ 校验 3(新号没进属主登记处=悬空,错误级)+ docs/编号规范.md §9.1 冻结水位(只减不增)。新用例一律用语义化测试函数名 + 文档表格行名,不再配 TC- 号(含只在文档表格里补定义行的情形)。",
"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": "2026-10-26 方案 B 停发:存量号已全部转语义短语(docs/编号规范.md §4.1.1),游标冻结不前进,旧号在 id_aliases.json 标 retired-to-phrase;本族登记只为冻结历史行不报未登记前缀",
"adjacent_cues": [
"登记簿"
],
"retired": "2026-10-26 方案 B 转语义短语"
},
{
"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": "2026-10-26 方案 B 停发:存量号已全部转语义短语(docs/编号规范.md §4.1.1),游标冻结不前进,旧号在 id_aliases.json 标 retired-to-phrase;本族登记只为冻结历史行不报未登记前缀",
"adjacent_cues": [
"登记簿"
],
"retired": "2026-10-26 方案 B 转语义短语"
},
{
"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": "2026-10-26 方案 B 停发:存量号已全部转语义短语(docs/编号规范.md §4.1.1),游标冻结不前进,旧号在 id_aliases.json 标 retired-to-phrase;本族登记只为冻结历史行不报未登记前缀",
"adjacent_cues": [
"登记簿",
"专项"
],
"retired": "2026-10-26 方案 B 转语义短语"
},
{
"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/任务规划/登记簿.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": true,
"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 自动协商不兼容)已于批 7 统一为 TRAP-NET-05(6 处,改名工具已解除对本目录的排除);本目录**仍不在门禁扫描语料内**:粗测有约 4200 处 R/C/D/J/X/U/T 位号,位号类型识别做完前纳入会让 --strict 天天为位号拦提交,那等于把闸门变成噪音源。ADC 域 01~02(属主 docs/问题记录/ADC_Trap_Records.md,2026-10-27 新增:DMA 乒乓缓冲 +2 格相位旋转、RTOS 期校准被节拍打断)。",
"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": "2026-10-27 批次一收口:**本族即日停发**,全仓引用改「条目名 + §7 落点」(映射 scripts/rename_maps/batch7-f-net-semantic.json,旧号见 scripts/id_aliases.json 标 retired-to-phrase)。属主登记处 docs/网络/网络自愈架构设计.md §7 保留 12 条编号仅作历史对照(定义行不算引用);孤儿号 F-DRV-9 已删号留事实、未补定义。三模块各自有最高号(NET 17 / DRV 13 / MS 9),单一 cursor 表达不了 → 不冻结游标,靠 §8 校验 3 + 别名表 + 评审兜住「新增引用」",
"adjacent_cues": [
"自愈",
"功能",
"改进"
],
"retired": "2026-10-27 批次一转「§7 条目名」并停发;新号由校验 3 拦截,旧号 retired-to-phrase 只读"
},
{
"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<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": [
"规划",
"保护",
"分层"
],
"retired": "2026-10-27 批次二转功能名并停发(docs/编号规范.md §4.1 已停发栏);新号由 §8 校验 3 拦截,不冻结数值游标(各段最高号不同)"
},
{
"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"
],
"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"
],
"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"
],
"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/任务规划/登记簿.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(原属主文档 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": "2026-10-26 方案 B 停发:存量号已全部转语义短语(docs/编号规范.md §4.1.1),游标冻结不前进,旧号在 id_aliases.json 标 retired-to-phrase;本族登记只为冻结历史行不报未登记前缀",
"adjacent_cues": [
"复审",
"专项"
],
"retired": "2026-10-26 方案 B 转语义短语"
},
{
"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": "2026-10-26 方案 B 停发:存量号已全部转语义短语(docs/编号规范.md §4.1.1),游标冻结不前进,旧号在 id_aliases.json 标 retired-to-phrase;本族登记只为冻结历史行不报未登记前缀",
"adjacent_cues": [
"复审",
"专项"
],
"retired": "2026-10-26 方案 B 转语义短语"
},
{
"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",
"cursor_note": "2026-10-26 方案 B 停发:存量号已全部转语义短语(docs/编号规范.md §4.1.1),游标冻结不前进,旧号在 id_aliases.json 标 retired-to-phrase;本族登记只为冻结历史行不报未登记前缀",
"retired": "2026-10-26 方案 B 转语义短语"
},
{
"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"
],
"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(原属主文档 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": "2026-10-26 方案 B 停发:存量号已全部转语义短语(docs/编号规范.md §4.1.1),游标冻结不前进,旧号在 id_aliases.json 标 retired-to-phrase;本族登记只为冻结历史行不报未登记前缀",
"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 簇",
"retired": "2026-10-26 方案 B 转语义短语"
},
{
"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 引脚功能名同形,不做全库判定",
"cursor_note": "批次四登记真空白面:pattern 最高只到数字 3,即使 frozen 校验 5 也碰不到新写法;停发靠 §3.3 禁令 + 评审——别把「存量已清零」读成「机器已关闭」"
},
{
"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": true,
"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": true,
"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": true,
"cursor": "TC-PROTELEM-015",
"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": true,
"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": true,
"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": true,
"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": true,
"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": true,
"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": true,
"cursor": "TC-SYSLOG-137",
"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": true,
"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": true,
"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": true,
"cursor": "TC-CONLOG-179",
"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": true,
"cursor": "TC-ADCHEALTH-023",
"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-ADCCAL",
"class": "TC",
"title": "主机侧单测用例号:L1.5 通道标定折算(test/host/adc_cal,道A 标定折算与落盘整定)",
"pattern": "\\bTC-ADCCAL-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/adc_cal/*"
],
"scope": "global",
"frozen": true,
"cursor": "TC-ADCCAL-023",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21,同 TC-HOST-ADCHEALTH 先例;2026-10-25 道A 标定折算建族):属主登记处 = 单测代码目录,不逐号补文档",
"cursor_note": "游标按建族时实测最大号收录(2026-10-25):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-UIDATA",
"class": "TC",
"title": "主机侧单测用例号:UI 数据快照层与跨层契约一致性(test/host/ui_data,道E task-14)",
"pattern": "\\bTC-UIDATA-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/ui_data/*"
],
"scope": "global",
"frozen": true,
"cursor": "TC-UIDATA-029",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21,同 TC-HOST-ADCCAL 先例;2026-10-25 道E task-14 建族):属主登记处 = 单测代码目录,不逐号补文档;本族号同时是 UI 不透明编号与 App 枚举的现场核对锚(SOE 类型/元件号)",
"cursor_note": "游标按建族时实测最大母号收录(2026-10-25):越界即视为未登记的冒号牌;2026-10-27 Lead 按交付号实抬"
},
{
"name": "TC-HOST-PROTDIM",
"class": "TC",
"title": "主机侧单测用例号:量纲回归(test/host/prot_dim,道A 量纲回归用例)",
"pattern": "\\bTC-PROTDIM-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/prot_dim/*"
],
"scope": "global",
"frozen": true,
"cursor": "TC-PROTDIM-010",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21,同 TC-HOST-ADCHEALTH/TC-HOST-ADCCAL 先例;2026-10-25 道A 量纲回归用例建族):属主登记处 = 单测代码目录,不逐号补文档",
"cursor_note": "游标按建族时实测最大号收录(2026-10-25):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-VOLSYNC",
"class": "TC",
"title": "主机侧单测用例号:写回缓存空闲 flush(test/host/vol_idle_sync,道F 批 2)",
"pattern": "\\bTC-VOLSYNC-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/vol_idle_sync/*"
],
"scope": "global",
"frozen": true,
"cursor": "TC-VOLSYNC-012",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21,同 TC-HOST-ADCHEALTH/TC-HOST-ADCCAL 先例;2026-10-25 道F 批 2 建族):属主登记处 = 单测代码目录,不逐号补文档",
"cursor_note": "游标按建族时实测最大号收录(2026-10-25):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-MEAS",
"class": "TC",
"title": "主机侧单测用例号:遥测快照层(test/host/meas,道D 遥测快照发布)",
"pattern": "\\bTC-MEAS-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/meas/*"
],
"scope": "global",
"frozen": true,
"cursor": "TC-MEAS-011",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21,同 TC-HOST-ADCHEALTH/TC-HOST-ADCCAL 先例;2026-10-25 道D 遥测快照发布建族):属主登记处 = 单测代码目录,不逐号补文档",
"cursor_note": "游标按建族时实测最大号收录(2026-10-25):越界即视为未登记的冒号牌"
},
{
"name": "TC-HOST-RUNPAR",
"class": "TC",
"title": "主机侧单测用例号:运行参数段(test/host/run_par,道D 已交付)",
"pattern": "\\bTC-RUNPAR-[0-9]{1,4}[a-z]?\\b",
"digit_width": [
2,
4
],
"owner_docs_glob": [
"test/host/run_par/*"
],
"scope": "global",
"frozen": true,
"cursor": "TC-RUNPAR-008",
"cursor_owner_only": true,
"check_dangling": true,
"allow_orphans": true,
"subitem_ok": true,
"owner_note": "B 层口径(用户裁定 2026-10-21,同 TC-HOST-MEAS/TC-HOST-ADCCAL 先例;2026-10-25 道D 运行参数段建族):属主登记处 = 单测代码目录,不逐号补文档;路由顺序证据链在 TC-IEC104-029(test/host/iec104)",
"cursor_note": "游标按建族时实测最大号收录(2026-10-25):越界即视为未登记的冒号牌"
},
{
"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": true,
"cursor": "TC-IEC104-034",
"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);2026-10-27 Lead 按交付号实抬"
},
{
"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": true,
"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": true,
"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": true,
"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": true,
"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-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": true,
"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-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": true,
"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": true,
"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": true,
"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": true,
"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": true,
"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": true,
"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": true,
"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": true,
"cursor": "TC-I104SRV-053",
"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 里记账。",
"excluded_paths_note": [
"docs/硬件平台/ :2026-10-26 补齐——规范 §8 一直写着排除,registry 却没写进去,导致位号与网表复核条目被扫成编号(实测报 28 处错误,其中校验 1 把器件型号 FOC-817、网表复核条目 C-1~C-10/A-10/A-11 全部当自造号)。位号识别仍保留作为第二道保险"
],
"cleared_2026_10_26": {
"note": "2026-10-26 清号批次:这些族的字面量已从活文档与代码注释中删除(属主登记处已删除或从未启用)。族定义保留在本文件里只有一个目的:让历史行、[示例]/[计划] 行与别名表不触发校验 1。不得新增引用;新增会被校验 3/5 拦下。可清单位:全仓零引用后可连族带别名一起删除。",
"families": [
"E-AUD",
"P-AUDIT",
"N-RPT",
"D-RPT",
"S-RPT",
"R-RPT",
"F-RPT",
"U-RPT",
"S-REVIEW",
"A-REVIEW",
"B-AUDIT",
"T-LDG",
"S-LDG",
"I-ORPHAN",
"WAVE-TASK",
"TM",
"DP-LEGACY",
"DP",
"H-GAP",
"L-GAP",
"GAP",
"DR",
"RC",
"MS-TGT",
"GEN",
"WI",
"OQ",
"RSK",
"SC",
"ST",
"CS",
"UL",
"LAT",
"DEF",
"PAT",
"TRAP-NOMOD",
"TC-NOMOD",
"TC-UPPER"
]
},
"retired_to_phrase_2026_10_26": {
"note": "用户裁定方案 B:规划/待办类编号(登记簿 N-x/S-x/T-x、专项 A-x、已删报告 UI 簇 U1~U5)一律转语义短语。族保留登记、游标冻结;引用侧同批改写约 418 处、字面量净减 443(8,946 → 8,503):活号 237 + 已销项死引用 196 + U 簇非位号约 45。短语表见 docs/编号规范.md §4.1.1。",
"families": [
"N",
"S-LDG",
"T-LDG",
"A-REVIEW",
"S-REVIEW",
"T-REVIEW",
"U-RPT"
]
},
"baseline_note": "2026-10-26 方案 B 曾把比例基线由 86.6% 下调到 85.9%(转短语消掉的全是「本可判定」引用,比值被稀释而不可判定绝对数未增;理由见 docs/门禁说明/id-check.md §7.6 与 docs/编号规范.md §8.1);同批新增第二根护栏 undecidable_total_ceiling 后,本文档又瘦身了一半,删掉的多是不可判定的历史号引用,两根护栏已按 --update-baseline 重打为比例 86.0% / 绝对数 1166(都只朝好的方向动)。",
"undecidable_total_ceiling": 1166,
"undecidable_ceiling_note": "不可判定引用绝对数上限(refs_total - decidable),只许减不许增;--update-baseline 同步下调且拒绝上调。加它的原因:比值会被清号动作稀释,绝对数不会。"
}