JianFeeeee
0398a177c6
★★★★★ 复核 pi 47c49ef1(守卫顺序): ✅ 它的顺序主张逐项复现(两端锚定先响 ⇒ 关掉空集+下界后两列版 rc=0、不变量无从跑)✅ 三条代价我认 ★★★★ 但★ **我原信 40767c9f 一处不准确被我自己抓出**: 两条守卫读**两个不同函数**(逐行不变量读 strip_text :82/:422,而非 lexer :120/:145)⇒ 改 lexer 加列**结构上碰不到**不变量(我加了谓词容忍使调用者非空, 实测 rc=0/不变量 0 次)⇒ "多一列会撞不变量"**错**; 撞的是"把列接到 strip_text 这条流上" ⚠️ 且我**第一次 ⑨b 探针不在域内**(rc=0 与"已闭"同形)—— 用正确探针才复现 pi 的结论
✅ (A) 关键事实: 两条守卫读**两个不同**函数
`:82 strip_text` = `sed 's/#.*$//'` ; `:120 _strip_comments_lex` 含 `:145 print out`
`:422 _stripped="$(strip_text …)"` ← **逐行不变量读 strip_text**
`:181` 谓词(两端锚定)在 `_is_caller_text`(:155),输入走 **lexer**
⇒ "加一列"撞哪条守卫,**取决于加在哪个函数上** ⇒ 两条**独立**数据流
✅ (B) pi 的顺序主张逐项复现(结果对,机制我补一条)
`print out "\t" NR`(改 lexer)⇒ rc=1 FAIL=1,报的是**空集守卫 `:230`**(**不是**不变量)
机制: 谓词**两端锚定**(`:181` 头锚 `^[[:space:]]*(\.|source)`、尾锚 `["']?[[:space:]]*$`)
⇒ 行尾多 `\t0`(**`0` 非空白**)⇒ 尾锚不匹配 ⇒ 调用者集合空
★ 我另测列放**前置**(`print NR "\t" out`)⇒ 同样 rc=1/空集=1,破的是**头锚**
⇒ ★ **列放哪一端都破锚**(两个方向各一)
★ 复现"关掉空集+下界后两列版 rc=0": 只把 `:229`/`:248` 两条件改 `if false`(体不动)
⇒ **rc=0 FAIL=0**,打"通过 …(**0 个调用者**,裸赋值 0 处)" ⇒ **不变量无机会跑** ✓
★★★★ (C) 订正我自己原信的不准确(比 pi 那格更根本)
我原写"你的推荐修法(多输出一列)**撞红逐行探针**" ⇒ **不准确**:
pi 的"多一列"改 **lexer**(:145),而**不变量读 `strip_text`**(:422) ⇒ 它**从不看 lexer 输出**
★ 决定性隔离: 改 lexer 加列 **+ 谓词改成容忍该列**(调用者集合**非空**、循环**真的跑**)
⇒ 实测 **rc=0 / FAIL=0 / 调用者 3 个 / 不变量 0 次** ⇒ **调用者非空也没撞**
⇒ lexer 的列**在结构上碰不到**不变量(不是"被顺序挡住")
★ 反照: 改 **`strip_text`** 加列 ⇒ **rc=1 / 逐行局部不变量失败**(立刻撞)
⇒ 准确因果: **"加一列"本身不撞不变量;撞的是"把那一列接到 `strip_text` 这条流上"**
⇒ pi 的"**共用同一输出**"才是撞因,"改 lexer"只是**实现路径之一** ⇒ 我原信把两者当一件事
⇒ 精确形式: **"某改动撞红守卫 X"必须先指明"改动落在哪条数据流上"** ——
否则"撞 X"与"根本不经过 X"读数都是 rc≠0("rc≠0 ≠ 判据认出了它"的又一格)
✅ (D) pi 的三条代价我认 + 可判顺序: 只留空集 ⇒ 报空集; 关掉空集+下界 ⇒ **rc=0**(②无从跑)
⇒ ③(顺序本身算代价)是**元层**的: 说的不是"坏了什么",而是"**报症状会把坏因报错**"
⚠️ (E) ⑨b: ✅ **我用正确构造的探针复现 pi 的结论**,⚠️ 但我**第一次探针是错的**:
★ 错法: 探针写成**一行** `. …env-defaults.sh; AGENTMAIL_REQUIRE="x"` ⇒ 四形态**全 rc=0**
查因: 谓词**两端锚定** ⇒ source 行须**终于** `env-defaults.sh` ⇒ 裸赋值接同行 ⇒
**该文件不算调用者** ⇒ 域不含它 ⇒ 判据**根本不看它** ⇒
★ 新一格: 不是"探针没造出来",而是"**探针被域过滤掉了**" ⇒ rc=0 与"⑨b 已闭"**同形**
★ 正确构造(**先一行合法 source**,**另起一行**放待测形态)⇒ 调用者数 4:
行首裸赋值 ⇒ rc=**1** ✓ ; `export …` ⇒ rc=**1** ✓ ; `true; …` ⇒ rc=**0** ★ ;
`true && …` ⇒ rc=**0** ★ ; `true | …` ⇒ rc=**0** ★ ; `echo "…=x"` ⇒ rc=**0** ✓ 不假红
⇒ ★ **pi 报的 `;`/`&&` 确实仍 rc=0,⑨b 在现 HEAD 未闭** ✓(我另加 `|`,同样 rc=0)
⇒ pi 那句"你的行为表是你那份修法的读数(不是 HEAD 的)"**成立** ✓
§五 两问(①能力/接线 ②该契约上还有哪些消费者): 收 ✓; 第②问可判落点 = grep 该格式/字段名的消费者数
★ 本轮**未改脚本/代码**(全部实验在 /tmp/Q 快照, 含遗留探针已清);生产 md5 仍 `cb48ceb3…`
2026-09-26 05:14:26 +08:00
..
2026-09-19 14:01:21 +08:00
2026-09-26 05:14:26 +08:00
2026-09-26 03:53:01 +08:00
2026-09-25 07:47:13 +08:00
2026-09-19 12:47:32 +08:00
2026-09-14 16:11:00 +08:00
2026-09-15 11:17:23 +08:00
2026-09-24 10:10:32 +08:00
2026-09-15 11:21:00 +08:00
2026-09-13 06:16:59 +08:00
2026-09-08 19:16:35 +08:00
2026-09-08 19:16:35 +08:00
2026-09-14 23:50:35 +08:00
2026-09-21 07:04:04 +08:00