JianFeeeee
33488760ce
fix(相位/安全): 部署门禁只判产物自证;静默 break 改成出声;内核读数带时间坐标
pi 2026-09-14 的裁定与两条更正,逐条落地。
1. **相位裁定(选 c)**:`packaging`/`build-stamp` 属于**构建相位**,不属于安装相位。
`run-all.mjs` 现在有相位:`AGENTMAIL_CRITERIA_PHASE=install`(部署门禁用)。
每条判据登记它读的哪一侧(`ARTIFACT`/`SOURCE`),install 相位里出现 SOURCE 侧判据 → 红;
被跳过的判据**点名打印**,不静默丢。汇总打 `RESULT phase=build|install`。
规则入册 `test/CRITERIA.md` §11(含三个真实实例:check-shared-libs 恒红、
packaging 一改前端就卡死、HOME 在门禁跑完之后才炸)。
安装相位**真正能判的那一半**:`deploy/install.sh` 读**产物自证**(不重算 dist)——
`releaseCandidate !== true` → 拒绝;产物 `gitRev` ≠ HEAD → "这个包比源码旧" → 拒绝;
放行要显式 `--allow-dirty` / `--allow-stale`;`--check` 干跑只报结论不拦。
实测干跑输出:`产物:gitRev=6702cc2 树=dirty releaseCandidate=false | 当前 HEAD=6702cc2`
→ 报"不是发布候选 + 正式安装会被拒绝 + 要放行请显式说清"。
2. **别解析运行器文本**(pi §5):`broken`/`red` 的判定改成按 TAP 的**名字**——
文件级失败的测试名就是路径,断言失败的名字是判据名。变异双向验证:
未定义标识符 → 「跑不起来的判据」;把某条判据条件改成假 → 「红的判据」。
不再往关键字表里加补丁(那是往文本解析里加补丁,方向是错的)。
3. **静默 break 是安全相关**(pi §3):`session_update` 找不到活动会话时不再静默 break,
改成出声日志(走 journalctl 那条通道),写清两种成因(此刻没在跑 / **接管会话**重启后无法定位)、
方向(收紧被延迟)、以及兜底的**前提**("下次投递"要求这条会话还会收到新邮件)。
`lib/mail-session-id.js` 模块头同步改成安全相关措辞("人以为自己收紧了权限、实际没有"),
四桥逐字节同源,`check-shared-libs.sh` 退出码 0。
4. 内核读数补时间坐标(pi 13ea2fdf):`BUILD_INFO.txt` 里除原始 `dep`/`=>` 行外,
现在还有 `kernelBinMtime` 与**正在运行的进程启动时间** —— 二进制会在两次读数之间被换掉,
没有时间坐标的读数不成立。
2026-09-14 16:54:30 +08:00
..
2026-09-03 12:09:12 +08:00
2026-09-03 12:09:12 +08:00
2026-09-04 11:14:44 +08:00
2026-09-04 11:14:44 +08:00
2026-09-12 11:36:03 +08:00
2026-09-12 11:20:13 +08:00
2026-09-06 15:18:06 +08:00
2026-09-06 15:18:06 +08:00
2026-09-06 15:18:06 +08:00
2026-09-14 15:49:45 +08:00
2026-09-03 12:09:12 +08:00
2026-09-03 12:09:12 +08:00
2026-09-03 12:09:12 +08:00
2026-09-13 10:39:26 +08:00
2026-09-11 12:03:51 +08:00
2026-09-14 16:54:30 +08:00
2026-09-02 20:05:51 +08:00
2026-09-02 20:05:51 +08:00
2026-09-03 12:09:12 +08:00
2026-09-03 12:09:12 +08:00
2026-09-03 21:10:48 +08:00
2026-09-03 21:10:48 +08:00
2026-09-14 16:21:27 +08:00
2026-09-14 16:21:27 +08:00
2026-09-06 15:18:06 +08:00
2026-09-06 15:18:06 +08:00
2026-09-12 23:13:48 +08:00
2026-09-12 23:13:48 +08:00
2026-09-04 23:52:52 +08:00
2026-09-04 23:52:52 +08:00
2026-09-03 15:01:52 +08:00
2026-09-08 19:16:35 +08:00
2026-09-03 12:09:12 +08:00
2026-09-03 12:09:12 +08:00
2026-09-11 12:03:51 +08:00
2026-09-11 10:27:41 +08:00
2026-09-11 12:03:51 +08:00
2026-09-11 10:44:18 +08:00
2026-09-02 20:28:19 +08:00
2026-09-02 20:28:19 +08:00