feat(台架): V5 复跑判读脚本 v5_log_gap_report——静默段自动判类 + stall/MISS 双零计数

道F 批 2 支援 task-19(纯主机侧工具,零固件接触;合窗台架由 lead 执行,
本工具承担判读面)。

① scripts/v5_log_gap_report.py:输入 serial-assistant 落盘日志,自动列
   >=10s 静默段并逐段判类 NO-SOURCE / PROBE-WINDOW / BOOT-WINDOW /
   TRUE-STALL-SUSPECT——贴边证据 = 控制台两本账(CONSOLE dropped/tx fault)
   + syslog 三类 drop 的留痕行;口径唯一来源 = docs/子系统设计/
   控制台单写者日志设计说明.md 文末附录(2026-10-25 合并评估)。
   task stall 计数 + MISS start 开机良性豁免内建(实机指南 §9 第 8 条)。
   双钟源:采集相对钟 [+NNNms] 优先,缺行首钟退化设备绝对钟;RTC 前跳按
   会话边界处理不产假静默、回拨钳制;会话切分 = 相对钟回退或 reset cause
   锚点。--json 机读 / --report-only 只出报告 / --selftest 免台架自检。
   退出码 0=双零达标 / 1=违规 / 2=日志不可用 / 3=用法(沿用 scripts 惯例)。
② 用法十行落 docs/测试说明/实机测试实施指南.md §7.2(判据互链)。

【验证】py_compile 绿;--selftest 15/15 断言(双钟源、四类判定、良性豁免、
时钟边界、FAIL 判分路径全覆盖,断言即口径防漂移);真实样例三份:
B6 PROTECT_MISS = 2 条良性 MISS + 0 静默 + PASS;B9 prod = PASS;
probe_stale_gate = 124 时点/2 会话/PASS;合成负样例(stall 行 + 34s/28s
静默段)RC=1 且 28s 段判 PROBE-WINDOW——与 V5 时代 ~28s 静默签名吻合。

【门禁自查】doc-links 首跑拦下一处自引用错号(开机良性豁免条实在 §9 第 8 条
而非 §4.3——§4.3 属看门狗设计说明),指南与脚本头两处一并改齐后绿。
【越界】无——写域 = 看板声明两件(脚本 + 指南 §7.2 互链行)。
【门禁】脚本类无 -unit-test 钩子义务(判定面由 --selftest 承担)。
This commit is contained in:
2026-10-25 11:38:23 +08:00
parent 6f18f8d811
commit efc3ed1c61
2 changed files with 410 additions and 0 deletions
@@ -278,6 +278,15 @@ $cli = if ($env:DTU_STLINK_CLI) { $env:DTU_STLINK_CLI } else { (Get-Command ST-L
再现静默先按三本账(`dbg_console_dropped/_tx_fault/_tx_timeout`)+ syslog 丢弃
账对照定性,再决定是否开卡;销项条件 = N-17 修复版 V5 复跑(e02_probe + FTP
≥30 min)运行期 stall 与非开机 `MISS start` 双零。
- **判读工具(2026-10-25 起随单交付)**:
`'.venv/Scripts/python.exe' scripts/v5_log_gap_report.py <serial-assistant 日志路径>`
——自动列 `>10s` 静默段(`--gap-threshold-s` 可调),每段带判定(NO-SOURCE /
PROBE-WINDOW / BOOT-WINDOW / TRUE-STALL-SUSPECT)与贴边证据行;内置
`task stall` 计数与开机良性豁免(§9 第 8 条口径);退出码 0=双零达标 /
1=违规 / 2=日志无有效时戳;`--json` 机读、`--report-only` 只出报告、
`--selftest` 内嵌合成样例自检(无台架可跑)。口径唯一来源 =
`../子系统设计/控制台单写者日志设计说明.md` 文末附录 + §9 第 8 条——改口径
先改文档再改脚本(自检断言会拦漂移)。
**执行步骤**:长跑(§4.2 V5)期间周期性打点 + 对照 `CH395F` 无关的 SD2506 侧日志判别卡点。