docs(boot_log_data): f3rounds 验收两轮日志存档 + id-check 二进制工件跳过

道F task-22 commit 2/2(F1 票收尾)。素材 = 2026-10-25 最终主干 1a624b1(含看门狗
v1.5 按位分账 + F3 推流心跳边界)上的两轮 30min 判据轮;serial-assistant live 日志
按字节偏移切片(不 clear、行边界对齐),gz 前置 ASCII 头行记录偏移窗/负载定义/
v1.1 判据结论。原 megawin 16:18-16:48 摘录因 @test clear 轮转灭失(全盘无副本,
lead 核定非事故),归档位按裁改存这两只(v1.1 判据下的达标基线 + 残留真信号)。

轮①(:7003 relisten_stress 单独 30min,2200 connect/close 零拒绝)= PASS:
stall=0;MISS 758 条 NET 缺席=0(旧 12 条 NET 参与组合消失达成);uisn 在途峰
103ms / uis 完成峰 183ms / UI 周期最坏 254ms——F2 复合零误报 + F3 阻塞型治愈的
定案样本。sha256 前 16 = 383dd291f37c6a5d(gz 165KB / raw 1.87MB)。

轮②(e02_probe 单独 30min,50 掉线窗)= FAIL(如实申报,零放水):stall=8 = 3
事件(20:06:05/20:16:54/20:20:30;mask=0x1E7 纯 UI×7 + 0x167 UI+I104×1,h= 环全部
>=8 连窗真申报);饿死型证据链:每样本点 uisn=0 + mg=217/262 + 拖点在 feed/port
墙钟而非推流段——「reconcile 突发饿死 uiTask」登记行与 E-27/28 批 3 的直接立项
证据(lead 裁定单列,处置方向 = 优先级矩阵复核 / reconcile 突发分片让路两条)。
全窗无 IWDG 复位。sha256 前 16 = b44eb3371c25e04c(gz 79KB / raw 0.75MB)。

README §3 表首两行沿用 B6/B7 验收轮先例(第三列放判据摘要)+ 表后存档说明行
(判读证据存档 != [STACK] 水位快照;判据口径指针 §7.2/工具名)。

【配套门禁修复(越界申报,因果耦合)】id-check 对二进制工件按文本 errors=replace
扫描:gz 乱码流随机拼出「字母-数字」形态伪编号,把无关存量顶成校验 1 台账外新账
(本 gz 入库实测拦下提交;png 属同类侥幸未撞形态)。iter_files 增加二进制嗅探跳过
(gzip 魔数或头 2KB 含 NUL → binary_skipped),与 noise_literals/盲区同口径;
docs/门禁说明/id-check.md §6 第 9 条 + 变更记录同步。教训自含:修复说明里引用噪声
示例本身会被再扫一遍——文档措辞只描述形态不举例(本次真实返工一次)。
scripts/check_ids.py 可写工具面,非登记簿/单写者文件;.pre-commit-config.yaml 未动。

【门禁】本树补跑 @build 0/0 落 .map;--all-files 48 绿 0 红;uvprojx UV4 抖动未入库;
登记簿双销项 + 新语义行 = lead 单写,本提交不碰 docs/任务规划/**。
This commit is contained in:
2026-10-25 20:51:44 +08:00
parent e2d3f5114e
commit a92baa269e
5 changed files with 31 additions and 2 deletions
@@ -36,8 +36,14 @@
| 2026-10-12 | 同 PASS 固件(B7+fix)/ **PC 主站 2404 往返**(复测) | 同上全链 18/18 PASS——B7 `set_sealed`+持久化写路径下 C_SE→YX 联动仍成立(B5 遗留"104 YX 联动"腿闭环) | `20261012_B6_iec104_roundtrip_log.txt` |
| 2026-10-12 | 同 PASS 固件 / **B7 定值持久化 + 软压板 YK12 台架腿**(`test/host/iec104_master.py --b7-pre/--b7-post/--b7-mark/--b7-check`,中间 ST-LINK 复位) | pre **21/21**:C_SE 写 7.5+C_RD 回读、YK12 两段 OFF → 0.05 A 低定值**不动作**(保护退出)、YK12 ON → YX15/16 立即动作(COT=3)、收尾留压板退出;post **13/13**:**压板退出态跨复位保持**(开机日志 `global plate OUT -> protection disabled` + 低定值仍不动作)、重启后 YK12 ON 即动作(联动在位);mark/check **4/4+4/4**:**非默认定值 7.5 跨复位保持**(C_RD=7.500,与出厂默认可区分);开机日志两次 `[CFG] prot set loaded (/prot_set.bin)` | `20261012_B7_iec104_persist_log.txt` / `20261012_B7_persist_boot_log.txt` |
| 2026-10-12 | `prod`(B9 `1d96fc9` sync 追平 B8/N33 后重跑,merge `6cbf400` 覆盖代码)/ **B9 SOE 动作记录 + 时标台架腿** | `@test` **PASS**:锚点 `protection init: OK (set=40 elm=9)`、`freq layer init: OK`、`freq(hb): f=0 valid=0`(浮空不发散)、**`prot set blob version change (ver=1 cnt=32), defaults in use`**(B8 换代 INFO ≠ CORRUPT 实证)、零 `[ERR]`、`protect` 828/2048(59%,与静态 872 相符);主站回归 `--b7-pre` **21/21** + `--b7-post` **13/13** 不回归,**自发 YX = M_SP_TB_1 带 CP56 时标**(动作/复归/重启后联动三段,iv=0);FTP 下载 `/log/soe.log` **56 条** `test/host/soe/decode_soe.py --max-elm 16` **PASS**(boot 段内 seq 严格 +1、ELM_ASSERT 26、CP56↔epoch UTC 交叉一致);`.bin` 为原始 64 B 记录可复解码 | `20261012_B9_prod_boot_log.txt` / `20261012_B9_iec104_soe_pre_log.txt` / `20261012_B9_iec104_soe_post_log.txt` / `20261012_B9_soe_pre.bin` + `20261012_B9_soe_after_post.bin` / `20261012_B9_soe_decode_pre.txt` + `20261012_B9_soe_decode_post.txt` |
| 2026-10-25 | `prod`(最终主干 `1a624b1`:看门狗 v1.5 按位分账 + F3 推流心跳边界)/ **f3rounds 轮① :7003 relisten_stress 单独 30 min**(11×200=2200 个 connect/close 周期,零拒绝) | **v1.1 判据 PASS**:`task stall`=0;MISS 758 条中 NET 缺席=0(旧 12 条 NET 参与组合消失达成);推流段在途峰值 103 ms / 完成段 183 ms(UI 周期最坏 254 ms)——F2 复合零误报 + F3 阻塞型治愈的定案样本;gz 前置 6 行 ASCII 来源/判据头 | `f3rounds_r1_7003_churn_30min.log.gz` |
| 2026-10-25 | 同固件 / **f3rounds 轮② e02_probe 单独 30 min**(50 个探针掉线窗) | **v1.1 判据 FAIL(如实申报,零放水)**:stall=8 = 3 事件(20:06:05/20:16:54/20:20:30,miss=998-1000/1187-1189/1249-1250),mask=0x1E7 纯 UI 单串×7 + 0x167 UI+I104×1,h= 环全部 ≥8 连窗真申报;**饿死型**(每样本点 uisn=0、mg=217/262、拖点不在推流段而在 feed/port 墙钟)=「reconcile 突发饿死 uiTask」登记行与 E-27/E-28 批 3 的直接立项证据;全窗无 IWDG 复位 | `f3rounds_r2_probe_30min.log.gz` |
| 2026-10-21 | `prod` + **兜底新鲜度门停 TIM3 注入探针**(`task/adc-health-design-doc`,探针已撤)/ 开机 + 45 s | `protect` **620/2048(69%)**、`adc` 与 heap 水位同前;`[ERR][PROT] … blocked (hf=0x00000100)` +5462ms、`recovered` +5757ms、`health:` 0 次、`reset cause:` ×1 | `20261021_probe_stale_gate_boot_log.txt` |
> f3rounds 两只是**判读证据存档**(非 `[STACK]` 水位快照):源为 serial-assistant live 日志的
> 字节偏移切片(不 clear、行边界对齐),gz 前置 ASCII 头行携带偏移窗、负载定义与 v1.1 判据
> 结论;判据口径 = `../实机测试实施指南.md` §7.2(v1.1),工具 = `scripts/v5_log_gap_report.py`。
## 4. 关联
- 沉淀约定:`../测试开发标准流程.md` §7.3
+7
View File
@@ -88,6 +88,12 @@
`scripts/rename_maps/` 里必然写着旧的非法形态),否则第一次提交就被自家审计表当"新账"拦下。
7. 校验 8 只许涨不许跌:好处是防退化,代价是**顺手写一个未登记族的号就会红**,哪怕与本次改动无关。
8. 它不懂"这个号该不该存在"。新增一族编号是否合理,仍是 `docs/编号规范.md` 的人工判断。
9. **二进制工件整体跳过**(2026-10-25 task-22 补):gz 串口存档 / png 等字节流没有编号语义,
按文本 `errors=replace` 解码后随机字节会拼出「字母-数字」形态的**伪编号**,把无关存量顶成
校验 1 的"台账外新账"(`boot_log_data` 落 f3rounds gz 时实测拦下提交——本节文字引用这类
噪声形态时同样会被扫,措辞必须只描述形态不举例)。判据 = gzip 魔数或头 2KB 含 NUL → 计入
`binary_skipped`,口径与 noise_literals/裸形盲区一致。**反向盲区也在案**:真编号若只存在于
二进制工件里,本门禁看不见——需要它可判定时就该以文本形态入库。
- **裸形多义是显式承认的盲区**(`docs/编号规范.md` §1 与 §4.4):同一个裸形字母在本仓可能同时是风险号、
档位、层号、元器件位号。所以裸形族**只在属主登记处文档内**判"越游标",文档外降级处理。本目录
@@ -116,5 +122,6 @@
| 日期 | 变更 |
|---|---|
| 2026-10-25 | 二进制工件跳过(§6 第 9 条):`iter_files` 按 gzip 魔数/头 2KB NUL 嗅探排除 gz/png 等,防乱码伪编号顶出校验 1 假新账(f3rounds gz 入库实测触发);602 处存量台账口径不变 |
| 2026-10-25 | 补「`owner_docs` ≠ 定义集」口径(§2 末条):`snapshot_only` 族的登记处挂在规范正文时,`_def_owners` 为空 → 只恢复可判定、不参与悬空/撞号/裸形/紧邻。基线 82.6% → **84.0%**(删《项目审查与优化建议报告》+ 补登 11 条已死号别名后重打,实测 84.02%、696 文件 / 10410 字面量) |
| 2026-10-23 | 首篇逐项文档(数据为当日实跑:551 文件 / 8868 字面量 / 台账 640 处 / 可判定 82.85%) |