Files
MailUI4Agents/deploy
JianFeeeee ba5720573e 修我自己的 60d59f9: check-relay-counts.sh **改名为 recount-relay-counts.sh** —— 它让 HEAD 上一条既有判据**变红**
★ 缺陷(我自己引入的,pi 127746b5 指出、我复核确认):
  我把脚本命名成 `deploy/check-*.sh`,而本仓那条命名族由
  `client/electron/test/criteria-hygiene.test.mjs` 用 readdirSync().filter(/^check-.*\.sh$/)
  **强制接线**:凡 check-*.sh 必须被 install.sh / redeploy-*.sh 在可执行位置调用。
  ⇒ 我的脚本 0 调用者 ⇒ **实测该判据由 7/7 绿变 6/7 红**("这些政策门禁写了却没有任何入口脚本调用")。
  ⇒ 即: 我一边在信里报"判据在但走不到",一边**自己造了一个走不到的判据**。

★ 但接线是**错的解** —— 它按性质就不是门禁(只读、依赖生产库、断的是库的不变量):
   · 接 install.sh ⇒ 读 /opt/agentmail/data/agentmail.db,**新机器没有该库**
                     ⇒ 实测 AGENTMAIL_DB=/nonexistent 时 rc=1 ⇒ **每次全新安装假红**
   · 接 redeploy-* ⇒ 库是活的、计数会漂 ⇒ 会去**回滚一次正确的部署**
  ⇒ 正确修法是**改名**,进入"按需工具"族(prune-* / archive-* / reset-* 同族),
    并把这条理由写进文件头,免得下一个人再犯。

★ 顺带暴露那条判据的一格(它的自称 vs 它的机制不是一回事):
   自称: 按**性质**分 —— "宣称是政策/门禁的 check-*.sh;不管 check-deploy-drift.mjs 这类按需手动工具"
   机制: 按**扩展名**分 —— /^check-.*\.sh$/
   ⇒ 两个方向都可观察:
     误报(FP): 按需工具 + .sh 后缀 ⇒ 被当门禁(**我这次**)
     漏报(FN): 真门禁 + .mjs 后缀 ⇒ **逃过检查**(实测 check-plugin-snapshot.mjs 被
              redeploy-plugin.sh:218 真实调用,是真门禁,却因 .mjs 不被该判据覆盖)
   ⇒ 这是 pi 那条⑬"判据的动作与它被许诺的范围不匹配"的又一实例。判据本身未改(不在本次范围)。

★ 同时确认别人的修正: 2f0d77a 把我两条 **假红** 断言修对了(我复核成立):
   · `HOMEAGENT == SUBSTR_N - PREFIX_N` ⇒ ⊆: 注入第五族 `pi-failure:` 时差集 +1 而 homeagent 不变,
     旧式**假红**(新增命名是正常演进)✓
   · `RESIDUE == 2 && UNBOUND == 1` ⇒ 只打印 + 用"未绑定 ⊆ 占位"承接:
     清掉那行化石是**正确维护动作**,旧式把正确动作判成失败 ✓
   ⇒ 我的两条确实是把"恰好如此"当成了不变量。**如实记**: 代价是变异④(rename homeagent 族)
     从"被抓"变成"存活" —— 那是"过严"与"漏报"的取舍,我取后者(假红会让人不信判据)。

★ 门禁族数量仍为 3(判据反空真要求 >=3)✓;脚本 rc=0;13 条断言全绿。
★ 边界: 只读查库;**生产未动**;未改那条既有判据(属 client/electron/,非本次范围)。
2026-09-25 06:25:21 +08:00
..