收尾(迭代 41 测试债批): 待办条目「迭代 41 测试债修复」完成整条删除+收尾实现报告落 reports/(登记范围完成度+实测扩出的四处迭代 41 特许合回遗留产品回归:数字色牌守卫/open_victory opts 改型/站桩补间目标/调参模拟运行态收尾,含 golden 2.74%→0.00% 与墨族自适应读数证据+闸回执读数+实机目检三项);新立条目「闸基线 02/09 两键换代」承接已归绿存量红指纹的重生成(代码面,随下一代码批落)

This commit is contained in:
DKChan committed 2026-10-29 23:07:39 +08:00
1 parent 43906cdd8c
commit d9e5c019fd
2 files changed
+38 -2

No files matched your search

@@ -0,0 +1,36 @@
# 迭代 41 测试债批——实现报告(2026-10-29)
**接收方**:待办清单原「迭代 41 测试债修复——9 个套件失败与静态扫描三项红」条目(随本批完成整条删除,本报告为收尾凭据)。
**改动面**:游戏代码(worktree 批)。
**执行**:worktree `g-plan2-testdebt-20261029`(分支 `testdebt-20261029`,自 master cf0e40cc 分出,批内 `git merge master` 到 39c1fc69 后跑闸),提交 215da315/413124b0/afd1a41f,合并提交 43906cdd;工作区与分支已删除。
## 一、登记范围完成度
| 登记项 | 结果 |
|---|---|
| 02 九套件失败 | 全部归绿(65 套件全跑,`[run_all] 0 个套件失败`) |
| S9 类型闸 24 处 | 归零——`node_map_generator` 三处给真类型(`Array[int]` 贯通 `_vo_flow_facts`→`_build_trunk`),其余 21 处为动态边界(Variant 出值/鸭子型注入/异构 Callable 束),按 V7 白名单逐处补 `# type-hint: ignore` 并写明理由 |
| S10 文件头 4 处 | 归零——`config_db` 与三张域容器头注去日期 |
| S11 注释禁用词 1 处 | 归零——`adventure_table.gd:55` 档位退役词「罕见」改现行「稀有」 |
| 死常量 `SCHEMA_VERSION` | 已删(全仓零引用;文档侧「表结构版本」冲突面已由文档批清偿) |
## 二、实测扩出的范围(登记条目未预见,全部由代码域闸实跑暴露)
登记时 03/04/05 三闸在能力审计上电批被记为 SKIP(测量面批口径),其红项从未被实测过,故条目只记了 02 与 09。本批按代码域实跑,三闸皆红,逐条追因如下——**四处是迭代 41 特许直接合回留在产品码里的运行期断链,不是测试债**:
1. **数字色牌守卫丢失**(`game/presentation/views/board_cell_unit.gd` `_draw_glyph_layer`):迭代 41 卡②绘制分层时把 `if plate:` 判据丢掉,变成「凡有字形即垫牌」。后果=dungeon 关数字(本应亮墨直画在棕底)一律落到奶油色牌上。判据=棋盘 golden 逐像素:L1_dungeon changed=2.74% 超容差、L2/L3 与菜单 0.00%;恢复守卫后 L1 回 0.00%(与迭代 37 换代基线逐像素一致)。墨族自适应实测读数同时佐证现行口径:dungeon `plate=false`(亮族对比度 4.79/5.80 过门槛)、underdark `plate=true`(深族均值 2.41 不过门槛)。
2. **`open_victory` 第 4 参未随 opts 改型**(`game/presentation/curio_interact_controller.gd:79`):迭代 41 卡②把该函数的四散参数收拢为 `opts := {}`,其余调用方(`main.gd`/`main_adventure_flow.gd`)已改,此处仍传字符串 → 运行期 `Cannot convert argument 4 from String to Dictionary`,关卡完成三选一停点与续玩恢复路径的胜利总结面开不起来(探针报「三选一停点分支中断」)。改型为 `{"gp_summary": …}`,串内容与改前逐字同。
3. **站桩补间目标写错**(`game/presentation/views/standee_body.gd`):状态收进内部件 `st` 后,9 条 `tween_property(self, "st.xxx", …)` 的属性路径不成立(引擎报 `The tweened property ... does not exist`,并连带 `set_trans` 落在 null 上)→ 血量条与三档意图动效全静。改为直接补间子对象 `tween_property(st, "xxx", …)`。
4. **调参批量模拟运行态收尾位置**(`game/presentation/tune_sim_controller.gd`):循环体提函数时把 `set_sim_running(false)`/`_running = false` 搬进了单局函数,等于每局结束就宣布模拟结束——面板置灰与组合根互查守卫在剩余局数内失效。归还到 `run()` 末尾。
另有探针面随拆件改址(断言零删减、零放宽):`ui_input_probe` 格面成员入 `st` 六处、`ui_struct_probe` 的 `level_screen._runner` → `._map._runner`;测试面改址九处(`slots`/`meta_state`/`crossrun`/`_forge`/`_side`/`_meta_rows`→表成员直读/`_shop_rows`→表成员直读)。
## 三、闸与回执
`tools/run_all_gates.sh --code`(域=code、scope=full、dirty_game=false):00 冒烟/01 系统测试/02 单元与集成/03 探针 --click/04 探针 --full/05 渲染闸/09 静态扫描/10 熵增闸全部退出 0;11 回放确定性对拍按触面判定 SKIP(本批未触数值·存档·RNG·结算)。与基线比对=**零新增红**,且 02、09 两闸「基线红 → 现绿(改善)」,`all_green=true`。合回后主区两件秒级事已过:`--editor --quit` 重刷类名缓存、冒烟 15 项 0 失败。
## 四、遗留与待裁
1. **闸基线 02/09 两键待换代**:两键仍记本批已消除的存量红指纹,未来若回归到同一红项会被判「存量红·零新增」而静默放行。换代须改 `game/tests/.gates/baseline.json`(代码面)→ 已另立待办条目,随下一个代码批一并落。
2. **architecture.md 残留常量名**:`design/engineering/architecture/architecture.md:88` 的 ConfigDB 行仍把 `SCHEMA_VERSION` 列为该类职责,常量已删,该句失真——属文档面反哺点,待文档批按「删该词或改现役 `SAVE_FORMAT_VERSION`」落文(本批为实现批,禁写 `design/`)。
3. **实机目检**(归用户,不阻塞):dungeon 关胜利后数字回到棕底直画(无奶油牌);关卡完成三选一停点的胜利总结面能正常开出并可继续;调参面板批量模拟期间浮窗置灰、结束后解除。
+2 -2
View File
@@ -59,9 +59,9 @@
**状态**:待执行
#### 迭代 41 测试债修复——9 个套件失败与静态扫描三项红(2026-10-29 登记,来源=批次移交)
#### 闸基线 02/09 两键换代——存量红指纹已随迭代 41 测试债批归绿(2026-10-29 登记,来源=批次移交)
**实况**:证据=能力审计上电批(worktree 分支 `capgate-20261029`,提交 48e6e551)全量闸复跑,首次实测迭代 41 两卡合回(合并提交 eb9bb537,测试特许移交+直接合回,见 roadmap 收口注脚)后的代码面真实状态:①02 单元与集成测试 9 套件失败——`config_db_test`(`if` 块内声明的变量在块外引用,解析错误)、`config_db_fatal_oob_test`(退出码 2≠期望 1)、`table_structure_guard_test`(`_TreeSaveMock` 缺 `meta_state`)、`treasure_items_test`(`StubDB` 缺 `crossrun`)、`standee_fx_sweep_test`(`set_trans` 空引用)、`forge_workbench_test`(120 秒超时挂死)、`tree_requires_level_test`(`row_by_id` 在空基址)、`save_manager_domain_test`(缺 `_migrate_legacy_save`)、`theme_projection_test`(`CampOverlay` 缺 `_recent_list`);②09 静态扫描红项清单与基线不一致——S9 类型闸 24 处(迭代 41 拆出的新件缺 `# type-hint: ignore` 注解与参数类型)、S10 文件头 4 处(`config_db` 与三个域容器头注日期)、S11 注释禁用词 1 处(`adventure_table.gd:55`),而 gdstyle 与 S13 已随迭代 41 还清(基线两条存量红已过期,须随修复实测重生成)。本条目只修测试与注解债、不改游戏行为。本批合入经用户 2026-10-29 裁带红合并:能力审计上电批只动闸件与规约(代码域零新增红),代码域现存红全部由本条目承接。**2026-10-29 用户裁(「表结构版本」数值冲突甲案+孤儿常量可删)**:文档侧已随文档域直改落地——数据配置.md 删「表结构版本」调参行、依赖表与验收项中的版本常量表述,存档序列化.md 迁移链「表结构版本对齐」改「随表结构变化」,architecture.md 两处常量名改现役 `SAVE_FORMAT_VERSION`;代码侧 `game/core/config_db.gd` 的死常量 `SCHEMA_VERSION`(全仓零引用,值为 1,与文档原载 2 无对应)随本批删除。
**实况**:证据=迭代 41 测试债批代码域闸实测(worktree 分支 `testdebt-20261029`,回执 commit afd1a41f、域=code、scope=full、零新增红),02 单元与集成与 09 静态扫描两闸判「基线红 → 现绿(改善)」;基线 `game/tests/.gates/baseline.json` 里这两键仍记着已消除的存量红指纹(02 fp f9865f1a5a44=9 套件失败;09 fp 1a9ad773489f=S9 24 处+S10 4 处+S11 1 处),留着不动的后果=日后同类红回归会被判「存量红·对基线零新增」静默放行。待做=两键按归绿实测重生成(写 exit=0/绿指纹),改的是 `game/` 下非 .md 文件=代码面,须随下一个代码批在 worktree 内一并落、禁主区直改;人工确认凭据=上述回执与 reports/迭代41测试债批-实现报告-2026-10-29.md 第三节。本条目无设计段(机械重锚),不走写卡与编排。
**改动面**:游戏代码