feat(门禁): 新增 mermaid-syntax 钩子,围栏内确定性语法提交前必拦

- scripts/check_mermaid.py(纯标准库):R0 围栏未闭合 / R1 图类型头缺
  错 / R2 -. 后直接跟管道(确定性语法错误形态)/ R3 subgraph 与
  sequence 块的 end 计数配对;--all / --selftest(5 形态)/ --prune;
  排除面与 doc-links 同口径;零语料空基线
- 接线 .pre-commit-config.yaml(doc-links 后),docs/门禁说明/
  mermaid-syntax.md 专篇(八段结构含限制与盲区),README 索引与
  AGENTS.md 计数 51→52、提交期实跑 48→49
- 门禁说明 README 顺带修正两处历史矛盾:gitlint 实际就在本配置
  (commit-msg 阶段),旧文「52−3−gitlint」与「gitlint 不在配置里」
  均过时——锚定口径 52 = 47 pre-commit + 3 manual + 1 commit-msg,
  加钩后 48 + 1 = 49;三处 grep 争执例句改抽象表述(例句里的数字
  自己会过时)
- docs/子系统设计/屏板链路设计说明.md:38 修复触发本钩子的坏图:
  -. 后直接跟管道不是合法边 operator,改为 -.->|label| 形态

实测:YAML 解析 52 / commit 阶段枚举 48 行全 Passed(含新钩子)/
check_mermaid --all 29 文件 60 块围栏 0 命中 rc=0 /
check_doc_links --all rc=0(215 文档)/ 六文件无 BOM/CR/U+FFFD。
This commit is contained in:
2026-10-30 11:03:58 +08:00
parent 2be49dc9dd
commit f8e62a9ba2
6 changed files with 477 additions and 16 deletions
+23
View File
@@ -187,6 +187,29 @@ repos:
MDK-ARM/RTE/|
docs/芯片手册/
)
# mermaid 图:围栏内确定性语法预检(第 52 条,2026-10-30 加,口径 51 → 52,提交期实跑 48 → 49)。
# 为什么要有:屏板链路设计说明.md §1 的 flowchart 里 `-.|"文字"|`(`-.` 直接跟管道,不是任何合法
# 箭头 token)让 mermaid 渲染 `Syntax error in text`——该图 2026-10-29 落库、期间 doc-links 等
# 全绿:文档门禁查链接与章节,**从不查围栏内图表语法**,这是它们的共同盲区。
# v1 只查「错了必渲染失败」三条(不重造解析器):R1 缺/错图类型头;R2 `-.` 后直接跟 `|`
# (带文字点线合法形态只有 `-.->|t|` 与 `-. 文字 .->`,selftest 证明两种合法形态不误伤);
# R3 flowchart 的 subgraph 与独占行 `end` 计数配对、sequence 的块起点与 `end` 计数配对。
# 存量基线:接线当日 --all 实测 29 个自有文件 60 块围栏、0 命中 ⇒ **空基线零语料**(还清类
# 先例:id-check-new);docs/芯片手册/ 是导入转录、围栏不受控,与 doc-links 同排除面不进语料。
# 自证:--selftest 五条(正例含三种合法点线 / 本坑形态必响 / 缺 end 必响 / 假头必响且
# sequence alt-else-end 不误伤 / 基线吞得下且清空后同命中算新发)。
- id: mermaid-syntax
name: "mermaid 围栏语法预检(图类型头 / 非法点线管道 / 块配对)"
entry: python scripts/check_mermaid.py
language: system
files: \.md$
exclude: |
(?x)^(
\.opencode/node_modules/|
Lib/lvgl/|
MDK-ARM/RTE/|
docs/芯片手册/
)
# 数值:README/AGENTS 任务表须与 Src/freertos.c 一致
- id: task-table
name: FreeRTOS 任务表一致性