Files
MailUI4Agents/deploy
JianFeeeee 1639382eaa fix(部署判据): ⑤ 的口径从「数子串出现次数」改成「只认源码**文件路径**」
## 起因

trimpath 修好之后(67 处 → 0 处真源码路径),判据第 6 条**仍红 1 处**。
查下去发现那 1 处不是缺陷:

    server/internal/handler/mail.go:645 的 400 错误文案 ——
    「请带上你所处工作区的绝对路径,例如 &workspace=/home/program/agentmail」

那是**给调用方看的示例值**,且它在二进制字符串表里紧邻下一条 SQL 字面量,
拼成 `…/agentmailINSERT INTO mails (session_id, …)` ——
**看起来极像「路径 + 代码」,实际是两条无关的字符串常量相邻**。

## ★★ 我上一轮把它误判成「测试夹具」

我grep 源码时命中的是 `notify_test.go` 里的 workspace 夹具,
就下了「是测试数据」的结论 —— 那是**另一个**字符串(`seedAdopted(t,"pi","pid-ws-1",
"/home/program/agentmail")`),只是恰好也含 REPO。
**真正的来源是生产错误文案。** 先下结论再取证,又一次。

## 口径改动

原口径 `text.split(REPO).length - 1` 数的是**子串出现次数**,把两件事混成一件:
  · 真缺陷:trimpath 没生效,产物里印着 `…/server/internal/repo/repo.go`
  · 误报:  源码里**本来就该有的字符串**恰好含这个子串

⇒ 改成逐个出现位置看**后缀**:REPO 之后是**源码文件扩展名**才是真路径。
这条判据要抓的是"源码**文件位置**被泄露",扩展名正是它的形状;
而示例值后面跟的是 `INSERT`(SQL 关键字),不是文件。

## 两条都要报(把两者混成一个数字正是原口径的毛病)

  bad   = 真源码路径 ⇒ **判红**
  other = 还有别处出现但不是文件路径 ⇒ **只提示**,且**给出真实样例**

第一版的"只提示"那档输出了「样例:见下」而样例永远取不到值
(只给真路径留了样例)—— 一句指向不存在内容的指路词。已修。

## 验证(两侧都用**真 26MB 二进制**,不是合成样本)

  已部署(-trimpath)    源码路径=0  非文件字样=1  ⇒ 判绿 ✓
  本地构建(无 trimpath) 源码路径=66 非文件字样=1  ⇒ 判红 ✓

## 自检

新增一格反面样本:`★网关二进制:非源码路径的仓库字样(示例值)不得误判红`
(`--self-check` 47 → **48** 格)。
变异验证:把 `SRC_EXT.test(tail)` 改成 `true`(退回数子串)⇒
该格**打红**且整套自检报"检查器本身不可信" ⇒ 新格确有分辨力。
2026-09-28 08:46:02 +08:00
..