Repository navigation
v0.1.18
matrix-tools v0.1.18:审计加实时进度行 + BOM「读不到」与「陈旧」分开报
修后台审计任务「Re-run audit for final truth」(bg_19b83328,900s 超时)暴露的两个问题。
一、超时后日志全丢
该任务的输出日志只有 59 字节(运行时那句 "Command timed out after 900 seconds"),
审计自己的输出一个字都没有。两个原因:
- stdout 块缓冲 ⇒ 实测整个运行期间日志文件 0 字节,只在进程退出时一次性落盘;
- 命令形状
... | grep ... | tail -15两端都缓冲,且开头白等 sleep 90。
改法:stdout 改行缓冲;新增 progress(),进度行写 stderr(stderr 默认行缓冲)——
写 stderr 不写 stdout 是刻意的:CI 里 audit.py > audit-report.txt 收集的是 stdout
(那份文件会被贴进漂移 issue),进度进的是日志,报告文件格式一个字不变。
进度分 7 个阶段,逐仓与 Release 对账逐仓报。
二、「读不到」混进了「漂移」
兄弟会话同名任务报出「❌ matrix.RemoteReadError: registry: 远端 tag 读不到…」——
那是 BOM 子进程崩了、audit 取它输出最后一行当漂移消息,读的人看不出这是读取失败
而不是产物陈旧(违反 #79)。
改法:gen_matrix_go.py 引入退出码契约(生产方是子进程、消费方是 audit.py):
0=一致 / 1=真漂移 / 2=读不到(判不了 ≠ 通过);读不到时给干净消息并返回 2,
不再抛裸 traceback;audit.py 用 classify_check() 分类,不靠猜消息文本。
三、该任务重跑(修正命令形状)
去掉 sleep 90、去掉管道过滤、日志直接落盘 ⇒ 54s、退出码 0、输出完整,
审计结论不变(24/24 仓成功 + ✓ 矩阵审计通过)。
详见 CHANGELOG v0.1.18。