# 125 evidence — 这一轮的测量工件与边界（引用任何一格之前先读）

本目录只有一件可执行的东西（`attribution-probe.sh`），它是**证据工具，不是仓库闸**：
不接 `make test`，不接任何 CI job，在这里跑绿不证明仓库的任何性质。

## 各文件是什么

| 文件 | 是什么 | 引用时的注意 |
| --- | --- | --- |
| `mutation-walk.txt` | 两段变异走查的**逐字**记录：第一段对五个 file locator 做七次字面替换看闸红不红（E 那条从三个方向各打一次），第六条 command locator 不在这一段里；第二段是加进套件的两条用例的归因矩阵 | 每一处 search / replace 都写全，可按字面复现；里面的 `source-register.md:NNN` 行号与 locator 计数是**捕获当时**的读数，账本追加后会位移 |
| `attribution-probe.sh` | 重建第二段那张矩阵的探针 | 见下节 |
| `owner-map.md` | 十个 owner 的 updated / unchanged / routed / not-applicable 逐条判定 | 其中 testing 一栏推翻过本文件早先一版的「无输出」判定，以现版为准 |
| `finding-dispositions.md` | 本轮评审发现的处置记录 | |
| `landing-base.txt` | 本轮候选所对的落地基线 sha | 分支 rebase 后必须与新基线同步，否则本地量出的 delta 与 CI 不是同一个面 |

## 探针的硬约束（改它之前先读）

- **绝不写调用者的检出。** 它在被测提交的一次性 detached worktree 里执行，调用者的工作树只被读一次（解析仓库根）。首版不是这样——固定文件名写在活动检出旁、退出时无条件删除、守卫从开跑时的备份无条件恢复——那会吞掉并发编辑、两次重叠运行互撞，本轮评审判为 P1 并已重写。**不要退回那个形态。**
- **它断言，不是打印。** 每一格声明自己必须产出的 rc，不符即非零退出。这一点本身被证过：把某一格的期望取反，运行报 `<-- MISMATCH` 与 `attribution_probe_failed`，rc=1。改动判定逻辑后要重做这个取反自证。
- **不探未提交的改动。** 默认 commit-ish 是 HEAD，矩阵归因的对象是**已提交的候选**。

## 为什么要有单例副本这一层

shipped 套件是 fail-fast：任何守卫变异都先撞红最早受影响的那条既有用例，后面的用例根本不执行，**在完整套件里做不出逐用例归因**。所以探针给每条新增用例各建一份单例副本，一次只施加一个变异。

四次归因尝试被撤回，连同原因一起留在走查里，因为方法比结论重要：改守卫的诊断串——撞到的是既有的 reworded-anchor 用例，什么也没归因到；一份副本里塞两条用例——红在第一条时第二条不执行；副本是临时的——构造过程无法复核；首版探针写进调用者检出——评审 P1。

## 这些数字不是什么

1. **不是行为实测。** prose 收尾规则在本仓没有可执行的行为 oracle。锚点闸钉住的是**规则在场与措辞**，不是模型行为差分。走查证明的是「**被锚定的那段字面**被删或被改写时闸会红」——**不是**「规则被改写时闸会红」。两者的差距是实测出来的：把查法那段的引导词改成「以下查法仅在用户明确要求时执行」，整条查法就变成可选，而六个 locator 全部照常解析、闸 rc=0。**适用条件被改动属于语义变化，本闸检不出，归评审与人读。**
2. **substring 锚钉字面不钉语义。** 六个 locator 都通过时，锚点之外的文字仍可能被掏空——这条边界不是声明，是套件里那条 boundary 用例执行出来的事实（mutant 1 那一格）。语义完整性归评审与人读。
3. **分行钉锚是归属选择，不是解析器限制。** 守卫会把一条 firing-path 里逗号分隔的多个 locator 拆开各自解析（见 `register-firing-path-resolution.rb` 的 locator 拆分与套件里的 multi_bad / multi_ok）。 本轮那条收尾规则被拆成四行分别钉锚，就是因为实测出只钉规则句时删掉查法三步仍能过闸。不要把它们合并回一行。

## 规则

- **落地后冻结。** 不得为让后来的结论更好看而编辑、重判或重生成这些文件。要推翻某个读数就放新的测量并说明。
- **改了被测面就重跑，不要引用旧读数。** 走查里的行号、locator 计数与守卫输出都会随账本追加和 rebase 漂移；重跑的命令写在文件头，一条就能复现。
- **无凭据、无主机路径、无第三方内容。**
