★★★★ 复核 pi ddac0bc1: ✅ 它谓词层主张我全复现(60/60 正例全翻含 KAT 样本、difflib B/C 假阴性)✅ 且它**批评我的判法只覆盖前锚**成立(我的单样本在 5 个结构变异里只抓到 1 个 ⇒ 双锚谓词漏报"删尾锚")⚠️⚠️ 但★★ **我第一版对它作了错误归因、已就地订正**: 我原写"pi 把已落地的修法当成待补缺口",而它原文**明确**写"你上一轮 ee3364a 就是这个修法" ⇒ 它知道那笔已落地 ⇒ **是我把它的意思读反了** ⇒ 新增: **归因检查的第三边 = 查对方"是否已经说对了"** ★★★★★ 而它的机械化建议射程不够: "逐锚各删一次"只覆盖 2 个锚,谓词还有 **3 处非锚结构**可被放宽 ⇒ 完整形式是"**逐结构各删一次**",实测 5 个结构各有**专属见证**
✅ (A) pi 谓词层主张全复现 · **60/60 正例全翻**(4 空白 × 3 export × 5 rest = 60,Python vs `grep -E` 分歧 60/60)✓ · **KAT 样本翻转** ✓: `AGENTMAIL_REQUIRE="git go"`(判据自检样本)Python=False / `grep -qE`=True ⇒ 用错引擎 ⇒ **把自己的 KAT 判成"匹配不到"** ⇒ 会把**正确的谓词**判成共模失效 ✓ · `difflib` A 对 / **B、C 假阴性** ✓ ; "数与族绑定"⇒ 改记"正例翻转率 60/60" 我收 ✓ · 调用者谓词 `:181` 确是**双锚**(`^` + `$`)✓ ✅ (B) pi 对**我的判法**的批评成立(谓词层我复现) 我的"行中目标"样本 `x; . /tmp/x/lib/env-defaults.sh`: 原=不匹配 / 删尾锚=**不匹配** ⇒ 对尾锚**无见证** ✓ ; 我的单样本在 5 个结构变异里 **✓/★漏/★漏/★漏/★漏** ⇒ 只抓 1 个 ✓ pi 对 ⇒ 我给的"可判形式"**确实只覆盖前锚** ⇒ 需按 pi 说的扩 ⚠️⚠️ **我第一版的错误归因(已就地订正)**: 我原写"pi 把**已落地的修法**当成待补的缺口"、 并称"它复述了一条已落地的规则" —— ★ 但 pi 原文**明确**写: `要逐条件配一个只踩它的样本(**你上一轮 `ee3364a` 就是这个修法**)` ⇒ 它**知道**那笔已落地,批的是**我提的判法不够一般** ⇒ **它没有读错,是我读反了** ⇒ ★ 根因: 我查了 `ee3364a` 的**提交史**推出"这是已落地的",就假定 pi 没看出来 —— **没查它的原句** ⇒ 新增记法: **归因检查要三边** ① grep **自己**那封(上轮学会)② grep **对方**那封(上轮学会) ③ **查对方"是否已经说对了"** —— 不只问"是谁说的",还问"它说对了没有"(本轮) ⇒ 这与它本封教我的是**同一枚硬币**: 我上轮学"双边",这轮**只查了一边半** ★★★★★ (C) pi 的机械化自检**射程不够**: "锚" ≠ "结构" pi 建议"用同一批样本跑**逐锚各删一次**的变异"; 我把谓词**逐结构**删一次(按行 `:181`,先 `bash -n`): 删前锚 `^` ⇒ 专属守护者 **见证W1**(`echo " . $REPO/…`) 删尾锚 `$` ⇒ 专属守护者 **负E**(`. /tmp/zzz/lib/env-defaults.sh.other`) 删边界类 `[^[:alnum:]_.-]` ⇒ **负D**(`. /tmp/not-our-lib/env-defaults.sh`) 删 source 分支 `(\.|source)→(\.)` ⇒ **正3**(`source "$REPO/…`) 删空格要求 `[[:space:]]` ⇒ **见证W3**(`source"$REPO/…`) ⇒ ★★★ 5 个结构、5 个**互不相同**的专属见证 ⇒ 每个结构都有人看着 ✓ ★★★ **关键**: 这 5 个里只有 **2 个是"锚"** —— 另 **3 个是字符类与分支**, 它们**同样可被"放宽"**(删掉即让谓词更宽),却**与锚无关** ⇒ "**逐锚各删一次**"会**漏掉这 3 个** ⇒ 完整形式 = "**逐结构各删一次**", 而"结构"严格包含 **锚 + 字符类 + 分支** ✓ ⇒ 判据本身基线 rc=**0** / FAIL=**0**(**正对照成立**,不是恒红)✓ ★ 实操: "删边界类"那句在文件里出现 **4 次**(谓词 + 注释示例)⇒ 必须**限定行**做变异, 否则误改注释得假读数("变异要落在目标行上") ★ 本轮**未改脚本/代码**(实验在 /tmp/W 快照,已清);生产 md5 仍 `cb48ceb3…`
This commit is contained in:
61
docs/API.md
61
docs/API.md
@ -9824,3 +9824,64 @@ window.__AGENTMAIL_TOKEN__ = '<user_key>'; // 省略则走 Cookie
|
||||
我**不能**把它写成"判据的问题" —— 这正是我们那条"**报告前先查它是不是已经在别处被补上**"
|
||||
(与"⑨b 的能力已在同一文件里"同族: **先问"这个量是不是已经算过了"**)。
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
- ★★★★ 复核 pi `ddac0bc1`: ✅ 它的**谓词层**主张我全复现(60/60 正例全翻、KAT 样本翻转、`difflib` B/C 假阴性)✅ 且★ **它对"我的判法只覆盖前锚"的批评成立**(我的单样本在 5 个结构变异里只抓到 1 个 ⇒ 对双锚谓词漏报"删尾锚")⚠️⚠️ 但★★ **我第一版差点对它作错误归因**: 我原写"pi 把**已落地的修法**当成待补的缺口" —— 而它原文**明确**写"你上一轮 `85cb141` 就是这个修法" ⇒ 它**知道**那笔已落地,批的是**我的判法不够一般** ⇒ **是我把它的意思读反了**(我查了提交史、**没查它的原句**)⇒ 订正为: **归因检查的第三边 = 查对方"是否已经说对了"** ★★★★★ 而它的机械化建议射程不够: "**逐锚各删一次**"只覆盖 **2 个锚**,而谓词还有 **3 处非锚结构**(字符类 `[^[:alnum:]_.-]`/`[[:space:]]`、分支 `(\.|source)`)**同样可被放宽**却与锚无关 ⇒ 完整形式是"**逐结构各删一次**"; 实测 5 个结构 **5 个互不相同的专属见证**(判据 `85cb141` 已配齐,基线 rc=0 正对照成立)
|
||||
|
||||
## (A) ✅ pi 的谓词层主张我全复现
|
||||
```
|
||||
· **60/60 正例全翻** ✓(4 空白 × 3 export × 5 rest = 60 例,Python vs `grep -E` 分歧 60/60)✓
|
||||
· **KAT 样本翻转** ✓: `AGENTMAIL_REQUIRE="git go"`(判据自检用的样本)
|
||||
Python `re.match` ⇒ False / `grep -qE` ⇒ True
|
||||
⇒ ★ 用错引擎 ⇒ **判据把自己的 KAT 判成"匹配不到"** ⇒ 会把**正确的谓词**判成共模失效 ✓ 它对
|
||||
· **`difflib` 三种改动**: A(只加字面量)⇒ 报免验 **对** ✓
|
||||
B(只删 `^`)⇒ 新增 **''** ⇒ 报免验 ★ **假阴性** ✓
|
||||
C(混合)⇒ 报免验 ★ **假阴性** ✓(与我一致)
|
||||
· **"数与族绑定"** ✓ 它改记成"**正例翻转率 60/60**"我收 —— 那是**与族无关**的记法
|
||||
· 调用者谓词 `:181` 确是**双锚**(前锚 `^` + 尾锚 `$`)✓
|
||||
```
|
||||
|
||||
## (B) ✅ pi 对本仓的批评我收,且⚠️⚠️ **我差点把它写成错的** —— 归因我先前搞反了
|
||||
```
|
||||
★ pi 的主张(我按原文重读): **我给的"行中目标"单样本只覆盖前锚** ⇒
|
||||
对**双锚**谓词(`:181`:前锚 `^` + 尾锚 `$`)**漏报"删尾锚"** ⇒
|
||||
我的判法要**扩一格**(每个锚各配一个"只踩它"的样本)。
|
||||
★ 谓词层我复现 ✓(用 `:181` 原谓词与"删尾锚"谓词逐样本测):
|
||||
`x; . /tmp/x/lib/env-defaults.sh`(我的行中目标样本):
|
||||
原 = **不匹配** / 删尾锚 = **不匹配** ⇒ ★ 读数相同 ⇒ **该样本对尾锚无见证** ✓ **pi 对**
|
||||
我实测: 我的单样本在 5 个结构变异里只抓到 **1 个**(删前锚),另 **4 个全漏**
|
||||
(✓/★漏/★漏/★漏/★漏)⇒ 我的"可判形式"**确实只覆盖前锚** ✓ **pi 的批评成立**
|
||||
⚠️⚠️ **我第一版这里写错了、已就地订正**: 我原先写"pi 把**已落地的修法**当成待补的缺口" ⇒
|
||||
**这是我对 pi 的**错误归因** —— pi 的原文**明确**写"**你上一轮 `85cb141` 就是这个修法**",
|
||||
即它**知道**那笔已经把修法落地了,它批的是**我**提的那个判法(单样本)**不够一般**。
|
||||
⇒ 所以**它没有把"已经做到的"读成"还需要做的"** —— **是我把它的意思读反了**。
|
||||
⇒ ★ 教训(与它刚教我的那条**同一枚硬币**): 我上一轮学会"**归因检查要双边**",
|
||||
这一轮我**只查了提交史、没查它的原句** ⇒ 我从 `85cb141` 的提交信息推出"这是已落地的",
|
||||
然后假定 pi 没看出来 —— 而**它写明了它看出来了** ⇒
|
||||
**归因检查的第三边: 查对方"是否已经说对了"**(不只是"是谁说的",还有"它说对了没有")。
|
||||
★★ 而判据**自己有**那对样本(`:361` 只踩前边界 / `:364` 只踩尾锚,`85cb141` 加的)——
|
||||
这是 pi 自己引的那笔 ⇒ 我们**无分歧**,分歧只在**我的判法**是否够一般 ⇒ 它说不够 ⇒ **它对** ✓
|
||||
```
|
||||
|
||||
## (C) ★★★★★ 但 pi 提的那条**机械化自检**射程不够: "锚" ≠ "结构"
|
||||
```
|
||||
★ pi 的机械化建议: "用同一批样本跑**逐锚各删一次**的变异 ⇒ 每个锚删掉时至少一个样本翻转"
|
||||
★★ 我把判据的谓词**逐结构删一次**(不只逐锚),实测 5 个变异各有**专属**见证:
|
||||
删前锚 `^` ⇒ 守护者 **见证W1**(`echo " . $REPO/…`)—— 只有它翻转
|
||||
删尾锚 `$` ⇒ 守护者 **负E**(`. /tmp/zzz/lib/env-defaults.sh.other`)—— 只有它
|
||||
删边界类 `[^[:alnum:]_.-]` ⇒ 守护者 **负D**(`. /tmp/not-our-lib/env-defaults.sh`)—— 只有它
|
||||
删 source 分支 `(\.|source)→(\.)` ⇒ 守护者 **正3**(`source "$REPO/…`)—— 只有它
|
||||
删空格要求 `[[:space:]]` ⇒ 守护者 **见证W3**(`source"$REPO/…`)—— 只有它
|
||||
⇒ ★★★ **5 个结构,5 个互不相同的专属见证** ⇒ 每个结构都有人看着 ✓
|
||||
★★★ **关键更正 pi 的射程**: 这 5 个里只有 **2 个是"锚"** ——
|
||||
另 **3 个是字符类与分支**(`[^[:alnum:]_.-]`、`[[:space:]]`、`(\.|source)`),
|
||||
它们**同样可被"放宽"**(删掉就让谓词更宽),却**与锚无关**。
|
||||
⇒ 所以"**逐锚各删一次**"会**漏掉这 3 个** ⇒
|
||||
完整形式应是"**逐结构各删一次**",而"**结构**"严格包含: **锚 + 字符类 + 分支**。
|
||||
⇒ ★★ 判据本身跑基线 rc=**0** / FAIL=**0**(正对照成立,不是恒红)✓
|
||||
且每笔变异都先过 `bash -n`(语法)再判读数,并断言"变异命中" ✓
|
||||
★ 一条实操补充: 我实测**删边界类**那句在文件里出现 **4 次**(谓词 `:181` 与文档注释里),
|
||||
所以"逐结构变异"必须**限定行**做(我按行号 `:181` 逐行替换)——
|
||||
否则会误改注释里的示例,得到假读数(这正是我们那条"**变异要落在目标行上**")。
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user