merge: task/wave-record 合入 v2-on-ui(故障录波数据面与单通道回放页)

冲突两处与处置
- docs/子系统设计/故障录波设计说明.md §5.2:上游把这张表交给格式化器重排,多出一列
  空列,并把「FA_WRITE 竖线 FA_OPEN_APPEND」里的竖线当成分隔符打断,标志位写法已损坏。
  取我方四条陷阱版(含实现期复核新增的第四条:搬段途中环被解冻甚至已换段 → 关档后
  复检环侧身份判废),并把标志位里的竖线转义(与 运行与自检记录设计说明.md 同一写法)。
  上游在表后新增的「取窗竞态的原因」配图不是本任务内容,原样保留未删。
- scripts/size_attestation.json:不手工拼接,改为合并后在主树重新构建再重盖凭证。

顺手修一处上一轮我引入的排版断行
- docs/任务规划/数据可信.md §4.6.5「跨转换器相位」那一行少一个分隔符,三列表渲染成
  两列;同时把引用从 §7 精确回 §7.1(链路分段)。合并面 68 个文档、46 张表逐张核对
  列数一致,命中 0。

合并态权威构建(主树,本次凭证的来源)
- 0 错误 0 警告;Code=243,552 / RO=28,784 / RW=1,972 / ZI=145,388;RW_IRAM1 89,936 B
  (68.6%)/ RW_CCM 57,376 B(87.9%)——与任务树逐项相同:上游自 merge-base 起对代码
  只改了 sample_ring 的注释与函数头,故台账数字无需重排,仅重盖同码凭证。
- 上游 14 个提交带来的门禁与技能改造(skill-size 钩子、五个技能正文外置)与本波正交,
  真重叠只有 docs/门禁说明/README.md 与 docs/测试说明/主机单测覆盖率口径.md 两处,
  按 hunk 距离自动并上,已逐项核对。

状态与后续
- 台架三条判据(注 1 V/50 Hz 对表、FTP 拉回比对、与 meas 及 104 同表读数)按用户裁定
  保持未完成,卡片不销项;本笔交付的是软件闭环。
- 全仓计数清扫(主机单测 41 → 44 套、无专属钩子 19 → 22 套、黄金 60 → 66 张、提交
  钩子数口径、两处钩子显示名)另开一笔,不与本笔混编。
- docs/任务规划/** 本应在主工作树改,本波由用户在任务树显式豁免、随本笔合回。
This commit is contained in:
2026-10-29 19:32:26 +08:00
81 changed files with 8874 additions and 430 deletions
+15 -8
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""生成 docs/images/故障录波数据流.svg —— 录波段数据的四个所有者与四条「不许」。
"""生成 docs/images/故障录波数据流.svg —— 录波段数据的四个所有者、四条「不许」与四条已知陷阱。
为什么不用 Mermaid:本图要读的是**跨任务边界的所有权**——谁独占写、谁只能读、
标志怎么过界,并把「不许」画成红线贴在对应位置。Mermaid 的拓扑图表达不了「这块
@@ -29,7 +29,7 @@ OUT = os.path.join(ROOT, "docs", "images", "故障录波数据流.svg")
# ----------------------------- 画布与字体 -----------------------------
W = 1060
H = 702
H = 784
FONT = "Microsoft YaHei, Segoe UI, PingFang SC, sans-serif"
F_TITLE = 20
F_SUB = 12
@@ -73,12 +73,12 @@ BL_W = 430
BR_X = 494
BR_W = RIGHT - 494
C_TOP = 356
C_H = 136
CHIP_W = 316
C_H = 100
CHIP_W = 482
CHIP_GAP = 16
D_TOP = 514
D_TOP = 596
D_H = 132
FOOT_Y = 672
FOOT_Y = 754
# ----------------------------- 数据(改这里) -----------------------------
TITLE = "录波段数据的四个所有者 —— 谁独占写、谁只能读、标志怎么过界"
@@ -139,6 +139,11 @@ TRAPS = [
"处置:段名 = WAVE 加两位十进制再加 .BIN,轮转覆盖",
"目录 /wave 与 /log 平级,FTP 鉴权现成,零新代码",
]),
("陷阱四 · 落盘途中环被解冻或换段", [
"adcTask 优先级高于 defaultTask,搬段窗口里环可能自弃、甚至封出下一段",
"数据区 CRC 是对本道实际读到的字节算的 → 半新半旧照样自洽",
"处置:关档后复检环侧身份(sealed + last_t0_ms + last_seq),不符即判废",
]),
]
FORBID = [
@@ -252,8 +257,10 @@ box(BL_X, B_TOP, BL_W, B_H, LEFT_NOTE[0], LEFT_NOTE[3], LEFT_NOTE[1], LEFT_NOTE[
box(BR_X, B_TOP, BR_W, B_H, READERS[0], READERS[3], READERS[1], READERS[2])
for i, (head, lines) in enumerate(TRAPS):
x = PAD + i * (CHIP_W + CHIP_GAP)
box(x, C_TOP, CHIP_W, C_H, head, lines, C_AMBER, BG_AMBER)
# 每行两块、共两行:四块并排会超出画布,缩字号不可接受(宁可加高画布)
x = PAD + (i % 2) * (CHIP_W + CHIP_GAP)
y = C_TOP + (i // 2) * (C_H + CHIP_GAP)
box(x, y, CHIP_W, C_H, head, lines, C_AMBER, BG_AMBER)
rect(PAD, D_TOP, RIGHT - PAD, D_H, C_ROSE, BG_ROSE, dash="7,5")
text(PAD + 12, D_TOP + 23, "四条「不许」——上面那张图上没有箭头经过的地方", F_HEAD, C_ROSE, "700")