From ee3364a11136004cdcdaf34165f3d46aa0188d96 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Sat, 26 Sep 2026 02:45:57 +0800 Subject: [PATCH] =?UTF-8?q?=E2=98=85=E2=98=85=E2=98=85=E2=98=85=20?= =?UTF-8?q?=E4=BF=AE=20=C2=B7=20=E5=8F=8D=E5=90=91=E5=AF=B9=E7=85=A7?= =?UTF-8?q?=E7=9A=84"=E8=A7=81=E8=AF=81=E5=8A=9B"=E7=BC=BA=E9=99=B7:=20?= =?UTF-8?q?=E6=AF=8F=E6=9D=A1=E4=BB=B6=E5=90=84=E9=85=8D=E4=B8=80=E6=9D=A1?= =?UTF-8?q?"**=E5=8F=AA=E8=B8=A9=E5=AE=83**"=E7=9A=84=E6=A0=B7=E6=9C=AC?= =?UTF-8?q?=EF=BC=88`=5Fpc=5Fbad`=20=E5=8E=9F=E6=A0=B7=E6=9C=AC=E8=A2=AB?= =?UTF-8?q?=E4=B8=A4=E6=9D=A1=E4=BB=B6=E5=90=8C=E6=97=B6=E6=8B=92=20?= =?UTF-8?q?=E2=87=92=20=E5=AF=B9=E4=B8=A4=E6=9D=A1=E9=83=BD=E6=97=A0?= =?UTF-8?q?=E8=A7=81=E8=AF=81=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ★★ 缺陷(承上一条机制): 反向对照**只有一条**样本 `. /tmp/not-our-lib/env-defaults.sh.other`, 而它**同时**被两条独立条件拒 —— ① 前边界 `[^[:alnum:]_.-]lib/env-defaults`(`-lib` 的 `-`) ② 尾锚 `["']?[[:space:]]*$`(`.other` 结尾)⇒ **对两条都没有见证力** ⇒ 删掉任一条条件,对照**照样绿**(实测: 两个锚各自都能被单独删掉而不被发现) ★ 修(+2 条样本): ① `. /tmp/not-our-lib/env-defaults.sh`(**只踩前边界**,结尾合法 `.sh`) ② `. /tmp/zzz/lib/env-defaults.sh.other`(**只踩尾锚**,前面合法 `/`) ★ 变异测试(这才是判据): 删【前边界】: 旧样本 ⇒ rc=0 **无人报** / 新样本 ⇒ rc=1 报"只在前边界违规的异库文件" ✓ 删【尾锚】 : 旧样本 ⇒ rc=0 **无人报** / 新样本 ⇒ rc=1 报"只在尾锚违规的异库文件" ✓ ⇒ **load-bearing 确认**(退回旧样本则两锚都删得不知不觉) ★ 且**报的是哪一句**能**指认是哪个锚**被删,不是笼统"域偏宽" ⇒ 诊断可用 ★ 对照/回归(源 = 提交对象 + 工作区判据): 全绿对照(不注入、不删锚) ⇒ rc=0、FAIL=0 ✓ 全红对照(注入 1 真违规) ⇒ rc=1、报 `deploy/install.sh:135 用了裸赋值` ✓ 真树基线 rc=0、`(3 个调用者,裸赋值 0 处)`、FAIL=0 ✓(新样本**不误伤**真仓) `bash -n` rc=0 ✓ / criteria-hygiene **10/10** ✓ ★ 一般化: **每个"拒绝某类输入"的条件,都要有一条只被它拒的样本** —— 否则那个条件是**没人看着的**; "多条条件一起拒"会让**全部相关条件**同时失去见证(= **判定侧的共模**,与输入侧共模对偶) ★ 围栏 1140(偶/配对无缺) --- deploy/check-require-declaration.sh | 14 ++++++++++++++ docs/API.md | 25 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/deploy/check-require-declaration.sh b/deploy/check-require-declaration.sh index 307915a..754f721 100755 --- a/deploy/check-require-declaration.sh +++ b/deploy/check-require-declaration.sh @@ -325,7 +325,21 @@ AGENTMAIL_REQUIRE="git go"' || true)" _is_caller_text '. /dev/null;# 提到 env-defaults.sh' && _pc_bad="分号后的注释(该截没截)" _is_caller_text '# . env-defaults.sh' && _pc_bad="${_pc_bad}整行注释" # ★ pi `ae164e2e` 打出的**假红**(谓词过宽: 子串出现 ≠ 指向本库)—— 这条必须在反向对照里: + # ★★★★ 2026-09-25 我自 catch 的一个**见证力**缺陷(原来只放下面第一条样本): + # 那条样本**同时**踩两条独立条件 —— + # ① **前边界** `[^[:alnum:]_.-]lib/env-defaults`: `not-our-lib` 里的 `-` 在排除集里 ⇒ 拒 + # ② **尾锚** `["']?[[:space:]]*$` : 结尾 `.other` ⇒ 拒 + # ⇒ 实测: **删掉任一条条件,它仍被另一条拒** ⇒ 反向对照**照样绿** ⇒ **两条条件都没有见证** ★ + # (实测: 去前边界或去尾锚,各自都能让一个异库文件进集合并报它的裸赋值,而无人拦。) + # ⇒ 修法: 每个条件各配一条**"只踩它"**的样本(其余条件全满足),否则那个条件是**没人看着**的。 + # ★ 这是一般规则,不只对本谓词: **被多条条件同时拒的样本,对其中任何一条都没有见证力。** _is_caller_text '. /tmp/not-our-lib/env-defaults.sh.other' && _pc_bad="${_pc_bad}同名后缀的**别的**文件" + # ① 只踩【前边界】(结尾是合法 `.sh`,但 `-lib` 前的 `-` 不是词边界): + # ⇒ **删掉前边界**时这条样本会被认成调用者 ⇒ `_pc_bad` 非空 ⇒ **本对照报红**(见证成立) + _is_caller_text '. /tmp/not-our-lib/env-defaults.sh' && _pc_bad="${_pc_bad}只在前边界违规的异库文件" + # ② 只踩【尾锚】(前面是合法的 `/`,但结尾 `.other` 让文件名更长): + # ⇒ **删掉尾锚**时这条样本会被认成调用者 ⇒ `_pc_bad` 非空 ⇒ **本对照报红**(见证成立) + _is_caller_text '. /tmp/zzz/lib/env-defaults.sh.other' && _pc_bad="${_pc_bad}只在尾锚违规的异库文件" if [ -n "$_pc_bad" ]; then printf ' [FAIL] 判据自检失败(调用者判定,反向):**非调用者样本**被判成了调用者(%s)——\n' "$_pc_bad" >&2 printf ' ⇒ 域会**偏大**,与该库无关的文件被拖进来报红(假红)。按红计。\n' >&2 diff --git a/docs/API.md b/docs/API.md index 70bc817..e6fc12b 100644 --- a/docs/API.md +++ b/docs/API.md @@ -7275,3 +7275,28 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie ⇒ ⇒ 我上封的自我修正(把射程写窄)**方向是对的,但写歪了**: "域偏宽没有守卫"应写成 **"域偏宽的【前边界那一半】没有守卫;【谓词退化】那一半有"**。 ``` + +--- + +- ★★★★ **修**: 反向对照的"见证力"缺陷(承上一条机制)—— 每条件各配一条"**只踩它**"的样本 + ``` + 缺陷: 反向对照**只有一条**样本 `. /tmp/not-our-lib/env-defaults.sh.other`, + 而它**同时**被两条独立条件拒(前边界 + 尾锚)⇒ **对两条都没有见证力** + ⇒ 删掉任一条条件,对照**照样绿**(实测,见上一条) + 修(`deploy/check-require-declaration.sh` 反向对照块,+2 条样本 +解释): + ① `. /tmp/not-our-lib/env-defaults.sh` ← **只踩前边界**(结尾合法 `.sh`) + ② `. /tmp/zzz/lib/env-defaults.sh.other` ← **只踩尾锚**(前面合法 `/`) + ★ 变异测试(**这才是判据**): + 删【前边界】: 旧样本 ⇒ rc=0 **无人报 ★** / 新样本 ⇒ rc=1 报 **"只在前边界违规的异库文件"** ✓ + 删【尾锚】 : 旧样本 ⇒ rc=0 **无人报 ★** / 新样本 ⇒ rc=1 报 **"只在尾锚违规的异库文件"** ✓ + ⇒ **load-bearing 确认**: 退回旧样本则两个锚都删得不知不觉;加上新样本则各自被打红。 + ⇒ ★ 且**报的是哪一句**能指认是**哪个锚**被删(不是笼统"域偏宽")⇒ 诊断可用。 + ★ 对照/回归(源 = 提交对象 + 工作区判据): + 全绿对照(不注入、不删锚) ⇒ rc=0、FAIL=0 ✓ + 全红对照(注入 1 处真违规)⇒ rc=1、报 `deploy/install.sh:135 用了裸赋值` ✓ + 真树基线 rc=0、`(3 个调用者,裸赋值 0 处)`、FAIL=0 ✓(新样本**不误伤**真仓) + `bash -n` rc=0 ✓ / criteria-hygiene **10/10** ✓ + ★ 一般化(已并进上一条记法): **每个"拒绝某类输入"的条件,都要有一条只被它拒的样本** —— + 否则那个条件是**没人看着的**;而"多条条件一起拒"会让**全部相关条件**同时失去见证 + (= 判定侧的共模)。 + ```