Files
gplan-2/reports/工程改动报告-存量断言精简C档-2026-10-28.md

9.8 KiB
Raw Permalink Blame History

工程改动报告——存量断言精简 C 档(2026-10-28)

批性质:工程改动(纯测试维护),代码面独立 worktree 批(assert-slim-b2-20261028)。验证项目覆盖逐条不变,断言静态站点收敛。 输入合同:待办清单「存量断言精简——验证内容不变下的断言收敛」余账②(C 档手写族改表驱动循环)+用户 2026-10-28 会话裁决「六组全批(推荐)」。 对账基准:game/tests/验证集清单.md 冻结册(基点 b9260138,1587 条静态调用点;本批只比对不改写)。

1. 判据线

沿用 A+B 批判据线:同一读数面 + 同一输入集 + 谓词字面等价(C 档是同一族的逐例手写断言改为表驱动循环,每旧例成为循环表的一行数据,标签串保留在数据里可 grep)。

与 A+B 的区别:A+B 是删并(旧站点消失、判据由承接者承担);C 档是形态改造——旧例全部保留为循环的一行,执行条数不变,只有静态 check( 调用点下降。失败定位由「独立断言行」改为「违例明细串」(表内每行仍输出自己的标签,附带期望/实际)。

2. 删并申报表(33 旧站点 → 7 新站点)

「旧序号」=冻结册序号;「旧站点」=冻结册行号(file:line 省略相同路径前缀)。六组逐一列出,处置列写明合并形态。

C1 关卡生成参数负向族(11 → 1)· game/tests/unit/data_config/level_gen_params_test.gd

旧序号 旧站点 旧标签 新站点 处置
#1221 _test_negative:72 合法三行域校验零错误(夹具自证)〔fv2〕 :107 表行 cases[0](夹具自证行保留在表首)
#1222 _test_negative:75 L1 出口=2 被拒(出口 L1 恒 1 已锁)〔fv2〕 :107 表行 cases[1]
#1223 _test_negative:78 配比合计 0.5 被拒(四类合计 1 已锁)〔fv2〕 :107 表行 cases[2]
#1224 _test_negative:81 层深 5<6 被拒(层深下限已锁)〔fv2〕 :107 表行 cases[3]
#1225 _test_negative:85 层深增幅倒挂被拒(递增且增幅变大)〔fv2〕 :107 表行 cases[4]
#1226 _test_negative:88 出口 4 越域 [1,3] 被拒〔fv2〕 :107 表行 cases[5]
#1227 _test_negative:92 岔口去路数 (2,4) 被拒(恒 2/3 已锁)〔fv2〕 :107 表行 cases[6]
#1228 _test_negative:97 字段键集非 ROW_KEYS 闭集被拒〔fv2〕 :107 表行 cases[7]
#1229 _test_negative:100 键重复行被拒〔fv2〕 :107 表行 cases[8]
#1230 _test_negative:102 战斗保底 -1 被拒(≥0)〔fv2〕 :107 表行 cases[9]
#1231 _test_negative:105 空表域校验零错误(合法态)〔fv2〕 :107 表行 cases[10]

新站点标签模板 域校验:%s(期望%s,实际%s)〔fv2〕:%s 即旧标签原文(表内逐字保留),期望/实际 附违例明细串。

C2 RNG 黄金向量族(8 → 1)· game/tests/unit/data_config/rng_stream_boot_test.gd

旧序号 旧站点 旧标签 新站点 处置
#1239 _smoke_initialize:37 统一流向量 m=42 scope=0(=旧 board_gen scope0 连续性锚) :40 golden[0](循环标签补注 scope0 锚语义)
#1240 :38 统一流向量 m=42 scope=1 :40 golden[1]
#1241 :39 统一流向量 m=42 scope=2 :40 golden[2]
#1242 :40 统一流向量 m=42 scope=3 :40 golden[3]
#1243 :41 统一流向量 m=42 scope=4 :40 golden[4]
#1244 :42 统一流向量 m=42 scope=5 :40 golden[5]
#1245 :43 统一流向量 m=42 scope=6 :40 golden[6]
#1246 :44 统一流向量 m=42 scope=7 :40 golden[7]

黄金向量八值逐字不变;标签由逐行写死改为 scope=%d 循环变量,grep 锚 统一流向量 m=42 scope= 保留。

C3a 奖励点头部禁词族(3 → 1)· game/tests/unit/presentation/player_copy_sweep_test.gd

旧序号 旧站点 旧标签 新站点 处置
#1383 _sweep_narrator:59 奖励点头部零「同权重」旧话(u3 清零)〔wa4〕 :60 禁词表行「同权重」
#1384 :60 奖励点头部零「同上限」旧话(u3 清零)〔wa4〕 :60 禁词表行「同上限」
#1385 :61 奖励点头部零「提升池」旧话(u3 清零)〔wa4〕 :60 禁词表行「提升池」

标签模板 奖励点头部零「%s」旧话(u3 清零)〔wa4〕,禁词作参数,与旧标签逐字同形。

C3b 图例封印行禁词族(2 → 1)· 同文件

旧序号 旧站点 旧标签 新站点 处置
#1389 _sweep_legend:76 图例封印行零「插错」(u4 旗族遗留词干清零)〔wa5〕 :76 禁词表行「插错」
#1390 :77 图例封印行零「挖雷」(u4 雷字清零)〔wa5〕 :76 禁词表行「挖雷」

标签模板 图例封印行零「%s」〔wa5〕;seal_row 取值表达式(size > 2 守卫)逐字保留在循环体内。

C4 站桩蓄力置位四入参(4 → 1)· game/tests/unit/presentation/standee_fx_sweep_test.gd

旧序号 旧站点 旧标签 新站点 处置
#1407 _init:95 蓄力技能(heavy)置 _intent_charge=true〔wd2〕 :103 入参表行 ["damage","heavy",true,…]
#1408 :97 非蓄力攻击技(goblin_slash)零置位〔wd2〕 :103 入参表行 ["damage","goblin_slash",false,…]
#1409 :99 增益系零置位〔wd2〕 :103 入参表行 ["buff","goblin_rage",false,…]
#1410 :101 普攻零表示路径复位 _intent_charge〔wd2〕 :103 入参表行 ["damage","basic",false,…]

判定式 s1._intent_charge == 期望 与四旧例同谓词;set_pending 入参与旧例逐项相同。

C5 字体字形集三组(3 → 1)· game/tests/unit/presentation/ui_font_asset_test.gd

旧序号 旧站点 旧标签 新站点 处置
#1583 _init:18 中文字形在集(攻/雷/旗/封) :30 字形组「攻雷旗封」
#1584 :20 中文字形在集(危——已开危险格字形换代前置,迭代36 u12/wa9) :30 字形组「危」
#1585 :21 ASCII/数字字形在集(A/0/%) :30 字形组「A0%」

判定由逐字 has_char 合取改为组内逐字扫描,标签附缺字明细(缺字集为空即绿)。

C6 锻造工作间长剑/轻甲双行(2 → 1)· game/tests/unit/presentation/forge_workbench_test.gd

旧序号 旧站点 旧标签 新站点 处置
#1336 _run:63 长剑行:购买钮「锻造 20」(0 级位几何价)+选中钮「当前」禁用〔锻造工坊批 V13〕 :64 行表 ["sword","长剑"]
#1337 :66 轻甲行:购买钮「锻造 20」+选中钮「当前」禁用〔锻造工坊批 V13〕 :64 行表 ["light","轻甲"]

谓词取并集申报:旧 #1336 含 not buy_btn.disabled 与 select_btn != null 两子句、#1337 缺这两子句。合并后统一用 #1336 全谓词(只增不减,轻甲行增补 select_btn != null 与 not buy_btn.disabled 两子句)——已在用户裁决时呈报并随「六组全批」批准。标签统一为 %s行:…(0 级位几何价)…,两种行名均保留可 grep。

3. 件核

项 改前 改后 判据
六套件静态站点 33 7 冻结册逐行比对
全清单静态条数(--diff) 1587 1561 python tools/extract_checks.py --diff game/tests/验证集清单.md:消失 33/新增 7,与上表逐条对应
运行期条数(六套件) 17/13/22/18/5/12 17/13/22/18/5/12 合并前后同值;ui_font 5<6、forge 12<13 的静态差为失败分支站点(装载失败/字体缺失 Kit.check(…, false)),绿跑不执行,改前即如此
套件全量回归 — 65 套件全绿 unit.log:[run_all] all green (65 suites)
全码域闸 — all_green 回执 commit fd6cf968:domain=code、dirty_game=false;01/02/10 绿;09 存量红指纹 8467b4588a20 零新增;00/03/04/05/11 影响面选闸 SKIP(diff 全在 game/tests/ 测量面)
合并 — 87d241c1 合并后主区 --editor --quit 退出 0;python tools/run_smoke.py PASS(15 项检查,三硬闸全过)

运行期条数不变+每个旧标签都在循环数据里逐字保留=验证项目覆盖逐条不变的直接证据;静态条数降 26=本批唯一预期变化。

4. 余账与去向

余账 处置
类别②(内部面断言被入口严格承载) A+B 批实测 0 条,不再找
C 档候选 六组全数执行,C 档本波清零;无剩余候选
D 档四处(theme:215/217 × type_glow:148/150、level_shop_economy 现行图 vs 扩面段) 2026-10-28 用户裁全保留,不属精简账
恒真与名实不符断言五条 判据缺陷另账 → 待办清单新登记「恒真与名实不符断言五条——判据缺陷修正」(feat_vouchers:51/treasure_effects:263/level_shop_economy:593/:696/system_contracts:66-67)
Kit.check_quiet 静态站点 407 个在提取器口径外 → 待办清单新登记「断言提取器改版——覆盖 Kit.check_quiet 静默通道」

5. 纪律自检

  • 无删断言、无放宽阈值、无缩小扫描面、无下层直调替换:33 条判据全部保留为循环表行,输入集与判定式逐条对应(C6 为谓词并集,已申报)。
  • 无变异法、无撤销类取证;绿由保持断言复跑取得(整套件全绿)。
  • 冻结册未动一字,--diff 差异面与申报表逐条对齐。