docs(问题记录): 删除项目审查与优化建议报告,结论并入模块文档与编号规范

用户裁定:该报告大部分内容已闭环,可删除;仍有价值的迁到合适文档。删前逐条核对,
确认绝大多数结论在仓内早已有权威副本(LV_DRAW_SW_COMPLEX / osFlagsNoClear / SPI 分频 8
/ 分层反向依赖存量基线等),只迁真正独有的四类内容:

1. 暂缓理由与重开条件(三条量化门槛)→ RAM 使用分析与优化方案 §4,并明确「本节是唯一
   权威」,其它文档只留指针;同时把 10 处指向报告 §5.3 的重开条件引用改指该节。
2. 2026-10-22「常驻 vs 动态」三项诊断(静态前五块 43,462 B = 58%;动态面只有 heap_4,
   故栈余量=CCM 余量;栈深主因是日志/配置写链)→ 同文档 §2.5。
3. `_fp_digits` 1,018 B 删不掉的机理与 F-6 根因修法(Q10 宏改单精度,−332 B,4.49e6 例
   逐位等价)→ §2.6.4。
4. 「UI 侧缓冲进 CCM」要按 DMA 可达性二分(LVGL 池可进,帧缓冲/推流缓冲不可)→ 暂缓清单。

编号侧(报告曾是 6 个族的属主登记处):
- 原报告 §9 的 26 行「号 → 现在详述于」对照表迁到 docs/编号规范.md 新增 §4.5,6 族
  owner_docs 改指该节。规范正文含大量写法示例,直接当定义集会误伤,故 check_ids.py
  新增 `_def_owners`:snapshot_only 族剔除规范正文,只恢复可判定、不参与悬空/撞号/裸形
  /紧邻判定(实测若不分,裸形 S1 误报 238 条、S-3 与登记簿 S-3 误判重复定义)。
- 11 个已死号(N-03b/N-10~N-13/N-20/N-21/N-24/N-26/S-1/S-2)在 id_aliases.json 登记
  status=void 并写明去处——它们被约 110 处代码注释与文档引用,原先只靠「报告里顺带提过
  一句」才算有定义,报告一删就集体悬空。N-21/S-1/S-2 一号两义,注记已分别标明。
- 顺带修 id_aliases.json 的 note 被脚本累积重复 26 次;修 registry 里 3 处仍指向改名前的
  任务卡文件名(W1-采集保护收尾.md / W8-数据可信.md),以及 iec104_master.py 两处同类注释。

门禁:check_ids --strict 通过(可判定 8747/10410 = 84.02%,基线由 82.6% 抬到 84.0%);
check_doc_links --all --sections-strict 通过(177 文档);pre-commit 相关钩子全过。
This commit is contained in:
2026-10-25 02:08:58 +08:00
parent 1e6996ecd0
commit 15aa08552c
28 changed files with 258 additions and 874 deletions
+1 -1
View File
@@ -14,7 +14,7 @@
实测可把误报压到 0);昵称式引用如「内存方案 §2.1」不校验。
豁免(不算失效,不报错):
* 以 `[计划]` 前缀标记的路径(尚未创建的约定产物,见《项目审查与优化建议报告》D-3 建议)
* 以 `[计划]` 前缀标记的路径(尚未创建的约定产物,源于 D-3 建议)
* 含 `[示例]` 标记的行——引用报错样例 / 日志片段等含路径的引文
* 引用附近(±40 字符)出现「未创建/尚未创建/已删除/待排期」等状态词
* 含通配符 `*`、尖括号 `<模块>` 等占位符
+23 -16
View File
@@ -141,6 +141,13 @@ class Checker(object):
f["_re"] = re.compile(fam["pattern"])
f["_full"] = re.compile("^(?:%s)$" % fam["pattern"])
f["_owners"] = self._expand_owners(fam)
# 定义集属主 ≠ 登记处属主。冻结历史快照族(snapshot_only)的登记处只能挂在
# 规范正文(docs/编号规范.md §4.5 那种存档表)时,那张表**是存档不是定义**:
# 规范里还混着大量写法示例(`N-99`、`S1`、`N-31`),若进定义集会同时打穿
# 裸形判定(`S1` 被判成 `S-1` 的漏连字符,实测 238 条)与撞号判定(§4.5 的
# `S-3` 与登记簿 S-3 被判重复定义)。因此只对快照族做这个剔除。
f["_def_owners"] = ([o for o in f["_owners"] if o not in self.spec_docs]
if fam.get("snapshot_only") else f["_owners"])
f["_max"] = self._cursor_max(fam)
self.families.append(f)
# 长形态优先匹配:TC-UPPER 要先于 TC,避免大写后缀被当成合规
@@ -210,7 +217,7 @@ class Checker(object):
for rel in rels:
self.read(rel)
for fam in self.families:
for owner in fam["_owners"]:
for owner in fam["_def_owners"]:
self.owner_docs.add(owner)
self.owner_tokens[fam["name"]].update(
m.group(0) for m in fam["_re"].finditer(self.read(owner)))
@@ -298,7 +305,7 @@ class Checker(object):
self._check_frozen(rel, lineno, literal, fam)
self._check_dangling(rel, lineno, literal, fam)
self._check_adjacent(rel, lineno, literal, fam, line, start)
if rel not in fam["_owners"]:
if rel not in fam["_def_owners"]:
self.refs.setdefault(literal, set()).add(rel)
self._scan_malformed(rel, lineno, line)
@@ -308,7 +315,7 @@ class Checker(object):
if len(fams) == 1:
return fams[0]
for f in fams:
if rel in f["_owners"]:
if rel in f["_def_owners"]:
return f
for f in fams:
if f.get("adjacent_required") and self._has_adjacent_cue(f, line, start):
@@ -327,7 +334,7 @@ class Checker(object):
if literal in self.owner_tokens[f["name"]]:
return f
for f in fams:
if f.get("check_dangling") and f["_owners"]:
if f.get("check_dangling") and f["_def_owners"]:
return f
for f in fams:
if f["scope"] == "global":
@@ -339,7 +346,7 @@ class Checker(object):
for o in fam.get("owner_docs", []):
stem = o.rsplit("/", 1)[-1]
cues += [stem, stem.rsplit(".", 1)[0]]
for o in fam["_owners"][:6]:
for o in fam["_def_owners"][:6]:
stem = o.rsplit("/", 1)[-1]
cues += [stem, stem.rsplit(".", 1)[0]]
out, seen = [], set()
@@ -428,7 +435,7 @@ class Checker(object):
def _check_frozen(self, rel, lineno, literal, fam):
if not fam.get("frozen") or fam["_max"] is None:
return
if fam.get("cursor_owner_only") and rel not in fam["_owners"]:
if fam.get("cursor_owner_only") and rel not in fam["_def_owners"]:
# 裸形族(B5/C6/D7/M1/U3/R3/V5…)与位号、档位词、其它文档的同名清单大面积同形
# (§1.2 五义/四义)→ 越游标只在属主登记处文档内判,文档外不判(见 unmanaged_bare)
return
@@ -442,7 +449,7 @@ class Checker(object):
"该族已封闭,新条目改语义标识(§3.3);确需新号先改 docs/编号规范.md §4")
def _check_dangling(self, rel, lineno, literal, fam):
if not fam.get("check_dangling") or not fam["_owners"] or rel in fam["_owners"]:
if not fam.get("check_dangling") or not fam["_def_owners"] or rel in fam["_def_owners"]:
return
if rel in self.spec_docs:
# 规范正文里的 `N-99`→`N-100`、`Trap 07` 这类是**写法示例**,不是引用
@@ -463,14 +470,14 @@ class Checker(object):
if base != literal and base in self.defined_all:
self.stats["subitem_hits"] += 1
return
sev = fam.get("dangling_outside_owner", "error") if rel not in fam["_owners"] else "error"
sev = fam.get("dangling_outside_owner", "error") if rel not in fam["_def_owners"] else "error"
self.add(3, sev, rel, lineno, literal,
"悬空引用:%s 在属主登记处(%s)查无定义,也不在别名表里(§8 校验 3)"
% (literal, " / ".join(fam["_owners"][:2])),
% (literal, " / ".join(fam["_def_owners"][:2])),
"补定义行,或删引用(§5.5:销项 = 删行 + 清全库引用)")
def _check_adjacent(self, rel, lineno, literal, fam, line, start):
if not fam.get("adjacent_required") or rel in fam["_owners"] or rel in self.spec_docs:
if not fam.get("adjacent_required") or rel in fam["_def_owners"] or rel in self.spec_docs:
return
if "-" not in literal:
# 只约束连字符形态的文档内编号:裸形(A2/B5/U3/D7)与位号、档位词大面积同形
@@ -479,7 +486,7 @@ class Checker(object):
if self._has_adjacent_cue(fam, line, start):
return
owner = fam["owner_docs"][0] if fam.get("owner_docs") else (
fam["_owners"][0] if fam["_owners"] else "docs/<属主文档>.md")
fam["_def_owners"][0] if fam["_def_owners"] else "docs/<属主文档>.md")
self.add(6, "error", rel, lineno, literal,
"文档内编号未紧邻文档名:%s 属「%s」,跨文档引用必须写全属主(§5.2 / §8 校验 6)"
% (literal, fam["title"]),
@@ -520,7 +527,7 @@ class Checker(object):
allowed.add(frozenset((fam["class"], cw)))
defs = defaultdict(list) # literal -> [(class, family_title, owner_doc)]
for fam in self.families:
for owner in fam["_owners"]:
for owner in fam["_def_owners"]:
for line in self.read(owner).splitlines():
m = self.DEF_ANCHOR.match(line)
if m and fam["_full"].match(m.group(1)):
@@ -549,18 +556,18 @@ class Checker(object):
def check_orphans(self):
for fam in self.families:
if not fam.get("check_dangling") or not fam["_owners"]:
if not fam.get("check_dangling") or not fam["_def_owners"]:
continue
if fam.get("allow_orphans"):
# 属主登记处 = 代码的族(TC-HOST-*):号定义在测试函数上、本来就只在
# 自己文件里出现,按"无人引用"报孤儿是纯噪音(118 条),显式声明不判
continue
for lit in sorted(self.owner_tokens[fam["name"]]):
outside = {r for r in self.refs.get(lit, set()) if r not in fam["_owners"]}
outside = {r for r in self.refs.get(lit, set()) if r not in fam["_def_owners"]}
if not outside:
self.add(7, "warn", fam["_owners"][0], 0, lit,
self.add(7, "warn", fam["_def_owners"][0], 0, lit,
"孤儿条目:%s 定义在 %s,全库无引用(§8 校验 7)"
% (lit, fam["_owners"][0]),
% (lit, fam["_def_owners"][0]),
"确认已闭环可销项(§5.5),或补上引用")
# ---------- 报告 ----------
+2 -2
View File
@@ -15,7 +15,7 @@ r"""
自研生产源文件里有多少从未被任何主机单测编译过(未触及面 = 覆盖率的 0 分母盲区)。
为什么要它(2026-10-23,W5 验证常态):
docs/问题记录/项目审查与优化建议报告.md §4.8 记的两处空白之一:无覆盖率口径——
原评审报告 §4.8 记的两处空白之一(该报告 2026-10-25 已删除):无覆盖率口径——
L0.5 只回答“跑过哪些 TC”,回答不了“生产源码里哪些行根本没进过”。用例数与 TC 追溯率
会随时间上升,但覆盖率照的是另一类真相:**新增分支一行没测**(N-12/N-13 那类“读代码
才发现”的缺陷,覆盖率是最便宜的机器照法)。
@@ -67,7 +67,7 @@ r"""
- **PDB 里的源路径大小写会漂**(盘符、VS 根),比对前先按仓库实际拼写归一,否则同一文件
在基线里裂成两份。
设计依据:docs/测试说明/主机单测覆盖率口径.md;docs/问题记录/项目审查与优化建议报告.md §4.8 §5.5
设计依据:docs/测试说明/主机单测覆盖率口径.md
创建日期:2026-10-23
"""
+56 -8
View File
@@ -1,7 +1,7 @@
{
"schema": 1,
"generated_from": "docs/编号规范.md §7 迁移映射 + §4.3 冻结前缀;本表只登记**仓库里已实际出现**的旧字面量 → 现行字面量,不做尚未落地的批量改写(§7.2 阶段 1 一律保留存量)",
"note": "旧号引用不因本表而改写:本表只让门禁把「旧号引用」判成可解析(校验 3 悬空引用 / 校验 4 重复定义)。批量改写属 §9 阶段 1,须逐批 dry-run + 三重复核(§7.3)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。",
"note": "旧号引用不因本表而改写:本表只让门禁把「旧号引用」判成可解析(校验 3 悬空引用 / 校验 4 重复定义)。批量改写属 §9 阶段 1,须逐批 dry-run + 三重复核(§7.3)。 带 scope 的条目只在所列文件内生效(同一裸形字面量可能属多族,全局别名会把真撞号洗成已解析)。",
"aliases": {
"N-31": {
"to": null,
@@ -2706,7 +2706,6 @@
"note": "GD5F 存储域:Trap 01~07 → TRAP-GD5F-01~07(属主文档 7 个标题行为定义位,其余为引用)(scripts/rename_ids.py 批:族 TRAP)|旧号仅在本批 scope 内指向新号;scope 外同字面量属其它族,不受本条影响",
"scope": [
"docs/问题记录/GD5F2GQ5UE_Trap_Records.md",
"docs/问题记录/项目审查与优化建议报告.md",
"docs/测试说明/GD5F2GQ5UE_Test_Guide.md",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h",
@@ -2721,7 +2720,6 @@
"note": "GD5F 存储域:Trap 01~07 → TRAP-GD5F-01~07(属主文档 7 个标题行为定义位,其余为引用)(scripts/rename_ids.py 批:族 TRAP)|旧号仅在本批 scope 内指向新号;scope 外同字面量属其它族,不受本条影响",
"scope": [
"docs/问题记录/GD5F2GQ5UE_Trap_Records.md",
"docs/问题记录/项目审查与优化建议报告.md",
"docs/测试说明/GD5F2GQ5UE_Test_Guide.md",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h",
@@ -2736,7 +2734,6 @@
"note": "GD5F 存储域:Trap 01~07 → TRAP-GD5F-01~07(属主文档 7 个标题行为定义位,其余为引用)(scripts/rename_ids.py 批:族 TRAP)|旧号仅在本批 scope 内指向新号;scope 外同字面量属其它族,不受本条影响",
"scope": [
"docs/问题记录/GD5F2GQ5UE_Trap_Records.md",
"docs/问题记录/项目审查与优化建议报告.md",
"docs/测试说明/GD5F2GQ5UE_Test_Guide.md",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h",
@@ -2751,7 +2748,6 @@
"note": "GD5F 存储域:Trap 01~07 → TRAP-GD5F-01~07(属主文档 7 个标题行为定义位,其余为引用)(scripts/rename_ids.py 批:族 TRAP)|旧号仅在本批 scope 内指向新号;scope 外同字面量属其它族,不受本条影响",
"scope": [
"docs/问题记录/GD5F2GQ5UE_Trap_Records.md",
"docs/问题记录/项目审查与优化建议报告.md",
"docs/测试说明/GD5F2GQ5UE_Test_Guide.md",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h",
@@ -2766,7 +2762,6 @@
"note": "GD5F 存储域:Trap 01~07 → TRAP-GD5F-01~07(属主文档 7 个标题行为定义位,其余为引用)(scripts/rename_ids.py 批:族 TRAP)|旧号仅在本批 scope 内指向新号;scope 外同字面量属其它族,不受本条影响",
"scope": [
"docs/问题记录/GD5F2GQ5UE_Trap_Records.md",
"docs/问题记录/项目审查与优化建议报告.md",
"docs/测试说明/GD5F2GQ5UE_Test_Guide.md",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h",
@@ -2781,7 +2776,6 @@
"note": "GD5F 存储域:Trap 01~07 → TRAP-GD5F-01~07(属主文档 7 个标题行为定义位,其余为引用)(scripts/rename_ids.py 批:族 TRAP)|旧号仅在本批 scope 内指向新号;scope 外同字面量属其它族,不受本条影响",
"scope": [
"docs/问题记录/GD5F2GQ5UE_Trap_Records.md",
"docs/问题记录/项目审查与优化建议报告.md",
"docs/测试说明/GD5F2GQ5UE_Test_Guide.md",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h",
@@ -2796,7 +2790,6 @@
"note": "GD5F 存储域:Trap 01~07 → TRAP-GD5F-01~07(属主文档 7 个标题行为定义位,其余为引用)(scripts/rename_ids.py 批:族 TRAP)|旧号仅在本批 scope 内指向新号;scope 外同字面量属其它族,不受本条影响",
"scope": [
"docs/问题记录/GD5F2GQ5UE_Trap_Records.md",
"docs/问题记录/项目审查与优化建议报告.md",
"docs/测试说明/GD5F2GQ5UE_Test_Guide.md",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c",
"Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h",
@@ -3102,6 +3095,61 @@
"docs/硬件平台/V0.1_网表详细分析报告.md"
],
"note": "批 7:硬件网表报告里的裸形 Trap05 统一成 TRAP-NET-05(属主条目 docs/问题记录/CH395F_Trap_Records.md,语义 = CH395F 与 RTL8305 自动协商不兼容)。该目录仍不在门禁扫描语料内(约 4200 处位号噪声,位号类型识别未做前不纳入)。"
},
"N-03b": {
"to": null,
"status": "void",
"note": "报告 N-03b(IWDG / `configASSERT` / 两个钩子 / 4 个 Fault 现场)——属主文档 docs/问题记录/项目审查与优化建议报告.md 已于 2026-10-25 删除。现行去处:docs/子系统设计/看门狗设计说明.md §4.4、§10.1/§10.2 + AGENTS.md「平台约束」"
},
"N-10": {
"to": null,
"status": "void",
"note": "报告 N-10(UI accept 门控)——属主文档 2026-10-25 已删除。现行去处:docs/UI设计/RemoDispBus协议与接收设计说明.md §3、docs/子系统设计/看门狗设计说明.md §11.4;实施代码 Drivers/BSP/UI/ui_net_sink.c"
},
"N-11": {
"to": null,
"status": "void",
"note": "报告 N-11(NAND 直 DMA 调用方缓冲 / CCM 迁移硬边界,登记簿曾用 N-26)——属主文档 2026-10-25 已删除。现行去处:docs/内存管理/内存内容分配策略.md §3 + §4 规则 R1~R4 + §8;代码三层 = gd5f2gq5ue.h 编译期窗口断言 → nand_ftl.c 启动期自检 → gd5f_dma_buf_ok() 运行时强制"
},
"N-12": {
"to": null,
"status": "void",
"note": "报告 N-12(dhara 移植层 `is_free` 整页精度,登记簿曾用 N-21)——属主文档 2026-10-25 已删除。现行去处:docs/架构设计/STM32F4-Base存储架构说明.md §5.3 + 主机侧单测 test/host/nand_port/(含「旧算法只看页首 64 B」的对照用例)"
},
"N-13": {
"to": null,
"status": "void",
"note": "报告 N-13(移植层 HAL 越界守卫 + `DHARA_E_CORRUPT_MAP`,登记簿曾用 N-21)——属主文档 2026-10-25 已删除。现行去处:docs/架构设计/STM32F4-Base存储架构说明.md §5.3 + Drivers/BSP/GD5F2GQ5UE/nand_ftl.c 的 `ftl_page_in_range` / `ftl_block_in_range` 注释"
},
"N-20": {
"to": null,
"status": "void",
"note": "登记簿 N-20 = 报告 N-03c(`Error_Handler` 死循环统一降级),2026-10-15 销项删行。结论去处:docs/子系统设计/看门狗设计说明.md §4.4(含 `__builtin_return_address` 不可用的实证)+ Src/main.c 的 `USER CODE Error_Handler_Debug` 区注释"
},
"N-21": {
"to": null,
"status": "void",
"note": "本号两义,均已死:① 登记簿 N-21 = 报告 N-12/N-13(dhara 移植层两条硬约束),2026-10-15 销项删行 → docs/架构设计/STM32F4-Base存储架构说明.md §5.3;② 报告 N-21(时钟/对时,已闭环)→ docs/编号规范.md §4.5。存量引用几乎都是①"
},
"N-24": {
"to": null,
"status": "void",
"note": "登记簿 N-24 = 报告 N-16(日志读写放大:写侧合并 open/write/close + 读侧 8 条滑动窗口),2026-10-15 销项删行。结论去处:docs/子系统设计/运行与自检记录设计说明.md §4.4/§4.5 + App/log/sys_log_mcu.c 的 `s_format_rec` / `s_append_rec` / `s_append_many` / `s_read_raw` 注释"
},
"N-26": {
"to": null,
"status": "void",
"note": "登记簿 N-26 = 报告 N-11(DMA 可达性三层防线 + 规则族 R1~R4),2026-10-15 销项删行。结论去处:docs/内存管理/内存内容分配策略.md §3/§4/§8 + Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.h 的窗口断言块;负路径用例 TC-GD5F-704/705"
},
"S-1": {
"to": null,
"status": "void",
"note": "本号两义,均已死:① 登记簿 S-1(defaultTask 栈余量 3664B/4096 ≈10%,2026-10-04 登记),2026-10-10 削链销项 → 复测见 docs/内存管理/RAM使用分析与优化方案.md §4 阶段 0「不抬栈」小节;② 报告 S-1(分层反向依赖 BSP include App 的头)→ docs/门禁说明/layer-deps.md 与 docs/编号规范.md §4.5。存量引用几乎都是①"
},
"S-2": {
"to": null,
"status": "void",
"note": "本号两义,均已死:① 登记簿 S-2(启动日志固化流程,2026-09-22 提出、2026-10-05 固化后销项)→ docs/测试说明/boot_log_data/README.md;② 报告 S-2(跨模块裸 `extern`,2026-10-22 已闭环)→ 契约见 App/task/task_handles.h、gd5f_spi1_notify_*、net_msg_queue_adopt"
}
},
"id_aliases": {}
-60
View File
@@ -1106,66 +1106,6 @@
"literal": "gen 45",
"count": 1
},
{
"file": "docs/问题记录/项目审查与优化建议报告.md",
"code": 2,
"literal": "W1-0",
"count": 1
},
{
"file": "docs/问题记录/项目审查与优化建议报告.md",
"code": 6,
"literal": "P1-10",
"count": 3
},
{
"file": "docs/问题记录/项目审查与优化建议报告.md",
"code": 6,
"literal": "P2-10",
"count": 2
},
{
"file": "docs/问题记录/项目审查与优化建议报告.md",
"code": 6,
"literal": "P2-13",
"count": 1
},
{
"file": "docs/问题记录/项目审查与优化建议报告.md",
"code": 6,
"literal": "P2-14",
"count": 1
},
{
"file": "docs/问题记录/项目审查与优化建议报告.md",
"code": 6,
"literal": "P2-15",
"count": 1
},
{
"file": "docs/问题记录/项目审查与优化建议报告.md",
"code": 6,
"literal": "P2-5",
"count": 2
},
{
"file": "docs/问题记录/项目审查与优化建议报告.md",
"code": 6,
"literal": "P2-6",
"count": 1
},
{
"file": "docs/问题记录/项目审查与优化建议报告.md",
"code": 6,
"literal": "P2-8",
"count": 2
},
{
"file": "docs/问题记录/项目审查与优化建议报告.md",
"code": 6,
"literal": "P2-9",
"count": 2
},
{
"file": "scripts/README.md",
"code": 6,
+32 -27
View File
@@ -1,7 +1,7 @@
{
"schema": 1,
"generated_from": "docs/编号规范.md §4 编号空间总表(§4.1 在册 / §4.2 目标 / §4.3 冻结 / §4.4 划界)+ §6 模块码表 + §7 迁移映射。游标取「规范记载值」与「全库实测最大号」的较大者,实测偏差一律写进 cursor_note,不凭印象编。",
"decidable_ratio_baseline": 82.6,
"decidable_ratio_baseline": 84.0,
"spec_docs": [
"docs/编号规范.md"
],
@@ -351,7 +351,7 @@
"title": "里程碑目标形态 MS-<nn>(§4.2;存量 M1~M3)",
"pattern": "\\bMS-[0-9]{1,2}\\b",
"owner_docs": [
"docs/任务规划/W1-采集保护收尾.md"
"docs/任务规划/采集保护收尾.md"
],
"scope": "global",
"frozen": false,
@@ -688,7 +688,7 @@
"pattern": "\\bB[0-9]{1,2}\\b",
"owner_docs": [
"docs/任务规划/README.md",
"docs/任务规划/W1-采集保护收尾.md",
"docs/任务规划/采集保护收尾.md",
"docs/任务规划/排期详述.md"
],
"scope": "global",
@@ -757,7 +757,7 @@
"title": "里程碑 M1~M3(§4.2 目标 MS-<nn>;存量冻结)",
"pattern": "\\bM[1-3]\\b",
"owner_docs": [
"docs/任务规划/W1-采集保护收尾.md",
"docs/任务规划/采集保护收尾.md",
"docs/任务规划/README.md"
],
"scope": "global",
@@ -904,15 +904,15 @@
{
"name": "N-RPT",
"class": "N-RPT",
"title": "《项目审查与优化建议报告》自有编号 N-xx(§4.3 冻结历史快照)",
"title": "《项目审查与优化建议报告》自有编号 N-xx(原属主文档 2026-10-25 已删;登记处迁 §4.5,§4.3 冻结历史快照)",
"pattern": "\\bN-[0-9]{1,3}[a-z]?\\b",
"owner_docs": [
"docs/问题记录/项目审查与优化建议报告.md"
"docs/编号规范.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": null,
"check_dangling": true,
"check_dangling": false,
"dangling_outside_owner": "warn",
"adjacent_required": true,
"adjacent_cues": [
@@ -922,20 +922,21 @@
"collides_with": "N",
"cursor_note": "⚠ 与登记簿 N-x 同名不同义(§4.3 / AGENTS.md 模块约定)→ 引用必须紧邻「报告」或报告文档名",
"snapshot_only": true,
"snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走"
"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(§4.3 冻结历史快照)",
"title": "报告自有编号 D-x(原属主文档 2026-10-25 已删;登记处迁 §4.5,§4.3 冻结历史快照)",
"pattern": "\\bD-[0-9]\\b",
"owner_docs": [
"docs/问题记录/项目审查与优化建议报告.md"
"docs/编号规范.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": null,
"check_dangling": true,
"check_dangling": false,
"dangling_outside_owner": "warn",
"adjacent_required": true,
"adjacent_cues": [
@@ -944,20 +945,21 @@
],
"collides_with": "D",
"snapshot_only": true,
"snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走"
"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(§4.3 冻结历史快照)",
"title": "报告自有编号 S-x(原属主文档 2026-10-25 已删;登记处迁 §4.5,§4.3 冻结历史快照)",
"pattern": "\\bS-[0-9]\\b",
"owner_docs": [
"docs/问题记录/项目审查与优化建议报告.md"
"docs/编号规范.md"
],
"scope": "doc-scoped",
"frozen": true,
"cursor": null,
"check_dangling": true,
"check_dangling": false,
"adjacent_required": true,
"adjacent_cues": [
"报告",
@@ -965,20 +967,21 @@
],
"collides_with": "N",
"snapshot_only": true,
"snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走"
"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(§4.3 冻结;内存优化项)",
"title": "报告自有编号 R-x(原属主文档 2026-10-25 已删;登记处迁 §4.5,§4.3 冻结;内存优化项)",
"pattern": "\\bR-[0-9]{1,2}\\b",
"owner_docs": [
"docs/问题记录/项目审查与优化建议报告.md"
"docs/编号规范.md"
],
"scope": "global",
"frozen": true,
"cursor": "R-9",
"check_dangling": true,
"check_dangling": false,
"adjacent_required": true,
"adjacent_cues": [
"报告",
@@ -986,27 +989,29 @@
],
"cursor_note": "实测现存至 R-9(2026-10-15 落地);§1.2 记「R1=风险、R-2=内存优化项」同字母歧义",
"snapshot_only": true,
"snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走"
"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(§4.3 冻结历史快照)",
"title": "报告自有编号 F-x(原属主文档 2026-10-25 已删;登记处迁 §4.5,§4.3 冻结历史快照)",
"pattern": "\\bF-[0-9]{1,2}\\b",
"owner_docs": [
"docs/问题记录/项目审查与优化建议报告.md"
"docs/编号规范.md"
],
"scope": "global",
"frozen": true,
"cursor": null,
"check_dangling": true,
"check_dangling": false,
"adjacent_required": true,
"adjacent_cues": [
"报告",
"审查"
],
"snapshot_only": true,
"snapshot_note": "§4.3 冻结历史快照:只在引用写了文档名(紧邻线索)时参与定族,不参与「定义位优先」——避免同号把活登记处接管走"
"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",
@@ -1210,10 +1215,9 @@
{
"name": "U-RPT",
"class": "U",
"title": "报告 UI 标准化簇 U1~U5(§4.3 冻结历史快照)",
"title": "报告 UI 标准化簇 U1~U5(原属主文档 2026-10-25 已删;排期见 README §2.0 / 登记簿 U 簇,§4.3 冻结历史快照)",
"pattern": "\\bU[1-5]\\b",
"owner_docs": [
"docs/问题记录/项目审查与优化建议报告.md",
"docs/任务规划/README.md",
"docs/任务规划/登记簿.md"
],
@@ -1223,7 +1227,8 @@
"cursor_owner_only": true,
"check_dangling": false,
"dangling_note": "与 UI 状态机 U1~U15、位号 U17 三方同形(§4.4 位号目录已排除)→ 只拦越游标",
"cursor_note": "U1~U5 见报告 §6.5;W6 波次按此推进(docs/任务规划/README.md §2.0)"
"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",