From d9e5c019fd883d505a97190be0bbf6c3b285faa0 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Thu, 29 Oct 2026 23:07:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E5=B0=BE(=E8=BF=AD=E4=BB=A3=2041=20?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=80=BA=E6=89=B9):=20=E5=BE=85=E5=8A=9E?= =?UTF-8?q?=E6=9D=A1=E7=9B=AE=E3=80=8C=E8=BF=AD=E4=BB=A3=2041=20=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E5=80=BA=E4=BF=AE=E5=A4=8D=E3=80=8D=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E6=95=B4=E6=9D=A1=E5=88=A0=E9=99=A4=EF=BC=8B=E6=94=B6=E5=B0=BE?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=8A=A5=E5=91=8A=E8=90=BD=20reports/?= =?UTF-8?q?=EF=BC=88=E7=99=BB=E8=AE=B0=E8=8C=83=E5=9B=B4=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=BA=A6=EF=BC=8B=E5=AE=9E=E6=B5=8B=E6=89=A9=E5=87=BA=E7=9A=84?= =?UTF-8?q?=E5=9B=9B=E5=A4=84=E8=BF=AD=E4=BB=A3=2041=20=E7=89=B9=E8=AE=B8?= =?UTF-8?q?=E5=90=88=E5=9B=9E=E9=81=97=E7=95=99=E4=BA=A7=E5=93=81=E5=9B=9E?= =?UTF-8?q?=E5=BD=92=EF=BC=9A=E6=95=B0=E5=AD=97=E8=89=B2=E7=89=8C=E5=AE=88?= =?UTF-8?q?=E5=8D=AB=EF=BC=8Fopen=5Fvictory=20opts=20=E6=94=B9=E5=9E=8B?= =?UTF-8?q?=EF=BC=8F=E7=AB=99=E6=A1=A9=E8=A1=A5=E9=97=B4=E7=9B=AE=E6=A0=87?= =?UTF-8?q?=EF=BC=8F=E8=B0=83=E5=8F=82=E6=A8=A1=E6=8B=9F=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E6=80=81=E6=94=B6=E5=B0=BE=EF=BC=8C=E5=90=AB=20golden=202.74%?= =?UTF-8?q?=E2=86=920.00%=20=E4=B8=8E=E5=A2=A8=E6=97=8F=E8=87=AA=E9=80=82?= =?UTF-8?q?=E5=BA=94=E8=AF=BB=E6=95=B0=E8=AF=81=E6=8D=AE=EF=BC=8B=E9=97=B8?= =?UTF-8?q?=E5=9B=9E=E6=89=A7=E8=AF=BB=E6=95=B0=EF=BC=8B=E5=AE=9E=E6=9C=BA?= =?UTF-8?q?=E7=9B=AE=E6=A3=80=E4=B8=89=E9=A1=B9=EF=BC=89=EF=BC=9B=E6=96=B0?= =?UTF-8?q?=E7=AB=8B=E6=9D=A1=E7=9B=AE=E3=80=8C=E9=97=B8=E5=9F=BA=E7=BA=BF?= =?UTF-8?q?=2002/09=20=E4=B8=A4=E9=94=AE=E6=8D=A2=E4=BB=A3=E3=80=8D?= =?UTF-8?q?=E6=89=BF=E6=8E=A5=E5=B7=B2=E5=BD=92=E7=BB=BF=E5=AD=98=E9=87=8F?= =?UTF-8?q?=E7=BA=A2=E6=8C=87=E7=BA=B9=E7=9A=84=E9=87=8D=E7=94=9F=E6=88=90?= =?UTF-8?q?=EF=BC=88=E4=BB=A3=E7=A0=81=E9=9D=A2=EF=BC=8C=E9=9A=8F=E4=B8=8B?= =?UTF-8?q?=E4=B8=80=E4=BB=A3=E7=A0=81=E6=89=B9=E8=90=BD=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reports/迭代41测试债批-实现报告-2026-10-29.md | 36 +++++++++++++++++++ 待办清单.md | 4 +-- 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 reports/迭代41测试债批-实现报告-2026-10-29.md diff --git a/reports/迭代41测试债批-实现报告-2026-10-29.md b/reports/迭代41测试债批-实现报告-2026-10-29.md new file mode 100644 index 00000000..03c90f20 --- /dev/null +++ b/reports/迭代41测试债批-实现报告-2026-10-29.md @@ -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 关胜利后数字回到棕底直画(无奶油牌);关卡完成三选一停点的胜利总结面能正常开出并可继续;调参面板批量模拟期间浮窗置灰、结束后解除。 diff --git a/待办清单.md b/待办清单.md index 7d31d99c..0ef086eb 100644 --- a/待办清单.md +++ b/待办清单.md @@ -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 第三节。本条目无设计段(机械重锚),不走写卡与编排。 **改动面**:游戏代码