docs(M11b-2d-A3b-R1): 回填 §7.0 L163/L265/L621 行号占位符 + 修正 §7.0(三) 18增5删 vs 零差异矛盾并加 §7.1 指向行 + 刷新 a3b 两证据件(§8 一致性 14/14 ALL_ROWS_CONSISTENT)

This commit is contained in:
agent.develop 2026-09-23 12:46:15 +08:00
parent 7fca489a50
commit 85baa451d0
3 changed files with 68 additions and 48 deletions

View File

@ -345,7 +345,7 @@ git diff 81fdb86 -- tests/test_m11b2_single_tx.py # 仅 A1 的 3 处外观修
**(二)红态修复说明(两提交,仅测试文件,未新增/删除/重构任何用例)**
- 提交 `806a01b`(对本文件 hunk 头实测:@@ -160,7 +160,7 @@ class TxCase(unittest.TestCase):; @@ -254,8 +254,12 @@ class TestNormalWrite(TxCase):; @@ -404,6 +408,9 @@ class TestAtomicRollback(TxCase):; @@ -429,7 +436,10 @@ class TestIdempotency(TxCase):)
1. `TxCase.apply`(现 L?):`"state_updates": su() if states is None else states`
1. `TxCase.apply`(现 L163):`"state_updates": su() if states is None else states`
→ `"state_updates": [su()] if states is None else states`,恢复真源要求的数组形状(§2 参数 6),
消除 `PBL-PARAM-0001` 及其连带的 `TestNormalWrite`/`TestAtomicRollback`/`TestIdempotency` 红态;
2. `test_update_path_bumps_version_server_side`:旧写法
@ -357,7 +357,7 @@ git diff 81fdb86 -- tests/test_m11b2_single_tx.py # 仅 A1 的 3 处外观修
4. 幂等命中分支返回值与库内水位双校验(返回键按 §3.2 十键口径断言)。
- 提交 `9a794b1`(hunk 头实测:@@ -254,13 +254,15 @@ class TestNormalWrite(TxCase):; @@ -408,8 +410,9 @@ class TestAtomicRollback(TxCase):; @@ -436,10 +439,10 @@ class TestIdempotency(TxCase):):把上列第 2 项精确化为
`self.assertIn("state_version=%s", set_clause)`,并补参数位校验 `params[0]=='{"hp": 2}'`(state_json)、
`params[1]==4`(state_version 写回 3+1)、`params[-3:]==(TENANT, SESSION, ENTITY)`(现 L?),
`params[1]==4`(state_version 写回 3+1)、`params[-3:]==(TENANT, SESSION, ENTITY)`(现 L265,与上列 L260 的 `set_clause/where_clause` 拆分同属 `test_update_path_bumps_version_server_side` 的参数位校验断言块 L260–265),
与真源参数序 `(state_json, state_version, checksum, updated_by, updated_at, tenant_id, session_id,
entity_id)` 一致。
- 两提交累计改动量实测 `git diff --numstat 806a01b^ 9a794b1 -- tests/test_m11b2_single_tx.py` → `18 5 tests/test_m11b2_single_tx.py`。
@ -368,7 +368,7 @@ git diff 81fdb86 -- tests/test_m11b2_single_tx.py # 仅 A1 的 3 处外观修
| A1c 三处外观清理项 | 当前 HEAD `tests/test_m11b2_single_tx.py` 实测行号/代码 | 结论 |
|---|---|---|
| ① vacuous 断言(`TestLatency` 逐次 results/samples 断言) | L507 / L620 `results.append(res)`、L? `samples = [r["latency_ms"] for r in results]` 均在册 | 已恢复(实为一直存活),无需再改 |
| ① vacuous 断言(`TestLatency` 逐次 results/samples 断言) | L507 / L620 `results.append(res)`、L621 `samples = [r["latency_ms"] for r in results]` 均在册 | 已恢复(实为一直存活),无需再改 |
| ② 死表达式(`for_update` 用例 + 配套空函数 `self_dummy_log()`) | `grep -c self_dummy_log tests/test_m11b2_single_tx.py` 实测 = 0(零命中,已删除) | 已恢复(实为一直存活),无需再改 |
| ③ 尾逗号(`assert_atomic_rollback`) | 定义于 L174,已是无尾逗号的 `k[-tail:]` 写法 | 已恢复(实为一直存活),无需再改 |
@ -377,7 +377,20 @@ git diff 81fdb86 -- tests/test_m11b2_single_tx.py # 仅 A1 的 3 处外观修
独立提交内容**(`8519443` 只改 `tests/evidence/m11b2d_a1_pytest.txt` 4/4;`18dc298` 只删一次性脚本
`.m11b2d_a1c_patch.py` 0/70),故「A1c 改动被吞」不成立、无 hunk 可 apply。A1c 的三处外观清理实际随夹具
迁移提交 `11aac66` 落盘(当前血缘中同信息提交为 `91ea85c`),
`git diff --numstat 91ea85c HEAD -- tests/test_m11b2_single_tx.py` 实测为 `18 5 tests/test_m11b2_single_tx.py`,即 A1/A1c 在该文件上的内容与当前 HEAD 零差异。
`git diff --numstat 91ea85c HEAD -- tests/test_m11b2_single_tx.py` 实测为 `18 5 tests/test_m11b2_single_tx.py`(同径 `git diff 91ea85c HEAD -- ` 输出 3616 字节、**非空**)。**该 18 增 / 5 删全部来自本任务 A3b 的两笔修复提交 `806a01b` + `9a794b1`**——实测 `git diff --numstat 806a01b^ 9a794b1 -- tests/test_m11b2_single_tx.py` 与上式逐字同数(同为 `18 5 …`),故 A1/A1c 引入在该文件上的内容在当前 HEAD **全量存活**,其准确判据是 `git diff --numstat 9a794b1 HEAD -- tests/test_m11b2_single_tx.py` **输出为空**(RC=0、stdout 0 字节)。
(表述修正说明,响应 QC #12:原句把「实测 18 增/5 删」与「即零差异」写进同一句,自相矛盾——18/5 是本任务 A3b 修复提交自身的改动量,不是 A1/A1c 内容的丢失量。本轮改用「9a794b1→HEAD 为空」这一实测来表述「A1/A1c 内容全量存活」的结论,命令原样输出见下代码块。)
```
$ git diff --numstat 91ea85c HEAD -- tests/test_m11b2_single_tx.py
18 5 tests/test_m11b2_single_tx.py
$ git diff --numstat 806a01b^ 9a794b1 -- tests/test_m11b2_single_tx.py
18 5 tests/test_m11b2_single_tx.py
$ git diff --numstat 9a794b1 HEAD -- tests/test_m11b2_single_tx.py; echo "RC=$?"
RC=0 # ← numstat 无任何输出行,即 9a794b1 → HEAD 该文件零差异
$ git diff 9a794b1 HEAD -- tests/test_m11b2_single_tx.py | wc -c
0
```
(A3b-R1 轮实跑,命令与结果原样抄自终端;测试文件自 `9a794b1` 起本轮零改动,本轮只改本文档。)
**(四)验收口径**:复跑命令 `./.venv/bin/python -m pytest tests/test_m11b2_single_tx.py -q --tb=no`
→ 期望结果行 `40 passed, 8 xfailed`、`# RC=0`(RC=0 即通过判据);证据件
@ -590,6 +603,10 @@ RC=0
**全部存活**。补注:`11aac66` 在当前 HEAD 血缘中的同信息提交是 `91ea85c`(历史被 approve 轮
重排过一次),实测 `git diff 91ea85c HEAD -- tests/test_m11b2_single_tx.py` **为空**,即
A1/A1c 在该文件上的内容与当前 HEAD 零差异。
> 【A3b-R1 指向说明(响应 QC #12;本段为追加行,上方存档正文一字未改)】本段「`git diff 91ea85c HEAD`
> 为空」的结论(取证于 A3a 轮、早于 A3b 修复提交)**已被 §7.0(三)A3b 修复后的实测取代**:该 diff 实为
> `18 5 …`(非空、3616 字节),18 增/5 删全部来自 A3b 修复提交 `806a01b`/`9a794b1`;
> 「A1/A1c 内容在当前 HEAD 全量存活」的准确判据改为 `git diff --numstat 9a794b1 HEAD -- …` 为空。
2. **提交 `8519443` / `18dc298` 本身对 `tests/test_m11b2_single_tx.py` 零改动**:实测 (b)(c) 的
`git show <sha> --numstat -- tests/test_m11b2_single_tx.py` 输出为空(RC=0,无 diff);
(b+)(c+) 显示 `8519443` 只改了 `tests/evidence/m11b2d_a1_pytest.txt`(4/4),

View File

@ -1,51 +1,52 @@
# CMD: cd modules/world_sync && ./.venv/bin/python tests/checks/m11b2d_a3a1b_cmd_index_consistency.py --evidence tests/evidence/m11b2d_a3b_cmd_index_consistency.txt
# DATE: 2026-09-23T12:24:23+08:00
# HEAD: a4d8975
# PROVEN-TREE: a4d8975 + 本任务工作树(登记文档 §7.0/§8 定稿态;测试文件 tests/test_m11b2_single_tx.py 自 9a794b1 起零改动)
# TASK: M11b-2d-A3b 修复轮 §8 全行 CMD 逐字一致性核对(响应 QC #3:补齐上一版纸面登记的证据件本体 + 修正表格破损)
# DATE: 2026-09-23T12:40:43+0800
# HEAD: 7fca489
# PROVEN-TREE: 7fca489 + 本任务(M11b-2d-A3b-R1)工作树 —— 登记文档 §7.0(二)/(三)、§7.1、§8 在 R1 轮回填行号占位符与修正矛盾结论后的定稿态;测试文件 tests/test_m11b2_single_tx.py 自 9a794b1 起零改动(本任务未触碰任何测试文件/业务代码/models)
# TASK: M11b-2d-A3b-R1 文档收尾(响应 QC #11:回填三处「(现 L?)」占位符;QC #12:修正 §7.0(三)「18 增/5 删 …… 即零差异」自相矛盾表述并在 §7.1 存档段加指向行)后的 §8 全行 CMD 逐字一致性复跑核对
# NOTE: 复用 §8 规则 8 的长期工具 tests/checks/m11b2d_a3a1b_cmd_index_consistency.py(非一次性探针)。本件共两跑:
# 第一跑(本件生成前,12:24:23)核对 §8 表格拆分修复后的全 14 行,结果见下方原样输出;本件落盘后以同一命令第二跑,
# 使 L676 自指行闭环比对(本件首行 # CMD 去前缀 == §8 自指行引用)生效,第二跑输出见本文件末尾。
# 修复前置:L676(a3b 一致性核对行)与 L677(A3 轮归档行)原被 || 挤在同一物理行且残留 @@RESULT2@@/@@STATS2@@
# 占位符,已拆分为各占一行并以本件真实输出替换占位符。
# 第一跑在本件生成前完成(核对 R1 轮文档改动后的 §8 全 14 行;因 §7.0/§7.1 追加内容,表格行号由上一版的 L668–L681 下移至 L685–L698,行号变化不影响 CMD 逐字一致性);本件落盘后以同一命令第二跑,
# 使自指行(现 L693)闭环比对(本件首行 `# CMD:` 去前缀 == §8 自指行引用)生效,第二跑输出见本文件末尾。
# 覆盖范围:仅同名 a3b 核对件(上一轮 A3b 生成的工作件);m11b2d_a3a1b_* / m11b2d_a3_* / m11b2d_a1_* 等历史归档件一律未覆盖。
# ----------------------------------------------------------------
===== 第一跑(本核对件生成前,§8 表格拆分修复后全 14 行逐字比对,12:24:23+08:00,RC=0) =====
===== 第一跑(本核对件生成前,R1 轮文档回填/修正后 §8 全 14 行逐字比对,RC=0) =====
SELF-SCRIPT: tests/checks/m11b2d_a3a1b_cmd_index_consistency.py
SELF-EVIDENCE: tests/evidence/m11b2d_a3b_cmd_index_consistency.txt (exists=no)
SELF-CMD-BASE: cd modules/world_sync && ./.venv/bin/python tests/checks/m11b2d_a3a1b_cmd_index_consistency.py
L668 tests/evidence/m11b2d_a3_fixture_contract_pytest.txt 一致
L669 tests/evidence/m11b2d_a3_fixture_contract_collect_only.txt 一致
L670 tests/evidence/m11b2d_a3a1_fixture_contract_rerun.txt 一致
L671 tests/evidence/m11b2d_a3a1_fixture_contract_collect_only_rerun.txt 一致
L672 tests/evidence/m11b2d_a3a1b_cmd_index_consistency.txt 一致
L673 tests/evidence/m11b2d_a3a_single_tx_after_revert_corrected.txt 一致
L674 tests/evidence/m11b2d_a3a_single_tx_after_revert_rerun.txt 一致
L675 tests/evidence/m11b2d_a3b_single_tx_after_fix.txt 一致
L676 tests/evidence/m11b2d_a3b_cmd_index_consistency.txt 一致 §8 自指行 CMD 指向脚本实际路径 tests/checks/m11b2d_a3a1b_cmd_index_consistency.py;本核对件尚未生成(磁盘无 tests/evidence/m11b2d_a3b_cmd_index_consistency.txt),自指闭环比对留待生成后以同一命令第二跑完成
L677 tests/evidence/m11b2d_a3_single_tx_after_revert.txt 一致
L678 tests/evidence/m11b2d_a1_pytest.txt 一致
L679 tests/evidence/m11b2d_a1_collect_only.txt 一致
统计:核对行 12,一致 12,跳过(列内无原文可核) 0,不一致 0
L685 tests/evidence/m11b2d_a3_fixture_contract_pytest.txt 一致
L686 tests/evidence/m11b2d_a3_fixture_contract_collect_only.txt 一致
L687 tests/evidence/m11b2d_a3a1_fixture_contract_rerun.txt 一致
L688 tests/evidence/m11b2d_a3a1_fixture_contract_collect_only_rerun.txt 一致
L689 tests/evidence/m11b2d_a3a1b_cmd_index_consistency.txt 一致
L690 tests/evidence/m11b2d_a3a_single_tx_after_revert_corrected.txt 一致
L691 tests/evidence/m11b2d_a3a_single_tx_after_revert_rerun.txt 一致
L692 tests/evidence/m11b2d_a3b_single_tx_after_fix.txt 一致
L693 tests/evidence/m11b2d_a3b_cmd_index_consistency.txt 一致 §8 自指行 CMD 指向脚本实际路径 tests/checks/m11b2d_a3a1b_cmd_index_consistency.py;本核对件尚未生成(磁盘无 tests/evidence/m11b2d_a3b_cmd_index_consistency.txt),自指闭环比对留待生成后以同一命令第二跑完成
L694 tests/evidence/m11b2d_a3_single_tx_after_revert.txt 一致
L695 tests/evidence/m11b2d_a1_pytest.txt 一致
L696 tests/evidence/m11b2d_a1_collect_only.txt 一致
L697 tests/evidence/m11b2d_a3a_a1c_damage_forensics.txt 一致
L698 tests/evidence/m11b2d_a3a_script_cleanup_grep.txt 一致
统计:核对行 14,一致 14,跳过(列内无原文可核) 0,不一致 0
RESULT: ALL_ROWS_CONSISTENT
===== 第二跑(本核对件已落盘,同一命令,自指闭环生效,12:24:47+08:00,RC=0) =====
# ----------------------------------------------------------------===== 第二跑(本件落盘后同一命令,自指闭环比对生效,RC=0) =====
SELF-SCRIPT: tests/checks/m11b2d_a3a1b_cmd_index_consistency.py
SELF-EVIDENCE: tests/evidence/m11b2d_a3b_cmd_index_consistency.txt (exists=yes)
SELF-CMD-BASE: cd modules/world_sync && ./.venv/bin/python tests/checks/m11b2d_a3a1b_cmd_index_consistency.py
L668 tests/evidence/m11b2d_a3_fixture_contract_pytest.txt 一致
L669 tests/evidence/m11b2d_a3_fixture_contract_collect_only.txt 一致
L670 tests/evidence/m11b2d_a3a1_fixture_contract_rerun.txt 一致
L671 tests/evidence/m11b2d_a3a1_fixture_contract_collect_only_rerun.txt 一致
L672 tests/evidence/m11b2d_a3a1b_cmd_index_consistency.txt 一致
L673 tests/evidence/m11b2d_a3a_single_tx_after_revert_corrected.txt 一致
L674 tests/evidence/m11b2d_a3a_single_tx_after_revert_rerun.txt 一致
L675 tests/evidence/m11b2d_a3b_single_tx_after_fix.txt 一致
L676 tests/evidence/m11b2d_a3b_cmd_index_consistency.txt 一致 §8 自指行 CMD 指向脚本实际路径 tests/checks/m11b2d_a3a1b_cmd_index_consistency.py;自指闭环通过:本核对件首行 `# CMD:` 去前缀后与 §8 自指行引用逐字相同
L677 tests/evidence/m11b2d_a3_single_tx_after_revert.txt 一致
L678 tests/evidence/m11b2d_a1_pytest.txt 一致
L679 tests/evidence/m11b2d_a1_collect_only.txt 一致
L680 tests/evidence/m11b2d_a3a_a1c_damage_forensics.txt 一致
L681 tests/evidence/m11b2d_a3a_script_cleanup_grep.txt 一致
L685 tests/evidence/m11b2d_a3_fixture_contract_pytest.txt 一致
L686 tests/evidence/m11b2d_a3_fixture_contract_collect_only.txt 一致
L687 tests/evidence/m11b2d_a3a1_fixture_contract_rerun.txt 一致
L688 tests/evidence/m11b2d_a3a1_fixture_contract_collect_only_rerun.txt 一致
L689 tests/evidence/m11b2d_a3a1b_cmd_index_consistency.txt 一致
L690 tests/evidence/m11b2d_a3a_single_tx_after_revert_corrected.txt 一致
L691 tests/evidence/m11b2d_a3a_single_tx_after_revert_rerun.txt 一致
L692 tests/evidence/m11b2d_a3b_single_tx_after_fix.txt 一致
L693 tests/evidence/m11b2d_a3b_cmd_index_consistency.txt 一致 §8 自指行 CMD 指向脚本实际路径 tests/checks/m11b2d_a3a1b_cmd_index_consistency.py;自指闭环通过:本核对件首行 `# CMD:` 去前缀后与 §8 自指行引用逐字相同
L694 tests/evidence/m11b2d_a3_single_tx_after_revert.txt 一致
L695 tests/evidence/m11b2d_a1_pytest.txt 一致
L696 tests/evidence/m11b2d_a1_collect_only.txt 一致
L697 tests/evidence/m11b2d_a3a_a1c_damage_forensics.txt 一致
L698 tests/evidence/m11b2d_a3a_script_cleanup_grep.txt 一致
统计:核对行 14,一致 14,跳过(列内无原文可核) 0,不一致 0
RESULT: ALL_ROWS_CONSISTENT
# RC=0

View File

@ -1,12 +1,14 @@
# CMD: cd modules/world_sync && ./.venv/bin/python -m pytest tests/test_m11b2_single_tx.py -q --tb=no
# DATE: 2026-09-23T12:06:12+08:00
# HEAD: a4d8975
# PROVEN-TREE: a4d8975(本证据件在 A3b 修复轮文档定稿前生成,所证明的测试树=当前 HEAD,测试文件自 9a794b1 起零改动)
# INTERPRETER: Python 3.10.12 / pytest 9.1.1
# TASK: M11b-2d-A3b 恢复 A1c 改动核对 + 修复 test_m11b2_single_tx 红态至全绿
# NOTE: 本文件首行 # CMD 与登记文档 §8 证据索引表「跑的是什么」列逐字一致;下方为 pytest 完整原样输出
# DATE: 2026-09-23T12:41:19+0800
# HEAD: 7fca489
# PROVEN-TREE: 7fca489 + 本任务(M11b-2d-A3b-R1)工作树;本证据所证明的测试文件 tests/test_m11b2_single_tx.py 内容自修复提交 9a794b1 起零改动(实测 `git diff --numstat 9a794b1 HEAD -- tests/test_m11b2_single_tx.py` 输出为空、`git diff 9a794b1 HEAD -- …` 共 0 字节),R1 轮仅改登记文档,未触碰任何测试/业务代码
# INTERPRETER: Python 3.10.12
# TASK: M11b-2d-A3b-R1 文档收尾(响应 QC #11/#12)——复用 A3b 修复产出,本件为同名工作件在 R1 轮的复跑刷新(结果与上一版一致:40 passed, 8 xfailed, RC=0);未覆盖 m11b2d_a3_*/m11b2d_a1_*/m11b2d_a3a1b_* 等历史归档件
# NOTE: 本文件首行 `# CMD` 与登记文档 §8 证据索引表「跑的是什么」列逐字一致(由 tests/evidence/m11b2d_a3b_cmd_index_consistency.txt 机器核对);下方为 pytest 完整原样输出
# 配套核对(同轮实跑):tests/test_m11b2d_fixture_contract.py → 17 passed, RC=0;全目录 tests/ → 116 passed, 8 xfailed, RC=0
# git diff --numstat 9a794b1 HEAD -- tests/test_m11b2_single_tx.py → 输出 ''(空即零差异)
# ----------------------------------------------------------------
........................................xxxxxxxx [100%]
40 passed, 8 xfailed in 0.27s
40 passed, 8 xfailed in 0.28s
# ----------------------------------------------------------------
# RC=0