JianFeeeee
788d7ccb20
修复: 条数登记校验**只在"绿"的那条路上** —— 文件越红,它的登记数越没人守(假绿方向)
设备在场时跑全套,顺手核了每个文件的『登记条数 vs 实际条数』,发现:
narrow-layout 登记=64 实际=88 exit=0 绿 ⇒ 校验生效(报了)
nav-merge 登记=8 实际=9 exit=0 绿 ⇒ 校验生效(报了)
background 登记=43 实际=44 exit=0 绿 ⇒ 校验生效(报了)
harmony-presets 登记=5 实际=6 exit=0 绿 ⇒ 校验生效(报了)
harmony-admin 登记=22 实际=27 exit=1 ★ 红 ⇒ 校验**走不到**(grep 0 命中)
根因:这条校验原来写在**最后一个 `else`**("退出码 0"那条路)里,而
`r.status !== 0` 会**先在 `else if` 里 reds.push 并跳过它**。
⇒ **文件越红,它的条数登记越没人守** —— 假绿方向:
harmony-admin 那多出来的 5 条判据**不在"被删会红"的保护内**,
而它恰好是红的 ⇒ **只要它一直红,缺口就一直是隐形的**;
等它修绿那天校验才第一次生效,那时多出来的几条可能早被删了。
(同族:`unlisted`/`blind`/`baseline=` 的结论到不了 `verdict`,§16.1。)
★ 而且这个缺口**已经真的吃过一次**:`c523c21`("邮件详情与「我的」页 1:1 对齐")
给 harmony-admin **+5 条判据**(它自己的 commit message 就写着 "+5"),
**却没同步登记数**,而当时该文件是红的 ⇒ 5 条新判据至今裸奔。
修法:把条数校验移进 `else { … }`(红绿都跑;先 push 退出码红,再判条数)。
⚠️ broken(崩了/一条条数都没自报)**不在这里**判 —— `diedWithoutReporting` 已吃掉它,
再叠一条"没找到自报条数"只是噪音:**"判据没答 ≠ 判据答错了"**(§17)。
并做那个"显式、可复核的编辑":登记数 22 → 27(和 c523c21 欠下的那 5 条对齐)。
变异验证:
· 红的 harmony-admin 登记数改 99 ⇒ 报『自报 27 条 < 登记的 99 条』✓
· 改成 27(对齐)⇒ **不报条数**、只剩"退出码 1" ✓
· 修后全套:red=10(harmony-admin 那条从"走不到"变成"报出来"后 +
对齐登记数又收回,净额 0),另 4 个绿文件的条数不符**照旧照报** ✓
`CRITERIA.md` 新增通用规则:**校验写在哪条分支上,决定它保护谁。**
凡"出错时要额外检查 X"的守卫,先问:**这条分支真红的时候,它还跑得到吗?**
2026-09-19 12:51:29 +08:00
..
2026-09-13 06:16:59 +08:00
2026-09-14 11:07:03 +08:00
2026-09-15 13:55:01 +08:00
2026-09-18 01:08:04 +08:00
2026-09-19 12:51:29 +08:00
2026-09-08 19:16:35 +08:00
2026-09-14 14:57:18 +08:00
2026-09-14 11:07:03 +08:00
2026-09-08 19:16:35 +08:00
2026-09-14 16:00:34 +08:00
2026-09-08 19:16:35 +08:00
2026-09-12 09:54:31 +08:00
2026-09-08 19:16:35 +08:00
2026-09-14 09:11:36 +08:00
2026-09-12 08:02:30 +08:00