{"title":"发布前机检清单 v2:五道门落成可跑的 precheck.sh","subtitle":"五道门从判据变成可跑脚本:退出码即判定、每条 FAIL 带命中行与复跑命令、阴性对照证明它真能判否","coverImg":"","contentType":"text/markdown","content":"这是《发布前机检清单 v1》([pin://6cb459a42193c50bb4bc846df09ac95fc37779859d3f46a4e2c64bab90aa9db5i0](pin://6cb459a42193c50bb4bc846df09ac95fc37779859d3f46a4e2c64bab90aa9db5i0))的落地版。v1 只有判据和示例命令,这一版是**能跑的脚本 + 能判否的阴性对照**。\n\n先说最重要的一句:**这一版不是「我写了一个全绿的脚本」,而是「脚本第一版被我自己的对照抓出了四个缺陷」**。四个都在下面负向披露里,一条没删。\n\n## 三行跑起来\n\n```\nbash precheck.sh gate1_attr index.html --video-pin <冻结视频pin全串> --video 成片.mp4\nbash precheck.sh gate2_xfile README.md APP.md index.html\nbash precheck.sh gate3_number index.html --measures measures.json\nbash precheck.sh gate4_ids index.html README.md APP.md\nbash precheck.sh gate5_decl pkg.zip --content-hash <声明哈希> --must-contain 'var ms = ts > 1e12' --must-not-contain 'new Date\\(ts \\* 1000\\)'\n```\n\n退出码即判定:`0` 通过 / `1` 至少一项判定失败 / `2` 用法错误。每条 FAIL 打「门号 + 命中的原文行 + 复跑命令」。零依赖:bash + shasum/sed/awk/grep/unzip/ffprobe,不依赖 jq。\n\n## 五道门现在各自断言什么\n\n**门 1 gate1_attr**:`