From 01b8778504d9fbdea9da6f60ff06f4b37240cd42 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Sat, 7 Nov 2026 23:28:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E5=B0=BE(=E8=BF=AD=E4=BB=A355?= =?UTF-8?q?=E6=89=B9=E5=90=8E=E6=94=B6=E5=B0=BE):=20=E5=9B=9B=E4=BB=B6?= =?UTF-8?q?=E4=BA=A7=E5=87=BA=E7=89=A9=E9=80=80=E5=BD=B9(=E5=90=B8?= =?UTF-8?q?=E6=94=B6=E5=8D=B3=E6=AD=BB+=E8=AF=81=E6=8D=AE=E5=8F=AA?= =?UTF-8?q?=E7=95=99=E6=9C=80=E6=96=B0)=E2=80=94=E2=80=94iter55=E5=8F=8D?= =?UTF-8?q?=E5=93=BA=E7=82=B9(=E5=8F=8D=E5=93=BA=E7=82=B9=E9=9B=B6?= =?UTF-8?q?=E6=9D=A1)/=E5=AE=9E=E7=8E=B0=E6=8A=A5=E5=91=8A/=E9=AA=8C?= =?UTF-8?q?=E6=94=B6=E5=AE=A1=E8=AE=A1/=E9=9C=80=E6=B1=82=E5=8D=A1?= =?UTF-8?q?=E7=89=87-QA=E8=A6=86=E7=9B=96=E4=BD=99=E9=87=8F=E6=94=B6?= =?UTF-8?q?=E5=8F=A3=E6=89=B9(=E6=AD=BB=E6=9C=9F=3D=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=89=B9=E5=90=88=E5=9B=9Emaster=20a5a7dc4d);=20=E8=B4=A6?= =?UTF-8?q?=E9=9D=A2=E6=8D=A2=E4=BB=A3=E2=80=94=E2=80=94roadmap=E8=BF=AD?= =?UTF-8?q?=E4=BB=A355=E8=A1=8C=E5=B7=B2=E5=AE=8C=E6=88=90(2026-11-07)+?= =?UTF-8?q?=E5=8D=A1=E7=89=87/=E6=8A=A5=E5=91=8A=E4=B8=A4=E5=88=97?= =?UTF-8?q?=E9=80=80=E5=BD=B9=E4=BF=9D=E7=95=99=E5=AD=97+=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E4=BD=8D=E6=8D=A2=E4=BB=A3(=E8=BF=AD=E4=BB=A31-55?= =?UTF-8?q?=E5=AE=8C=E6=88=90,=E4=B8=8B=E4=B8=80=E6=AD=A5=3D=E5=BC=80?= =?UTF-8?q?=E5=B7=A556);=20=E5=BE=85=E5=8A=9E=E6=B8=85=E5=8D=95QA=20harnes?= =?UTF-8?q?s=E4=BD=99=E9=87=8F=E6=9D=A1=E7=9B=AE=E6=95=B4=E6=9D=A1?= =?UTF-8?q?=E5=88=A0=E9=99=A4(=E7=8A=B6=E6=80=81=E6=9C=BA=E5=87=BA?= =?UTF-8?q?=E5=8F=A3=3D=E5=AE=8C=E6=88=90);=20=E4=BD=93=E9=AA=8C=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E6=B8=85=E5=8D=95=E8=A1=A5=E7=99=BB=E7=9B=AE=E6=A3=80?= =?UTF-8?q?=E8=8A=8254(=E6=8E=A2=E9=92=88=E6=89=A9=E9=9D=A2=E5=8A=A8?= =?UTF-8?q?=E7=BA=BF+=E5=AE=8C=E7=BE=8E=E5=B0=81=E5=8D=B0=E5=8F=8C?= =?UTF-8?q?=E4=BB=BD=E5=85=91=E4=BB=98=E4=B8=A4=E9=A1=B9,=E7=99=BB?= =?UTF-8?q?=E8=AE=B0=E4=B8=8D=E9=98=BB=E5=A1=9E);=20E3=E8=BF=BD=E8=AE=A4(2?= =?UTF-8?q?026-11-07=E7=94=A8=E6=88=B7=E6=98=8E=E7=A4=BA):=20controls?= =?UTF-8?q?=E9=94=AE=E5=BD=A2=E5=AE=9E=E4=BE=8B=E5=8F=98=E4=BD=9317?= =?UTF-8?q?=E6=9D=A1=E8=B1=81=E5=85=8D=E4=BF=9D=E7=95=99=E5=9C=A8=E5=86=8C?= =?UTF-8?q?;=20=E6=9C=AF=E8=AF=AD=E9=97=B8=E4=B8=80=E5=A4=84=E6=89=B9?= =?UTF-8?q?=E5=90=8D=E9=80=80=E5=BD=B9=E8=AF=8D=E6=94=B9=E5=86=99=E5=90=8E?= =?UTF-8?q?=E5=85=A8=E7=BB=BF=E3=80=82=E6=89=B9=E5=86=85=E5=87=AD=E6=8D=AE?= =?UTF-8?q?:=20--docs=E3=80=90=E9=AA=8C=E6=94=B6=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E3=80=91=E6=97=A0=E6=96=B0=E5=A2=9E=E7=BA=A2(=E5=9B=9E?= =?UTF-8?q?=E6=89=A7receipt.json);=20CI=E7=8E=B0=E6=9F=A5:=20Gitea?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E8=A2=AB=E6=8B=92(=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E5=9D=91=E9=9D=9E=E7=9C=9F=E7=BA=A2),=20iter55=E5=90=88?= =?UTF-8?q?=E5=9B=9ECI=20run124=E7=BA=A2=E5=B7=B2=E7=94=B1fix-s11-leige?= =?UTF-8?q?=E6=89=B97d4d97ee=E8=BF=BD=E7=BB=BF=E9=97=AD=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reports/iter55-反哺点-2026-11-07.md | 9 - reports/iter55-实现报告-2026-11-07.md | 127 -------- reports/iter55-验收审计-2026-11-07.md | 142 --------- .../需求卡片-QA覆盖余量收口批-2026-11-07.md | 278 ------------------ roadmap.md | 6 +- 体验验证清单.md | 11 + 待办清单.md | 8 - 7 files changed, 14 insertions(+), 567 deletions(-) delete mode 100644 reports/iter55-反哺点-2026-11-07.md delete mode 100644 reports/iter55-实现报告-2026-11-07.md delete mode 100644 reports/iter55-验收审计-2026-11-07.md delete mode 100644 reports/需求卡片-QA覆盖余量收口批-2026-11-07.md diff --git a/reports/iter55-反哺点-2026-11-07.md b/reports/iter55-反哺点-2026-11-07.md deleted file mode 100644 index 19512e26..00000000 --- a/reports/iter55-反哺点-2026-11-07.md +++ /dev/null @@ -1,9 +0,0 @@ -# 迭代 55 反哺点清单——QA 覆盖余量收口批(2026-11-07) - -> 接收方:待办清单条目「QA harness 覆盖余量——B4 本体缺口与 B5 控件零命中缺口复核分流」。 -> 卡 §6 预期:零条(战斗结算.md :124「读表」句接线后由声称变属实,零文本改动义务)。 - -**反哺点:零条。** - -说明:本批两项 L3 停机呈报(cell_mark_overlay 分类前提、进入下一层到达性)的裁决落点属 -B4/B5 复核记录与需求卡片面,不属 GDD/art-bible 反哺——见 `reports/iter55-实现报告-2026-11-07.md` §6。 diff --git a/reports/iter55-实现报告-2026-11-07.md b/reports/iter55-实现报告-2026-11-07.md deleted file mode 100644 index 5805adc9..00000000 --- a/reports/iter55-实现报告-2026-11-07.md +++ /dev/null @@ -1,127 +0,0 @@ -# 迭代 55 实现报告——QA 覆盖余量收口批(2026-11-07) - -> 接收方:待办清单条目「QA harness 覆盖遗漏余量——B4 本体缺口与 B5 控件零命中缺口复核分流」(2026-11-07 登记,P0)。 -> 输入合同:`reports/需求卡片-QA覆盖余量收口批-2026-11-07.md`(零待裁点,U0=iter 技能调用)。 -> 执行形态:整迭代单工作区(`../g-plan2-iter55`,分支 iter55),T0→T11 串行;单卡批。 -> 本报告落盘时点状态:T0–T11+**卡修续行(轮 2 用户裁决落地,2026-11-07)**已提交施工;两项 L3 呈报已裁决落定(见 §6);棋盘三图基线换代经用户过目;独立验收审计已落定(见 §7)——待合回。 - -## 1. 各卡状态 - -| 任务卡 | 状态 | 凭据(提交+读数) | -|---|---|---| -| T0 开工 | 完成 | worktree 四件套齐;改前读数锚:coverage_enum 870 实体/缺口 211/62 分组 40 组带缺口(与卡逐字同);screen_flow 探针 exit0(seen 116/hits 19 键 25 次);ui_click 探针 exit0(seen 91/hits 30 键 43 次,停手钮已随迭代 54 修复在命中集);单元全套件 all green(86 套件)exit0。读数入 T1 提交信息 | -| T1 G1 违约词负面断言 | 完成 | 提交(schema_vocab_violation_test 七函数+manifest 登记);单件直跑 all green(19 checks)exit0 零脚本错误 | -| T2 G2 结算钉与 p_perfect 接线 | 完成 | 提交 552bd3b6;硬编码 2↔表值 200 相等=行为零漂移核对通过;guard 91 checks/treasure 全绿/seal 70 checks(V10 回归面 :330-401 完美双份真实流 ×2 仍绿) | -| T3 G3 cap 七槽+配额满 | 完成 | 提交;guard 98 checks/feats 144 checks 全绿 | -| T4 G4 布局字段断言 | 完成 | 提交;stage_background 23 checks 全绿 | -| T5 G5 天赋树行与投影 | 完成 | 提交;forge 182 checks 全绿 | -| T6 G6 defensive_stance 值断言 | 完成 | 提交;round_flow 142 checks 全绿(种子狩猎真实链命中) | -| T7 G7 L3 变异行 | 完成 | 提交;variant_placement 25 checks 全绿 | -| T8 G8 reward 行读值改断 | 完成 | 提交;seal 76 checks/guard 100 checks 全绿 | -| T9 B5 探针扩面+开发面过滤+渲染采集态核对 | 完成 | 原提交(353 行,十一组真输入全命中)+卡修续行 cf08a4ac(登记件开发面过滤——三根解析,两探针复跑 exit0:ui_click seen 80/命中 85 次/开发面键 0,screen_flow PASS seen 107/开发面键 0)+b5a981ef(采集态六类型注入+逐类型读数——全入帧零缺型,探针 PASS exit0 双帧 PASS) | -| T10 豁免登记+对账工具面修正 | 完成 | 原提交(ontology 154+controls 登记)+卡修续行 cf08a4ac(scan_screens 基类分类修正+controls 开发面 3 条删除);coverage_enum 复跑 868 实体/缺口 163/未豁免未补测=0;附录 C 归并口径零命中 9 键全被 controls 19 条覆盖=0 残留 | -| T11 产出物落位 | 完成 | 本报告+反哺点清单+收尾核对(§5)+卡修续行报告同步 | - -## 2. 实际改动—验收对照表(结果列) - -| # | 需求点 | 改动 | 验收测试 | 结果 | -|---|---|---|---|---| -| V1 | 十七违约词拒绝路径 | 新增 `game/tests/unit/schema_vocab_violation_test.gd` 七函数+run_all manifest 登记 | 同文件 7 函数(〔QA余 V1〕×19) | 绿(单件直跑 19 checks exit0) | -| V2 | equivalence_ref_damage 钉 4+p_perfect 钉 200+读数活性 | guard+`_check_settlement_pin_values`;reward_grant 改读 ConfigDB | 同函数 5 断言+seal :330-401 既有段 | 绿(91 checks;活性断言 p_perfect=100 单份兑付命中;回归面双份 ×2 仍绿) | -| V3 | cap 段七槽钉值 | guard+`_check_curio_cap_segment_pins` | 同函数 7 断言 | 绿(98 checks) | -| V4 | feat_ticket_quota 配额满分支 | feats+`_check_ticket_quota_exhausted` | 同函数 6 断言(真实入口链 consider+node_curio_candidates) | 绿(144 checks) | -| V5 | rap_transfer_mult 行值端到端 | treasure_effects+`_test_rap_transfer_row_e2e` | 同函数 5 断言(add_item→装配→参数和 125→转存兑付) | 绿(treasure 全绿) | -| V6 | AP 条高/结算带高读表 | stage_background+两函数 | 同文件 3 断言 | 绿(23 checks) | -| V7 | 树面四行一组断言 | forge+四函数+`_ks_row_level` 读数面 | 同文件 12+ 断言(〔QA余 V7〕) | 绿(182 checks) | -| V8 | reward stacks 行钉 | guard+`_check_reward_row_pins` | 同函数 2 断言(扫描面非空前置+全 1 钉) | 绿(100 checks) | -| V9 | defensive_stance 值断言 | round_flow+`_check_defensive_stance_values` | 同函数 5 断言(种子狩猎真实链+容器级叠层) | 绿(142 checks) | -| V10 | p_perfect 读表接线 | reward_grant.gd:416-422 改读 db.combat.settlement.core.p_perfect | V2 活性断言+seal 既有真实流段 | 绿(行为零漂移:双份 ×2 仍绿) | -| V11 | L3 两变异行 | variant_placement+`_test_l3_rockfall_minedust_rows` | 同函数 6 断言(放置可达+rockfall 兑付 3+mine_dust 遮蔽面) | 绿(25 checks) | -| V12 | enemy_alert/ap_drain 生产行 | seal+两函数(生产行对象走 grant_routed 同链) | 同文件 4 断言 | 绿(76 checks) | -| V13 | 十一动线真输入可达 | ui_click_probe 扩面(十一组)+probe_ui_util 滚辅基准修 | 探针 `_ready` 扩面段+放弃收尾段 | 绿(exit0 零 FAIL;十一组命中。「进入下一层」组经轮 2 用户裁出圈——开发面,见 §6 L3-2 落定) | -| V14 | cell_mark_overlay 显示正确性(渲染通道) | board_shot_probe 采集态六类型注入与逐类型读数+棋盘三图基线换代(b5a981ef,新帧用户过目) | `board_shot_probe.tscn` 三图采集+渲染闸逐像素(裁剪区加严口径) | 绿(探针 PASS exit0;六类型全入帧零缺型;渲染闸本地全绿——golden 对比全过) | -| V15 | 豁免登记对账清零 | tools/coverage_exemptions.js 登记(ontology 154+controls 19——开发面 3 条随轮 2 改判删除) | T10 对账读数 | 绿(未豁免未补测=0;附录 C 归并口径 controls 覆盖后残留 0) | -| V16 | per_level_shift_pct 三关档钉 | guard+`_check_meta_per_level_pins` | 同函数 3 断言 | 绿(91 checks 内) | -| V17 | 开发面出圈与本体分类修正 | probe_coverage_recorder 三根过滤(cf08a4ac)+coverage_enum scan_screens 基类分类(cf08a4ac) | 两探针复跑 seen 集开发面键 0+coverage_enum 复跑 868 实体(cell_mark_overlay/debug_overlay 出圈) | 绿(dev_face_roots=3;ui_click skipped=708/screen_flow skipped=84;开发面键双探针 0;未豁免未补测=0) | - -## 3. 实现决定记录(代拍板白名单外事项备案) - -1. **主循环滑条 400/200→2000/2000**(探针行为参数):基线对照实证(stash 前后各一跑)400/200 下 L1 恒败退、零 L1 完成(2026-11-06 登记件同证);2000 下 L1 完成进 L2。原「高加成保 L1 可完成」注释在 400/200 下已失真。 -2. **probe_ui_util.scroll_button_into_view 可视基准改按钮最近 ScrollContainer 祖先**:秘宝匣 `_ws_scroll` 336px 小于窗壳面板,面板基准把裁剪区外按钮误判「在视」、真点落空(购买 25/装配/升级零命中实证);树/秘宝两视图同修,既有树面滚点全数保持命中。 -3. **秘宝段购后重开视图**:`_refresh_attune_segment` 的 unlocked 快照仅随 rebuild 刷新(代码注释自证),购后不重开则新解锁件装配钮恒禁用——重开=全量重建对齐快照。 -4. **树面 ks_refresh(购买 30)后置到秘宝段之后**:其前置 ks_workshop 在秘宝段前段点亮(树段时序上尚未购,置灰实证一次)。 -5. **T9 缺一组的到达性结论**:进入下一层组经代码考证定为开发面(见 L3-2)。轮 2 用户裁升级为「出圈非豁免」——覆盖登记层过滤承载,controls 开发面 3 条豁免删除(cf08a4ac)。 -6. **棋盘三图基线换代**(V14 渲染通道):采集态扩型(变异 resolver 生产同源+真视/预读 overlay+移除写口+点迹/高亮定格)使 cell_mark_overlay 六绘制域全入帧;旧基线判失效(加严口径),`golden_baseline_refresh.sh` 重采集入基线——**新帧经用户过目确认**后换代,渲染闸本地复绿(golden 对比全过)。 - -## 4. 实机目检总清单(登记不阻塞) - -- 探针扩面十一组动线的屏面观感(图例关闭落点、节点继续、三选一刷新重投喂、商店购买/刷新货架态、秘宝架四钮柜台态、树面高档购买与先手压制回切、弃图刷新确认 chips、地图放弃确认窗、Esc 浮窗设置、两拨杆开关态)——机器面已由真输入命中与落点断言承载,真人复看可选。 -- p_perfect 接线后完美封印双份兑付的战内表现(值零漂移——真实流回归面已绿,观感复核可选)。 - -## 5. 收尾核对(能力行名实) - -- 已落地名字与能力行一致:`_check_empty_tables`/`_check_settlement_pin_values`/`_check_curio_cap_segment_pins`/`_check_meta_per_level_pins`/`_check_ticket_quota_exhausted`/`_test_rap_transfer_row_e2e`/`_check_ks_workshop_row`/`_check_fork_side_projection`/`_check_defensive_stance_values`/ui_click 扩面段——逐名 grep 在案。 -- 卡修续行回表(写卡段批 ef5d4679 已落):能力行「控件动线扩面真输入可达」删「进入下一层」与「cell_mark 模态断言」(十一段);新增「棋盘格面绘制显示(渲染闸棋盘三图 golden 逐像素)」行,代表用例 `board_shot_probe.gd:_ready` 已落地(采集态注入+读数段)——名实相符。 - -## 6. L3 停机呈报(两项;卡 §9 预授权停机点) - -### L3-1 cell_mark_overlay 模态断言前提不成立(V14 未落地) - -- **分歧点**:卡 V14/T9 要求「ui_struct_probe+cell_mark_overlay 段:开态 visible+遮挡物隐藏模态断言(锚 test-conventions §2 模态条款)」。 -- **代码事实**:`game/presentation/views/cell_mark_overlay.gd` 为 **RefCounted 绘制域件**(CellUnit 拆件——变异标记/徽章/封印/点迹的绘制命令持有者),无 visible 属性、无开层动线、无遮挡物语义;`tools/coverage_enum.py:45` 的 VIEW_KIND_RE 按文件名后缀 `overlay$` 将其误分类为「屏与模态」实体(B4 缺口来源)。 -- **两种读法**:①按卡字面造模态断言=无被测面可绑,判据绑定面落空(禁自造替代证明);②按实体本相改断言形态(实例化+绘制旗标)=实现期改判据(test-conventions §8.5=上游缺陷停卡)。 -- **建议案**:B4 复核裁决改判——cell_mark_overlay 自「屏与模态真缺口」改豁免(reason=枚举器文件名误分类,实体为 CellUnit 绘制域件;封装纪律由 pres 封装扫描与能力清单承载),V14 行随卡退役;或另立卡对绘制域件立实例化断言规格。现状:豁免清单未登该 id,本体对账留 1 可见缺口(未豁免未补测=1)。 -- **待办清单回退拟稿**:条目状态「已编迭代 55」→「已写卡」(缺口=V14/进入下一层两组裁决后重写卡 §7/§8 对应行)。 -- **裁决落定(2026-11-07 用户裁,卡修轮 2)**:两处均不豁免——测试目的=验证显示正确性,走渲染通道:V14 改指渲染闸棋盘 golden(锚 test-conventions.md:100),本体清单出圈归枚举器 scan_screens 基类分类修正(T10),采集态缺型注入+基线换代经用户过目(b5a981ef)——V14 已落地绿。原呈报的「豁免」建议案作废(用户裁:豁免=在范围内特批不做,出圈面不占豁免)。 - -### L3-2 「进入下一层」动线到达性失败(T9 第十二组未落地) - -- **分歧点**:卡附录 C 将 inter 覆盖层「进入下一层」列为 B5 真缺口动线组(T9 驱动)。 -- **代码事实**:inter 覆盖层仅调试两层模式接线——`main.gd:360 _on_battle_finished` 头注「仅调试模式接线(冒险的关卡结束归 AdventureRunner._on_level_finished——大奖励/冒险终局分派)」;正常冒险 L1→L2 推进零该停点(本批三跑实证:L1 完成→L2 逐位进入,进入下一层键零命中)。入口钮「调试 · 连续关卡两层」本身属附录 C 开发面豁免(发布态恒隐)。 -- **两种读法**:①真缺口——经调试两层模式驱动真点(入口为开发面恒隐钮,驱动链必经豁免面);②开发面豁免——inter 过渡屏与调试浮窗八钮同族(玩家不可达面),controls 豁免登记即收口。 -- **建议案**:按②改判开发面豁免(已登记,reason 随注);卡附录 C 该组随裁决改判。若按①,需另立调试模式探针段规格(入口可达性前提先裁决)。 -- **待办清单回退拟稿**:同 L3-1。 -- **裁决落定(2026-11-07 用户裁,卡修轮 2)**:开发面出圈非豁免——覆盖登记件按调试面边界过滤(DebugOverlay 类型+ui.screens.inter_overlay/debug_badge 引用单点),inter 覆盖层整层调试专用不入玩家可达宇宙;controls 开发面 3 条豁免删除(cf08a4ac);两探针复跑开发面键 0(V17 绿)。原呈报的「豁免登记」建议案作废。 - -## 7. 独立验收审计结果与处置 - -- 审计报告:`reports/iter55-验收审计-2026-11-07.md`(中档深度;审计者=未参与实现的子代理)。 -- **审计结论(初版):未通过——U1 一项硬伤**:T7 提交(8054f959)的编辑回退分支把 - `_smoke_global_variant()` 调用行从 variant_placement_test 执行序中误删(函数体留盘成死代码, - 33 条在役断言退出执行且全仓无第二宿主),违反卡 §4 零删除断言/§14 纯增量且零申报。 -- **处置:已修复**——调用行恢复(执行序回归 master 原序),套件复跑 all green(58 checks= - 原 25+复归 33,恰合)exit0 零脚本错误;提交「iter55 审计修复」。 -- **审计结论(复验后终版+增量轮):通过**——E1/E2 随轮 2 用户裁决闭合(见 §6 裁决落定); - 增量轮(独立子代理,卡修续行两笔 cf08a4ac/b5a981ef 对照新卡 V13/V14/V15/V17)通过,无硬伤 - 无阻塞项:过滤纯减法、注入全真链、基线换代纪律四要件齐、读数三源互证;F1(README 换代戳) - 与 F2(登记件头注措辞——注释级零行为改动)已随审计落定修正;**E3 唯一在案例外**=controls - 键形实例变体 17 条豁免超卡附录 C 面,随合并呈请用户追认。 -- 观察 O1=对账叙述算术(164 缺口实例≠唯一 id 数——同 id 跨类重复,机器读数以校验脚本 - 逐 id 比对为准;卡修续行复跑实测未豁免未补测=0,与 O1 判读口径一致)。 - -## 8. 遗留读数义务 - -- 零 MC/verifier 义务(p_perfect 接线值相等零漂移,卡 §4 数值面零跑口径;无数值调整禁重跑在案)。 -- 远端 CI:合回后 post-merge 钩子自动全量,`tools/ci_check.sh <合并提交>` 现查(合回零等待纪律)。 -- E3 追认:controls 键形实例变体 17 条豁免(同控件重建实例的旧键形静默——各家族代表实例已真点命中)超卡附录 C 面,随合并呈请用户追认;追认不过=该 17 条从豁免件移除、键形改造立工程批。 - -## 9. 批内验证读数汇总(改完即测铁规凭据) - -| 套件/探针 | 读数 | -|---|---| -| 单元全套件(T0 基线) | all green(86 套件)exit0 | -| schema_vocab_violation_test | all green(19 checks)exit0 | -| table_structure_guard_test | all green(100 checks)exit0 | -| adventure_feats_test | all green(144 checks)exit0 | -| treasure_effects_test | PASS 全绿 exit0 | -| seal_polarity_test | all green(76 checks)exit0 | -| stage_background_test | all green(23 checks)exit0 | -| meta_progression_forge_test | all green(182 checks)exit0 | -| round_flow_skill_pool_test | all green(142 checks)exit0 | -| variant_placement_test | all green(25 checks)exit0 | -| ui_click_probe | exit0 零脚本错误零 FAIL(十一组真输入命中);卡修续行复跑 exit0(seen 80/命中 85 次,dev_face_roots=3/skipped=708,开发面键 0) | -| screen_flow_probe | exit0;卡修续行复跑 exit0 PASS(seen 107,dev_face_roots=3/skipped=84,开发面键 0) | -| coverage_enum | 870 实体/缺口 211→164;卡修续行复跑 868 实体(cell_mark_overlay/debug_overlay 出圈)/缺口 163/未豁免未补测=0 | -| 两探针并集零命中 | 116 键→controls 豁免覆盖后 0 残留;卡修续行归并口径(去尾序位+折叠空锚段)零命中 9 键全被 controls 19 条覆盖=0 残留,开发面键 0 | -| board_shot_probe | 卡修续行 PASS exit0(六类型全入帧:变异角标 L2×4/真视框×3/徽章 9·3·3/点迹·高亮·退色×3);双帧比对 PASS | -| 渲染闸 | 基线换代后本地全绿(golden 对比全过,b5a981ef) | diff --git a/reports/iter55-验收审计-2026-11-07.md b/reports/iter55-验收审计-2026-11-07.md deleted file mode 100644 index 5800e24d..00000000 --- a/reports/iter55-验收审计-2026-11-07.md +++ /dev/null @@ -1,142 +0,0 @@ -# 迭代 55 验收审计——QA 覆盖余量收口批(2026-11-07) - -> **审计身份**:独立验收审计(未参与本迭代实现,只读审计)。仓库 `D:\code\g-plan2-iter55`(分支 iter55,基线 master=bb6b1726)。 -> **审计输入**:需求卡片 §8 对照表 V1–V16/§4 禁削弱申报/§16 验收档;实现报告 §2 实际对照表/§6 两项 L3 呈报;`git diff master..iter55`(10 笔提交、17 文件,逐文件读过);测试文件本体与探针文件本体。 -> **验收档:中**(test-conventions §8.7 中档)。**实际执行深度**:对照表逐行全量核对(16/16,逐行 grep 测试文件核实断言存在与形态,不采信实现报告「已全绿」);判据绑定面抽查 4 行(V9/V10/V11/V12);测试削弱逐处删行核对(全 diff 删行 19 处逐一过);直查例外逐条沿先例核对(8 族);**最窄测试复跑省略**=以远端 CI 现查读数代证(合回未发生,记「待合回后 CI 代证」,见 §7)。审计动作仅只读 grep/git,未跑任何测试套件,除本报告外零文件改动。 - -## 1. 对照表逐行核对(V1–V16 全量) - -| # | 结论 | 依据(审计自证,非转抄报告) | -|---|---|---| -| V1 | **通过** | `game/tests/unit/schema_vocab_violation_test.gd` 在库:七检查函数(`_check_empty_tables`/`_check_settlement_vocab`/`_check_zero_flat_guard`/`_check_keystone_cost_domain`/`_check_use_phase_domain`/`_check_solver_frozen`/`_check_meta_tree_load_bearing`)逐函数读毕,19 处 Kit.check(空表×8+settlement×3+zero_flat×2+keystone×1+use_phase×2+solver×2+load_bearing×1),〔QA余 V1〕尾缀 12 模板行全数 grep 命中;每函数带「判据出处: test-conventions.md:67」注记(卡 T1 义务);`game/tests/run_all.gd:172` manifest 登记在案(expect=0,非负面套件,符合卡 §4 第 4 条 validate 诊断面通道);注入形态=`load(schema).new()`+真行 deep duplicate(禁改共享 Resource,卡 T1 义务;严格型局部数组注释与 T1 提交的假绿修复记录一致)。真实入口=各表 schema `validate()` 直调,零绕过。 | -| V2 | **通过** | `table_structure_guard_test.gd:_check_settlement_pin_values`(:672 起)5 断言读毕:equivalence_ref_damage==4(含审计镜像注记)+p_perfect==200+p_perfect=100 活性断言(clear_reward 伤害行 ×1)+表值还原 200+构造启动前置。〔QA余 V2〕×4 grep 命中(构造启动为夹具断言无尾缀——报告「5 断言」口径一致)。活性断言的 `s._facts.perfect_hit_true=1` 注入与 `grant_clear_reward` 直调=master 在役同款(`seal_polarity_test.gd` master :383-386、`feat_vouchers_test.gd` master :207-211 先例),直查例外成立(§4)。 | -| V3 | **通过** | `_check_curio_cap_segment_pins`(:708 起)七槽 ap/armor/heal/max_hp/rap/refresh/time_sand 逐槽 `curio_cap()` 读表钉 99,〔QA余 V3〕grep 命中,与 gp/attack 既有钉同款。断言文本以槽短名引用故缺口 id 走豁免登记(`coverage_exemptions.js` cap 九槽族 reason 明示)——形态自洽。 | -| V4 | **通过(微偏差备案)** | `adventure_feats_test.gd:_check_ticket_quota_exhausted`(:926 起)6 断言读毕:生产配额==2 读表、consider 恒 false(保底同置满排除他因)、3 次 node_curio_candidates 零凭证、分支零记账、夹具还原。〔QA余 V4〕×4 grep 命中。`_deck.ticket_appeared/ticket_pity` 直填=同套件 master :564-573 `_deck.ticket_sold/ticket_pity` 测试通道先例同族(§4)。**微偏差**:卡 V4 真实入口栏写「`AdventureRunner.present_node_curio()` 链」,实现走 `node_curio_candidates()→draw_candidates→consider`(同链上游段)——报告 §2 已如实申报该链名,链族一致,判为备案不判缺漏。 | -| V5 | **通过** | `treasure_effects_test.gd:_test_rap_transfer_row_e2e`(:428 起)5 断言读毕:add_item 入库→装配直注起战→`attune_param_sum==125`(生产行值主证)→停手转存按 grant_segment 生产入参形态兑付。字面量 125 旧路径**保留并存**(diff 纯增量,:128-146 区域未触碰)——卡 T2「替字面量路径作行值主证」+报告「保留并存」一致,零削弱。〔QA余 V5〕×5 grep 命中。 | -| V6 | **通过** | `stage_background_test.gd:_test_ap_bar_height_from_table`/`_test_log_band_settle_height`(:181-201)3 断言读毕:视图几何==ap_bar_h==44、dig 态==log_band_h_dig、settle 态==84;生产读点经 `ApBarView._init`/`BattleLogView._init` 装配链(真实实例化+add_child)。〔QA余 V6〕×3 grep 命中。 | -| V7 | **通过** | `meta_progression_forge_test.gd` 四函数(:866-972)+`_ks_row_level` 共用读数面读毕:ks_workshop 行值/零价/前置拒购/购买前后投影、ks_refresh 同账路由(tree_buy→buy_attune_refresh,扣 meta 行 L1 30 币非树 price 面)/二次购 60/零刷新分支拒+零消费/fork 两行行值+侧名/tree_buy_fork 真链/fg_economy 组投影+切侧规则键换/spine 脉络读生产表行名。〔QA余 V7〕×10 模板行 grep 命中(循环模板展开后实跑断言≈30,报告「12+」为下界口径成立)。存档名册 +4 路径=纯增量(原 3 路径保留)。 | -| V8 | **通过** | `_check_reward_row_pins`(:726 起)2 断言:扫描面非空前置(防空表静默绿)+生产行 stacks 全 1 钉(行值面变更即红)。〔QA余 V8〕grep 命中。 | -| V9 | **通过** | `round_flow_skill_pool_test.gd:_check_defensive_stance_values`(:1165 起)读毕:生产行值钉(-25 percent/2 settlements/accumulate max_stack 1)+种子狩猎 401 内真实链施放 desperate_guard(压 HP 触发 self_hp_pct——测试通道弱形式当场标注)+个体池 effective_value==-25+施放行 duration==2+容器级再授不翻倍(卡 T6 明示 roll_multiplier 先例形态;master `roll_multiplier_test.gd:238-255` 同款直查先例成立)。〔QA余 V9〕×5 grep 命中。 | -| V10 | **通过** | `reward_grant.gd:416-425` 接线读毕:`perfect_mult := int(db.combat.settlement.core.p_perfect)/100` 经 ConfigDB 既有读法(db 句柄,零自建 load),`perfect_mult>=2` 门控第二份,高光计数 `(1+(1 if second_ok else 0))` 与原 `(2 if second_ok else 1)` 在 200 档逐位同=行为零漂移坐实;p_perfect 字面量零残留(grep 只余注释与换算)。活性断言(V2 内)+seal :330-401 既有真实流完美双份兑付段未触碰(:331-344 现读在案)。 | -| V11 | **通过(初版附未通过项 U1,已修复闭合——§10)** | `_test_l3_rockfall_minedust_rows`(:377 起)7 断言读毕:候选池两行值钉+200 种子真实布置段两行放置可达+rockfall 经 `fx_reveal`→授予段兑付行值==3(fx_reveal 直调=master `round_flow_skill_pool_test.gd:1101` 先例)+mine_dust 遮蔽数据面命中且无变异格零遮蔽。〔QA余 V11〕×6 grep 命中。初版发现同一提交(8054f959)移除了 `_smoke_global_variant()` 调用(U1,见 §3)——复验确认已由 857f24d5 修复闭合。 | -| V12 | **通过** | `seal_polarity_test.gd:_check_enemy_alert_production_row`/`_check_ap_drain_production_row`(:835 起)4 断言读毕:生产行对象 `row_by_id` 直读、走 `grant_routed` 同链(master :744-774 同款直调先例)、警觉 effect_id 随生产行、迟滞排队增量==-row.power——断言真值依赖生产行值,行值变更即红。**合成行旧断言保留并存**(seal diff 纯增量,master :772-774 合成行段未触碰)——卡 §4 G8 并存申报兑现。〔QA余 V12〕×4 grep 命中。 | -| V13 | **例外(E2)——十组落地一组未落地,呈报一致** | `ui_click_probe.gd` 扩面段逐段读毕,十组真输入+落点断言逐段核实:图例关闭(:1200-1225 真点开层+「关闭」钮真点,原 `.close()` 直调已改真输入——强化)、节点继续(:651-663 一次性落点断言)、三选一刷新(:698-705 落点=停点保持重投喂)、商店购买+刷新(:722-757 出账断言)、秘宝架四钮(购买10/25 出账+装配入装配集+升级 refresh_level+1)、树面高档三钮+ks_refresh 30 档+先手压制 A 侧回切(reload 持久断言)、弃图刷新确认链(:1321-1341 chips 出现+RAP8 扣账落点)、地图放弃(:985-1027 独立新局二击落点=终局面)、Esc 真键浮窗设置(:365-390)、减动效+全屏两拨杆(:527-555 store 态断言,原 `button_pressed` 直改已改真点——强化)。〔QA余 V13〕×35 grep 命中。**进入下一层组未落地=L3-2**(代码事实核实成立:`main.gd:360` 头注「仅调试模式接线」逐字在案,inter_overlay 仅 debug decision `next_layer` 可达——见 §5 E2)。删行九处全部为直改→真输入强化替换或备案参数改(§3)。 | -| V14 | **例外(E1)——未落地,呈报一致** | `ui_struct_probe.gd` 零触碰(diff 无此件)=V14 未实施,与报告 §2「未落地——L3-1」一致。代码事实核实成立:`cell_mark_overlay.gd:8` `extends RefCounted`(绘制域件,无 visible/开层动线/遮挡物语义);`tools/coverage_enum.py:45` `VIEW_KIND_RE=(screen|overlay|panel)$` 按文件名后缀误分类坐实——L3-1 前提「模态断言无被测面可绑」成立(§5 E1)。 | -| V15 | **通过(附例外 E3)** | `tools/coverage_exemptions.js` 程序计数:ontology 154 条(无重复 id)+controls 22 条——与报告 §2/T10 提交「154+22」逐字一致;头注纪律保留(人工维护/禁代码生成/reason 承载=逐族注释照抄卡附录 B);面板消费面核实:controls 走中缀包含(`coverage_report.html:185` `k.indexOf(e)>=0`)、ontology 精确匹配(:209 `ex.includes`)——文件头注与消费语义一致。**cell_mark_overlay 未入 ontology 豁免**(grep 零命中)=可见缺口 1,与报告 §2/§6 L3-1 口径一致;**`(root)/Button#进入下一层` 已入 controls 开发面**(随 L3 追认注记),与报告 §3.5/§6 L3-2 口径一致。**例外 E3**:controls 新增「键形实例变体」17 条中缀豁免,超出卡附录 C 豁免面(开发面 9 键+进程终结 2 键),见 §5。T10 对账读数(缺口 211→164→可见 1;controls 116→0 残留)为实跑申报,审计未复跑——待合回后 CI 代证(§7),纸面算术观察见 §6 O1。 | -| V16 | **通过** | `_check_meta_per_level_pins`(:694 起)三关档 max_hp 6/atk 9/armor_class 1 逐槽读表钉,〔QA余 V16〕grep 命中。 | - -## 2. 判据绑定面抽查(中档 ≥3 行,实抽 4 行) - -1. **V10 活性断言**(guard `_check_settlement_pin_values`):从真实编排器构造进入(begin_battle 真实启动+`_facts` 完美谓词——master seal :383 同款先例),钉在被测改动特有的提交面=`grant_clear_reward` 内 p_perfect 读表门控;表值注入 100 后伤害行 ×1、还原 200 有闭合断言——「接线但弃用」死接线在该面必红。绑定成立。 -2. **V12 生产行兑付**(seal 两函数):`row_by_id` 读生产 reward 行→`grant_routed` 同链兑付→断言真值随行值(effect_id/power)——行值变更即红,判据直接绑「合成行未读生产行」这一被测缺口。绑定成立。 -3. **V11 变异行效果通道**(variant_placement 新函数):真实布置段(begin_battle L3→deep_underdark 候选池)→放置可达→fx_reveal 挖开→兑付伤害行 display 落石值==3——判据绑「L3 两行零放置零断言」缺口的放置与兑付双面。绑定成立。 -4. **V9 状态行值**(round_flow 新函数):生产行值钉+真实施放链(种子狩猎)+个体池读数+容器级再授——判据绑「defensive_stance 零值断言」缺口的行值与行为两面。绑定成立。 - -## 3. 测试削弱检查(全 diff 删行 19 处逐一核对) - -删行清单(`git diff master..iter55` 全量 grep `^-`):reward_grant ×2、probe_ui_util ×4、ui_click_probe ×9、run_all ×0(纯增)、八个测试件中七件纯增、variant_placement ×2、coverage_exemptions ×3(空数组填充+头注扩展)。逐处结论: - -| 删行 | 判定 | 申报面 | -|---|---|---| -| reward_grant.gd `if perfect and first_ok:`/`×2` 高光行 | V10 接线替换,行为零漂移已核(§1 V10) | 卡 V10/T2 申报 ✓ | -| probe_ui_util 滚动基准 4 行(面板基准→ScrollContainer 祖先,64px→8px 让位) | 测量面滚入参数修(代拍板白名单「滚入参数」),修因备案(秘宝匣 336px 裁剪误判) | 报告 §3.2 ✓ | -| ui_click_probe `motion_btn.button_pressed=false/true` ×2 | 直改→`push_click` 真点,周边断言(motion_scale/持久化)保留 | 报告 §3/T9 提交 ✓(强化) | -| ui_click_probe `set_sliders(400,200)` | 参数改 2000/2000,基线对照实证备案 | 报告 §3.1 ✓ | -| ui_click_probe `push_click(node_overlay._btn)` | 原句保留于 else 分支,一次性段新增锁定/落点断言 | T9 ✓(强化) | -| ui_click_probe reward 优选选路 5 行 | 原逻辑保留于回退分支,前置休息候选优先段为纯增 | T9 ✓(强化) | -| ui_click_probe `legend_overlay.close()` | 改「关闭」钮真点,`.close()` 降为 null 守卫兜底且前置 `_problems` 呈报 | T9 提交 ✓(强化) | -| **variant_placement `_smoke_global_variant()` 调用** | **初版未通过项 U1——已修复闭合(857f24d5,§10)**:master :31 在役调用曾被移除,函数体(:150 起)留盘成死代码——33 处 Kit.check 断言退出执行(互锁负样本③–⑦、门控三维、全局决议、Boss 兜底回落、资源面偏斜守恒/白名单/合成序、wr10 三面、确定性对拍——逐行读毕计数),断言字符串全仓 grep 无第二宿主(未搬移)。复验核对:调用行已恢复至执行序 master 原序(iter55 :30,带审计注记),套件复跑 58 checks=原 25+复归 33 恰合 exit0。 | 初版申报缺口:卡 §4「测试削弱零申报不发生——本批零删除断言」、§14「纯增量……零删改既有函数」、报告 §2/§3、T7 提交信息均零申报,`game/tests/README.md:90` 能力行仍列该函数为在役代表用例。修复提交(857f24d5)已逐项转记违规事实与读数,实现报告补 §7 审计结果节。 | -| variant_placement pack_min 断言行 | EOF 缺换行符修复(同文逐字重加),非削弱 | —(无申报义务) | -| coverage_exemptions 空数组/头注 3 行 | 豁免登记本体(V15 收件面) | 卡 T10 ✓ | - -**G8 并存专项**:seal 合成行旧断言(master :772-774)与 treasure 字面量路径(master :128-146)均未触碰——卡 §4「合成行旧断言一律保留」兑现。**阈值放宽**:零(8px/2000/2000 为测量与行为参数,非断言阈值,均有备案)。 - -## 4. 直查例外核对(逐条沿先例) - -| 注入/直查面 | 先例(master 在役) | 判定 | -|---|---|---| -| `s._facts.perfect_hit_true/false` 写(V2 活性) | seal_polarity master :383-384/:398-399、feat_vouchers :207-211 | 成立 | -| `grant_clear_reward` 直调(V2 活性) | seal_polarity master :386/:401 同款形态 | 成立 | -| `grant_routed` 直调(V12) | seal_polarity master :744-774、level_shop_economy_test :917 | 成立 | -| `minesweeper.fx_reveal` 直调(V11) | round_flow master :1101 | 成立 | -| `_deck.ticket_appeared/ticket_pity` 直填(V4) | 同套件 master :564-573 `_deck.ticket_sold/ticket_pity` 测试通道同族 | 成立 | -| `_status_effects.apply_effect/query_active` 容器级(V9 叠层) | roll_multiplier_test master :238-255(卡 T6 明示先例形态) | 成立 | -| `meta_state._add_keystone`(探针树面注钥) | ui_click_probe master :84 既有同款(卡 T9「调试注钥」申报面) | 成立 | -| `rnr_shop.gp = 500`(探针商店可达) | 单元侧先例 curio_refresh_paid_test :52/forge :812;探针侧为该先例族在探针面首次使用,T9 提交信息当场申报「测试通道注GP」 | 成立(备案) | - -## 5. 已知例外与例外面核对 - -- **E1(L3-1,cell_mark_overlay)——申报一致性核实通过**:未落地事实(ui_struct_probe 零触碰)、代码事实(RefCounted 绘制域件、enum 后缀误分类)、报告四处口径(§1 T9 行/§2 V14/§5 名实不符/§6 呈报)、豁免面(ontology 未登记该 id=可见缺口 1)五点互相一致。属卡 §9 预授权停机点(到达性/前提类),不算审计失败。 -- **E2(L3-2,进入下一层)——申报一致性核实通过**:代码事实核实成立(`main.gd:360` 「仅调试模式接线」头注逐字在案;inter_overlay 唯一显示点为 debug decision `next_layer` 分支);controls 已按开发面预登记 `(root)/Button#进入下一层`(注记「随迭代 55 L3 呈报呈请追认」);报告 §3.5/§6 与文件口径一致。属卡 §9 预授权停机点③(到达性失败),不算审计失败。 -- **E3(键形实例变体豁免面扩张)——超卡面,需用户追认**:controls 22 条中「键形实例变体」17 条(save_select 三钮/shop 购买/treasure 四钮/tree 八钮)不在卡附录 C 豁免面(开发面 9+进程终结 2)内,亦非卡 §10 代拍板白名单或 §9 L2(reason 文案微调)可承载的裁决——附录 C 对这些键的裁决是「真缺口·动线扩面=T9 真点命中」,不是豁免。T10 提交信息有 breakdown 申报、文件内逐族 reason 在案(键形改造归工程批另登的卡 §5 口径亦抄注),十组扩面真输入与落点断言已核实存在(§1 V13),故不判测试削弱;但该 17 条使登记件旧键形永久静默(watchdog 面收缩),属对账口径裁决,**应随两项 L3 一并呈请用户追认**;报告 §6 未将其升格列呈报点,属呈报完整性缺口。 -- **计数口径微瑕(O2)**:报告 §1 T9 行「十一组动线全数真输入命中——进入下一层组未落地」的「十一组」与卡附录 C 的 V13 十一组(含进入下一层)分组口径不同(提交信息把树面拆「树购/先手」两组凑十一);实质事实(附录 C V13 十一组中十组落地、进入下一层未落地)两处一致,仅计数口径不一致。 - -## 6. 观察项(不判未通过,留 CI 代证/追认) - -- **O1**:T10 读数纸面算术未对齐——未关联缺口 164−ontology 豁免 154=10,与「未豁免未补测=1」差 9;豁免为精确匹配语义,纸面推不出该差值的去向。T10 为实跑读数(工具已在真实跑批中执行),判读以实跑为准,**待合回后 CI 复跑代证**;若 CI 读数≠1,按红账处置。 -- **O2**:见 §5 计数口径微瑕。 -- **O3**:卡 T10「验证:面板打开无红示警」在报告 §1 T10 行无对应读数记载(面板 reason 标红机制消费面未在报告留痕)——随 CI 批留痕即可。 - -## 7. 最窄测试复跑——省略声明(中档) - -按卡 §16 与 test-conventions §8.7 中档,最窄复跑省略,以下读数以远端 CI 现查代证(合回未发生,**待合回后 CI 代证**):单元全套件与各触碰套件绿读数、两探针 exit0 与十一组命中键清单(`game/tests/.gates/coverage/` 不入 git,命中键无法从 diff 核实)、coverage_enum 对账读数(缺口 164/可见 1/controls 0 残留)。审计对断言存在性、形态与绑定面的核实均为静态逐行自证,不依赖上述读数。 - -## 8. 逐卡验收档与执行深度 - -| 卡 | 验收档 | 实际执行深度 | -|---|---|---| -| T0 开工 | 中 | 中档——读数锚与卡逐字同(报告 §1),审计未复跑(CI 代证) | -| T1/V1 | 中 | 中档全量——七函数逐行读毕+manifest 核实+先例核对 | -| T2/V2/V10/V16 | 中 | 中档全量——接线逐行读毕+字面量残留 grep+回归面在案核实+活性断言先例核对 | -| T3/V3/V4 | 中 | 中档全量——七槽与配额满六断言逐行读毕+直查先例核对 | -| T4/V6 | 中 | 中档全量——两函数三断言逐行读毕 | -| T5/V7 | 中 | 中档全量——四函数逐行读毕+真链入口核实 | -| T6/V9 | 中 | 中档全量(抽查行①)——值/持续/叠层三面读毕 | -| T7/V11 | 中 | 中档全量(抽查行③)——七断言读毕;同提交删行曾坐实 U1(已由 857f24d5 修复闭合——§10) | -| T8/V8/V12 | 中 | 中档全量(抽查行②)——生产行两面读毕+并存申报兑现核实 | -| T9/V13 | 中 | 中档全量——十组逐段读毕+删行九处逐一核对;进入下一层组=E2;hits 增键 CI 代证 | -| T9/V14 | 中 | 中档——未落地事实与五点口径一致性核实(E1) | -| T10/V15 | 中 | 中档——豁免件程序计数(154/22/无重复)+消费语义核实+两例外口径核实;工具读数 CI 代证;例外面 E3 | -| T11 | 中 | 中档——产出物三件在案核对;名实不符申报(cell_mark 段)与 L3-1 一致;初版指出收尾核对漏列 U1 与 README 能力行 `_smoke_global_variant` 名实失守(已随 857f24d5 处置转记——§10) | - -## 9. 审计结论(复验后终版) - -**通过(E1/E2/E3 例外随 L3 裁决包处理,O1 观察在案)。** - -初版未通过项处置(1 项,已闭合): - -1. **U1(测试削弱未申报,违卡 §4 红线)——已修复闭合**:T7 提交(8054f959)曾将 `game/tests/unit/battle_settlement/variant_placement_test.gd` 调用序中的 `_smoke_global_variant()` 移除(master :31→删行),函数体留 :150 成死代码——33 处在役断言(变异表互锁负样本、门控三维、全局决议、兜底回落、资源面偏斜守恒与合成序、wr10 接线三面、确定性对拍)退出执行且全仓无第二宿主,卡 §4「零删除断言」/§14「纯增量」零申报,README:90 能力行名实失守。**窄复验闭合(§10)**:修复提交 857f24d5 恢复调用行至执行序 master 原序(iter55 :30,带审计注记)并逐项转记违规事实;套件复跑 all green 58 checks=原 25+复归 33,与本审计 33 条静态计数恰合;实现报告补 §7 审计结果节如实转记初版结论。 - -例外(3 项,均已在案,随 L3 裁决包处理): - -- E1(L3-1 cell_mark_overlay 未落地)——呈报五点口径一致,待用户裁决(改豁免或另立卡)。 -- E2(L3-2 进入下一层组未落地)——呈报与豁免预登记一致,待用户追认。 -- E3(controls 键形实例变体 17 条豁免超卡附录 C 豁免面)——T10 提交信息与文件 reason 在案,报告未升格呈报,待用户随两项 L3 一并追认。 - -观察项(2 项):O1 对账算术纸面未对齐(164−154≠1;实现报告 §7 已补记解释口径「缺口实例数≠唯一 id 数——同 id 跨类重复,机器读数以逐 id 比对为准」,仍待 CI 复跑代证);O2「十一组」计数口径与卡附录 C 分组不一致(实质一致)。 - -复跑省略代证项(1 项):最窄测试复跑省略+V13 hits 增键+V15 工具读数——待合回后远端 CI 现查代证。 - -合并放行条件:U1 已闭合,本审计不再阻塞合并;E1/E2/E3 属卡 §9 预授权停机面的用户裁决事项,裁决前不落实现动作。 - -## 10. 窄复验记录(2026-11-07,U1 修复后) - -复验范围(仅三项,零其余动作;只读 grep/git): - -1. **调用行与提交核对**:`git show 857f24d5`(iter55 分支最新笔)——variant_placement_test.gd 单行恢复 `_smoke_global_variant() # 审计 U1 修复恢复(T7 编辑回退分支误删调用——33 条在役断言复归执行)`,落位 :30=`_smoke_variant_placement(2)` 与 `_test_pack_min_from_table()` 之间,与 master 原序(master :29-32)逐位同;提交信息逐项转记违规事实(卡 §4/§14)、修因(编辑回退分支误删)与读数。 -2. **读数闭合核对**:58 checks=原 25+复归 33——33 与本审计 §3 对 `_smoke_global_variant` 函数体的静态 Kit.check 计数(33)恰合,闭合成立。 -3. **报告补节核对**:实现报告新增 §7「独立验收审计结果与处置」——初版结论(未通过/U1)、处置(857f24d5)、例外三项与 O1 转记逐项与本报一致。 - -附记:复验区间内分支另有一笔 4a9c844a(件核补笔)——V4 四断言补挂〔QA余 V4〕、V5 五断言补挂〔QA余 V5〕,diff 逐行核实为纯尾缀追加(断言逻辑零改动)+复跑读数在案(adventure_feats 144/treasure 全绿 exit0),属卡 §9 L1 自救范畴,不构成削弱;本审计初版 grep 读数即含该尾缀(审计时已在工作树),初版 §1 V4/V5 行结论不受影响。 - -## 11. 增量轮(卡修续行,2026-11-07) - -审计对象=卡修轮 2(master ef5d4679 版卡片)落地续行两笔 cf08a4ac(登记件开发面过滤+coverage_enum scan_screens 分类修正+豁免件删开发面 3 条)与 b5a981ef(board_shot_probe 采集态六类型注入+逐类型读数+棋盘三图基线换代);审计者=未参与实现与写卡的只读子代理,全结论自读码自证(两笔 diff 逐文件读毕+.gates 产物实测+先例核对)。 - -逐项结论(8 项全过,详据见子代理审计记录): - -1. 提交逐文件 diff 读毕无遗漏;2. 新卡 V13/V14/V15/V17 四行与实现报告 §2 行逐格一致,读数凭据三源互证(提交信息/报告 §9/.gates 实测:dev_face_roots=3、seen 开发面键 0、868 实体缺口 163、三张 PNG 入提交);3. cf08a4ac 零削弱(登记件纯增量 +36/−0,过滤纯减法;scan_screens 删行=卡 T10 申报面;豁免删 3 条三处裁决申报在案);4. b5a981ef 基线换代纪律四要件齐(显式重制/呈报/复闸/触发原因入提交信息),注入四链全真实写口或生产同源(set_treasure_overlays 生产 API、remove_mines_in 核心写口守卫前置、变异 resolver 生产同款构造、face 为每格自建实例非共享 Resource),既有双帧取证语义零削弱;5. 新函数零判定调用=无注记义务(既有注记位自洽);6. 过滤语义核验:三根互恰覆盖附录 C 开发面 10 键、seen 与登记同滤、null 分支只漏滤不误滤且有 seen 核对兜底;7. E3(键形实例变体 17 条)核实未处置仍在册——随合并裁决包呈请追认;8. 能力行两行与卡同文、代表用例在码。 - -发现清单:F1(golden/README 换代戳缺——**已随本审计落定补记**);F2(登记件头注「解析不到的根跳过并计数」措辞与实码偏差——**已随本审计落定改为注释级修正**,零行为改动、非行为改动备案);F3=E3 键形变体 17 条待用户追认(例外,随裁决包);F4(报告/审计本件待落盘——收口提交承载);F5(读数口径措辞「控件 51/命中 85 次」vs「seen 80/命中 85 次」各与 meta 语义吻合——备案)。 - -**增量轮结论:通过——无硬伤无阻塞项,E3 例外随合并裁决包处理。** diff --git a/reports/需求卡片-QA覆盖余量收口批-2026-11-07.md b/reports/需求卡片-QA覆盖余量收口批-2026-11-07.md deleted file mode 100644 index 841712b0..00000000 --- a/reports/需求卡片-QA覆盖余量收口批-2026-11-07.md +++ /dev/null @@ -1,278 +0,0 @@ -# 需求卡片——QA 覆盖余量收口批(B4/B5 复核分流落地) - -> **日期**:2026-11-07 / **批名**:QA覆盖余量收口批 / **预计**:≈8.75 个工作日(区间 7–10.5,切分预案见 §7 尾) -> **来源**:待办清单「QA harness 覆盖遗漏余量——B4 本体缺口与 B5 控件零命中缺口复核分流」(2026-11-07 登记,P0,待写卡)。 -> **唯一事实源**:本卡为需求性工程条目,设计事实源=证据指认(见 §2)。 -> **验收档:中**(失败后果=验证承载面静默弱化,玩家不可见、无状态残留;触多档按最高档申报口径取中)。 - -## 1. 目标与完成定义 - -把 QA harness 覆盖余量(B4 本体对账缺口 211 条/62 类+B5 控件级零真输入命中)逐条复核分流后的结论落地: - -- **真缺口**(45 条,附录 A):补验证——数据表违约词负面断言、表值钉、行为值断言、屏可见性断言、探针真输入动线扩面。 -- **豁免**(165 条,附录 B):登记进 `tools/coverage_exemptions.js`(假缺口/预留埋点/挂起件三类),面板亮豁免灯不亮缺口灯。 -- **出圈**(非豁免,附录 C 排除面+本体分类修正):开发面控件(调试浮窗/调试角标/inter 调试专用层)在覆盖登记层过滤、不入玩家可达宇宙;cell_mark_overlay 为绘制域件不入「屏与模态」本体清单(枚举器分类修正)——两者各归现役通道(渲染闸棋盘 golden/封装扫描),测试目的不豁免、换通道达成(§4 第 10 条)。 -- **完成定义**:①附录 A 全部真缺口有对应断言落地并跑绿;②附录 B 全部条目入豁免清单且带 reason;③重跑 `python tools/coverage_enum.py` 与两探针,本体缺口清单清零(未豁免未补测=0)+ui_click/screen_flow 零命中集合与附录 C 排除面一致(seen 集零开发面键);④单元测试全套件绿(新增套件+被触碰套件)+场景探针绿。 - -## 2. 设计事实源 - -需求性工程条目(改测试承载面与一处结算接线),跳过设计线,证据指认: - -- 待办清单条目「QA harness 覆盖遗漏余量——B4 本体缺口与 B5 控件零命中缺口复核分流」(`待办清单.md`,2026-11-07 登记,P0,状态待写卡)。 -- 登记处证据:`reports/QA-harness三批-缺陷与覆盖遗漏报告-2026-11-06.md`(B4=`game/tests/.gates/coverage/ontology_gaps.js`+覆盖面板第四节;B5=`probe_hits_ui_click.js`/`probe_hits_screen_flow.js` 的 seen−hit 差集;诚实边界=:42 假缺口假覆盖须人工逐条复核)。 -- 本卡写卡段复核分流逐条裁决=附录 A(真缺口 45 条)/附录 B(豁免 165 条)/附录 C(B5 零命中 94 键归并裁决;轮 2 用户裁两处出圈改判),由两名未参与撰写的只读子代理分裁决+写卡人按普查口径与代码事实校准(校准记录见 §17 复核记录)。 - -## 3. 现状事实(代码级,开工自行复核) - -- **对账工具语义**:`tools/coverage_enum.py:14-22` 枚举五源(表行/schema 词表与字段/场景按钮/自绘命中类/屏与模态),断言文料=`tools/extract_checks.py` 提取的 unit+system_test 全量;`:127` 按 id 文本包含记关联。诚实边界自述=假缺口(断言测了但文本没带 id)与假覆盖(文本带 id 但断言弱)。 -- **B4 数据**:`game/tests/.gates/coverage/ontology_gaps.js`(2026-11-07 05:22 重生成)=870 实体/缺口 211 条(62 分组中 40 组带缺口)。QA 报告记 212 条——elite 行随迭代 54 卡 3 入表致数据漂移 1 条,本卡以重生成读数为准。 -- **B5 数据**:`probe_hits_ui_click.js`(seen 91/真输入命中 38 次·去重 27 键)与 `probe_hits_screen_flow.js`(seen 116/真输入命中 25 次·去重 19 键),生成于 2026-11-06T07:55——**早于迭代 54 合回**,其零命中集合含已修复项(停手钮)。两文件键形双源:BaseButton pressed 走场景路径键(`…camp_scene_view/Control#chest`),营地自绘物件走 `camp_object#chest` 裸键——同一物件两键形。 -- **iter54 已收口不重做**:A1/A2/B1/B2 随迭代 54 卡 1 完成(能力行 `game/tests/README.md:170-172` 计划测试已转实锚);停手钮真输入已落(`ui_click_probe.gd:_stoptest_tick`)。 -- **p_perfect 脱节**:表值 200 在册(`game/data/tables/settlement.tres:29`,域 `{100,200}` 冻结于 schema),GDD 句声称读表(`design/gdd/systems/战斗循环/战斗结算.md:124`),实现为结构硬编码不读表(`game/core/reward_grant.gd:418-421`)——触「数值单一事实源」红线,本批接线读表(§7 T2,值若相等=行为零漂移)。 -- **equivalence_ref_damage 运行时零消费**:表值 4 在册(`game/data/tables/settlement.tres:34`),唯一消费=离线审计工具手工镜像常量(`tools/clear_dominance_audit.py:39` D_REF=4),零测试钉——漂移即审计口径静默失效。 -- **cap 段半钉**:`game/tests/unit/table_structure_guard_test.gd:114-115` 只钉 `curio_cap("gp")==99`/`curio_cap("attack")==99`,其余七 cap 槽零断言;quota 段 13 槽与 value 段 13 槽已由和锚+逐槽钉值承载(`:104-113`)。 -- **树面**:购买钮禁用态由 `can_buy` 驱动(`game/presentation/views/tree_view.gd:74`)——高档钮在探针存档内不可负担=禁用=真输入不可达,须经调试注钥后驱动;fork 组只走 fg_posture 正例与 fg_sense/fg_mastery 反例(`meta_progression_forge_test.gd:588,620,622-631`),fg_economy 组零断言。 -- **变异**:`variant_placement_test.gd:29-30` 只布 L1/L2——第三关两行(rockfall/mine_dust,`variation.tres` deep_underdark)零放置零断言。 -- **秘宝 rap_transfer_mult**:消费接线在役(`game/core/grant_segment.gd:301`),行为测试用字面量 125 直调数学面未装配真实行(`treasure_effects_test.gd:128-146`)——行值变更零测试失败。 -- **状态行 defensive_stance**:同族状态行有值断言先例(`round_flow_skill_pool_test.gd:944,1119` empower/off_guard),本行零。 -- **豁免清单机制现成**:`tools/coverage_exemptions.js`=人工维护、面板与工具只读、每条必带 reason(`:1-4`);`coverage_enum.py:145` 明写「人工核销走豁免清单,不落本文件」。 -- **枚举分类与调试面(实现段 L3 回退坐实,2026-11-07 用户裁)**:`tools/coverage_enum.py:45` VIEW_KIND_RE 按文件名后缀归类「屏与模态」——`game/presentation/views/cell_mark_overlay.gd`(RefCounted 绘制域件,CellUnit 拆件,:7 `extends RefCounted`,无 visible/开层动线/遮挡物语义)误入;调试面接线与标注证据=`game/presentation/main.gd:361`「仅调试模式接线」(inter 覆盖层唯一显形写点=调试分支 `main.gd:370`,正常冒险层间推进归 AdventureRunner)+`debug_overlay.gd:1-3` 调试浮窗头注+`main_ui_build.gd:244-246` 装配注——三处散文标注在案,机器过滤单点缺位;过滤可依的成员引用单点=`ui.screens.debug_badge`(main_ui_build.gd:185)/`ui.modals.menu.debug_overlay`(:250,class_name DebugOverlay)/`ui.screens.inter_overlay`(ui_screens.gd:13)。 -- **预留埋点口径**:`reports/普查-效果通道与事件词零现役-2026-11-06.md` §1/§2——词表先行内容后接,零现役词面全部保留;秘宝表旧词 9 个「迁移完成」收尾待用户另裁(不在本批)。 - -## 4. 设计契约(违反即返工,🔴 触碰=L3 停机) - -- 🔴 **禁变异类测试与撤销类取证**——人为制造红属伪造证据(test-conventions §8.4);每条断言从真实入口进入、判据绑被测改动特有的可观测提交面。 -- 🔴 **豁免清单只手工编辑**——`tools/coverage_exemptions.js` 禁代码生成、禁随跑覆写(文件头纪律);每条豁免必带 reason,无理由条目面板标红。 -- 🔴 **探针驱动一律走真输入管线**——合成 InputEvent 经 `push_input`、press+release 成对(test-conventions §2);信号直发只许〔接线断言〕位并当场标注。 -- 🔴 **G1 违约注入走 validate 诊断面、禁混进现役非负面套件**——本卡全部违约词经各表 schema `validate()` 直调取 errs 断言(非致命通道,不进 manifest negative 名单);若实装发现某违约词只在 load_tables 致命通道暴露,停机呈报另立独立负面套件(test-conventions §5.6)。 -- 🔴 **数值单一事实源**——p_perfect 接线只经 ConfigDB 既有读法取 `settlement_core_table` 行值;禁自建 `load()`、禁第二处数值字面量。 -- 🔴 **实现批禁写 `design/` 与根规则文件与 `game/tests/README.md`**——能力行已随本卡(写卡段)入表;收尾核对发现名实不符=停卡呈报(回表走写卡段通道,实现段不自行改表)。 -- 🔴 **测试削弱零申报不发生**——本批零删除断言;G8 的合成行断言一律保留、新增生产行断言并存(申报面见 §8 尾)。 -- 🔴 **拆分边界沿职责轴**(code-conventions §1.1)——新增负面套件=「schema 违约词拒绝路径」单一职责一件;禁为凑对照表行数拆碎或为省文件混装无关违约。 -- 🔴 **开发面不入对账宇宙(2026-11-07 用户裁)**——调试面控件(DebugOverlay 浮窗/调试角标/inter 调试专用层)在覆盖登记层过滤、不产豁免条目:豁免=在玩家可达范围内特批不做,开发面本就不在该范围内,列豁免=范围定义错误;过滤边界按成员引用/类型单点判定(§3 枚举分类与调试面条),禁逐键黑名单。屏与模态分类按实体基类(场景节点型)判定,禁文件名后缀近似。 - -## 5. 范围边界 - -**收件**:附录 A 真缺口 45 条的验证补齐+p_perfect 接线+附录 B 165 条豁免登记+附录 C B5 探针动线扩面(十一动线组)+开发面出圈(登记件过滤+枚举器分类修正)+cell_mark_overlay 显示正确性渲染通道核对。 - -**不收件(去向在案)**: - -- 普查在册预留词不重开:本批新认定预留词(ap_grant/risk/cell_removal/neq/hero_hp_pct/slot_cost/chain_ap_cost/move_ap_cost/ap_rounds_front/effective_rounds/mine_hit_halve/reflect_damage/refresh_pick/reward_weight_bias)随附录 B 豁免,词面不动;秘宝表旧词 9 个「迁移完成」收尾归普查条目待用户裁,不属本批。 -- `settlement_review_overlay` 挂起死件不动(生涯条目承载处置两途)。 -- iter54 已收口面(A1/A2/B1/B2/B3/B6)不重做;停手钮零命中属数据陈旧,随附录 C 排除。 -- B5 双源键形差异以人工复核记录(附录 C)承载,键形改造若要做归工程批另行登记(开发面过滤按调试面边界判定、非键形修正,随本批 T9)。 -- 未入探针 seen 的屏(如关卡结算屏族)不在 B5 对账面(登记件完备性边界在案);cell_mark_overlay 非屏与模态实体(RefCounted 绘制域件)——本体清单出圈(枚举器分类修正承载,T10),显示正确性归渲染闸棋盘 golden(T9 核对步,锚 test-conventions.md:100)。 -- 豁免≠放弃:预留埋点词未来接线内容时须撤豁免补验证(撤豁免动作随接线批走)。 - -## 6. 关联文档同步面 - -| 文档 | 关联点(本批实现会改变它的哪条陈述) | 同步义务 | -|---|---|---| -| `design/gdd/systems/战斗循环/战斗结算.md` v1.8 | :124 完美第二份兑付「读表」句——接线后该句由声称变属实 | 零文本改动义务;若 T2 核对发现硬编码值≠表值(L3 案),反哺点登记句义与实现形态冲突 | -| `game/tests/README.md`(能力清单) | 本批新增能力行与代表用例更新 | **已随本卡入表**(写卡段义务,随卡同一 worktree 提交);实现照单落名,名实不符=停卡退回 | - -反哺点清单随实现报告落 `reports/iter-反哺点-<日期>.md`(预期零条,上表第一行为条件触发)。 - -## 7. 任务卡 T0..T11 - -**卡前·文件结构图**(每个文件一行:路径+职责+行为改动标注): - -| 文件 | 职责 | 行为改动 | -|---|---|---| -| `game/core/reward_grant.gd`(存量触碰) | 完美第二份兑付改读 ConfigDB 表值(:418-421 硬编码点) | 是(接线,值相等则可观测零漂移)→ 对照表 V10 | -| `game/tests/unit/schema_vocab_violation_test.gd`(新增) | G1 十六违约词 validate 诊断面断言 | 非产品码(测试承载)→ V1 | -| `game/tests/unit/table_structure_guard_test.gd`(存量触碰) | +4 检查函数:settlement 钉值/cap 段七槽钉值/reward stacks 行钉/meta per_level 钉 | 非产品码 → V2/V3/V8/V16 | -| `game/tests/run_all.gd`(存量触碰) | manifest 登记新套件 `schema_vocab_violation_test`(`_suites()` 显式枚举面,:167-175) | 非产品码(套件注册) | -| `game/tests/unit/adventure_feats_test.gd`(存量触碰) | +1 检查函数:feat_ticket_quota 配额满分支 | 非产品码 → V4 | -| `game/tests/unit/treasure_effects_test.gd`(存量触碰) | +1 检查函数:rap_transfer_mult 真行端到端 | 非产品码 → V5 | -| `game/tests/unit/stage_background_test.gd`(存量触碰) | +2 检查函数:AP 条高/结算日志带高读表断言 | 非产品码 → V6 | -| `game/tests/unit/meta_progression_forge_test.gd`(存量触碰) | +4 检查函数:ks_workshop/ks_refresh/fork 两行/fork 侧投影 | 非产品码 → V7 | -| `game/tests/unit/round_flow_skill_pool_test.gd`(存量触碰) | +1 检查函数:defensive_stance 值断言 | 非产品码 → V9 | -| `game/tests/unit/variant_placement_test.gd`(存量触碰) | +1 检查函数:L3 两变异行放置+效果 | 非产品码 → V11 | -| `game/tests/unit/seal_polarity_test.gd`(存量触碰) | +2 检查函数:enemy_alert/ap_drain 生产行读值 | 非产品码 → V12 | -| `game/probe/ui_click_probe.gd`(存量触碰) | 动线扩面十一段(附录 C 真缺口面) | 测量面 → V13 | -| `game/probe/probe_coverage_recorder.gd`(存量触碰) | 开发面过滤——`_wire_buttons()` 按调试面边界跳过(DebugOverlay 类型+inter_overlay/debug_badge 引用子树) | 测量面 → V17 | -| `tools/coverage_enum.py`(存量触碰) | `scan_screens()` 屏与模态分类修正——按 extends 场景节点基类,绘制域件与调试浮窗出圈 | 工程配套(对账工具,随批) → V17 | -| `tools/coverage_exemptions.js`(存量触碰) | 附录 B 165 条登记+controls 开发面 3 条删除 | 工程配套(面板配置,随批) | - -### T0 开工(0.25 日) -- [ ] worktree 内拷导入缓存三件套,`git status` 归属核对 -- [ ] 改前读数锚:`python tools/coverage_enum.py`(缺口 211 读数)+两探针跑批落 `.gates`(零命中基线)+单元全套件绿读数 -- [ ] 读数写进本步提交信息 - -### T1 G1 schema 违约词负面断言(1.0 日) -- [ ] 新增 `game/tests/unit/schema_vocab_violation_test.gd`:七个检查函数——`_check_empty_tables`(八表空行集注入→errs 含 empty_table)、`_check_settlement_vocab`(missing_segment/pperfect_oob/segorder_violation 三注入)、`_check_zero_flat_guard`(feat+treasure 两表 zero_flat 白名单违约注入)、`_check_keystone_cost_domain`(meta attune 行 keystone_cost 域外注入)、`_check_use_phase_domain`(treasure use_phase 出域注入,覆盖 active_dig 枚值面)、`_check_solver_frozen`(board_gen solver_rules="single" 注入→frozen 拒,同钉 single_subset 冻结语义)、`_check_meta_tree_load_bearing`(meta_tree 彩蛋 cap>3 违约注入→category=load_bearing) -- [ ] 注入形态沿在役先例 `load(schema).new()` 新实例+行注入(`meta_progression_forge_test.gd:581` 同款)——禁改共享 Resource(避引擎 Gotcha:共享 Resource 池污染) -- [ ] 每检查函数带 `# 判据出处:` 注记锚 `design/engineering/test-conventions.md:67` -- [ ] `game/tests/run_all.gd` `_suites()` manifest 登记新套件(缺登记则全套件不含本件) -- [ ] 验证:单件直跑绿(读数入提交信息) - -### T2 G2 结算数值钉与 p_perfect 接线(0.75 日) -- [ ] 核对 `reward_grant.gd:418-421` 硬编码值与表值 200 相等,读数落本步提交信息;不等→**停机呈报(L3)** -- [ ] 接线:`reward_grant.gd` 完美第二份兑付改读 `ConfigDB` settlement_core 行(行为零漂移) -- [ ] `table_structure_guard_test.gd` +`_check_settlement_pin_values`:equivalence_ref_damage==4 钉(含工具镜像一致性注记)+p_perfect==200 钉+**读数活性断言**(注入域内另一档 p_perfect=100 后兑付倍率随表值变化——防「接线但弃用」死接线的假绿) -- [ ] `table_structure_guard_test.gd` +`_check_meta_per_level_pins`:per_level_shift_pct 三关档 6/9/1 钉(换算率档漂移保护) -- [ ] `treasure_effects_test.gd` +`_test_rap_transfer_row_e2e`:装配 reserve_jar 生产行→attune 注入→断言转移倍率==行值 125(替字面量路径作行值主证) -- [ ] 验证:触碰套件直跑绿+结算相关套件绿 - -### T3 G3 cap 段七槽钉值+配额满分支(0.75 日) -- [ ] `table_structure_guard_test.gd` +`_check_curio_cap_segment_pins`:curio_cap 七槽(ap/armor/heal/max_hp/rap/refresh/time_sand)逐槽读表钉值(与 gp/attack 同款) -- [ ] `adventure_feats_test.gd` +`_check_ticket_quota_exhausted`:票配额售满后不再出现分支(读生产 `feat_ticket_quota`==2 驱动) -- [ ] 验证:两套件直跑绿 - -### T4 G4 布局字段断言(0.5 日) -- [ ] `stage_background_test.gd` +`_test_ap_bar_height_from_table`/`_test_log_band_settle_height`:经 `BattleLayoutTable` 读 `ap_bar_h`/`log_band_h_settle`,断言真实装配视图几何==表值(装配链经生产读点 `ap_bar_view.gd:35`/`battle_log_view.gd:24`) -- [ ] 验证:套件直跑绿 - -### T5 G5 天赋树行与投影断言(1.0 日) -- [ ] `meta_progression_forge_test.gd` +`_check_ks_workshop_row`(秘宝匣钥匙门行:前置/零价/购买后投影)、`_check_ks_refresh_row`(零刷新分支行值)、`_check_fork_rows`(fork_sense/fork_economy 行值经 tree_buy 真链)、`_check_fork_side_projection`(fg_economy 组切换投影+name_a/name_b 侧名+spine 脉络读行断言) -- [ ] 验证:套件直跑绿 - -### T6 G6 状态行值断言(0.25 日) -- [ ] `round_flow_skill_pool_test.gd` +`_check_defensive_stance_values`:−25% 减伤/2 结算持续/叠层行为(对生产行,同族 :944 先例形态) -- [ ] 验证:套件直跑绿 - -### T7 G7 L3 变异行(0.5 日) -- [ ] `variant_placement_test.gd` +`_test_l3_rockfall_minedust_rows`:第三关 deep_underdark 带 rockfall(flat_damage 3)/mine_dust(hide_number)放置+效果断言 -- [ ] 验证:套件直跑绿 - -### T8 G8 reward 行读值改断(0.5 日) -- [ ] `seal_polarity_test.gd` +`_check_enemy_alert_production_row`/`_check_ap_drain_production_row`:读生产 reward 行值断言(现断言为内联合成行,保留不动) -- [ ] `table_structure_guard_test.gd` +`_check_reward_row_pins`:stacks 生产行值钉 -- [ ] 验证:套件直跑绿 - -### T9 B5 探针扩面+开发面过滤+渲染采集态核对(2.25 日) -- [ ] `ui_click_probe.gd` +动线扩面十一段(附录 C 真缺口面,全部真输入):图例关闭/节点继续/curio 确认+继续+刷新/商店购买+刷新/秘宝架购买10·25·装配·升级30/树面购买0·高档(调试注钥)·先手压制(fork B 侧)/弃图刷新→确认弃图→确认弹窗/地图放弃/Esc 浮窗设置/减动效开关(store 态断言) -- [ ] 每动线钉「落点」判定(到哪屏/哪层可见),防空转假绿 -- [ ] `probe_coverage_recorder.gd` 开发面过滤:`_wire_buttons()` 接线遍历时按调试面边界跳过——边界单点=DebugOverlay 类型实例+`ui.screens.inter_overlay` 引用子树+`ui.screens.debug_badge` 引用子树(成员引用现役在案:main_ui_build.gd:185/:250、ui_screens.gd:13;依据=main.gd:361「仅调试模式接线」+test-conventions.md:65 调试面发布态恒隐);登记件头注补边界声明句(引用出处随句) -- [ ] cell_mark_overlay 渲染采集态核对:`board_shot_probe.tscn` 三图采集态逐类型核对其绘制域(变异标记/奖励徽章/路径点迹/焦点高亮/移除退色)是否在帧;缺的类型经确定性注入补进采集态(测试夹具直构同款口径);采集态改动=基线换代,走 `tools/golden_baseline_refresh.sh`(呈报用户过目后执行,`game/tests/golden/README.md` 时效判定纪律——显式重制+呈报+复闸,禁先动后判) -- [ ] 验证:两探针直跑绿+`.gates` 零命中差集对附录 C 排除面收敛读数(seen 集零开发面键)+渲染闸绿 -- [ ] 套件耗时核对:扩面后探针单件耗时仍在 run_all 截止内(默认 120s,`game/tests/README.md` Running Tests 节),超则按白名单重排段序仍超→L2 记录并呈报 - -### T10 豁免登记+对账工具面修正(0.75 日) -- [ ] `coverage_enum.py` `scan_screens()` 分类修正:「屏与模态」实体=`extends` 场景节点基类(Control/CanvasLayer/Node2D/PanelContainer 等)的 `presentation/views/*.gd`;RefCounted/Resource 绘制域件出圈(cell_mark_overlay);`class_name DebugOverlay` 调试浮窗出圈(开发面,§4 第 10 条)——禁文件名后缀近似归类 -- [ ] `tools/coverage_exemptions.js` 登记附录 B 165 条(ontology 逐 id+reason,分组照抄附录)+附录 C 豁免面 controls 条目(进程终结/双源同物/键形实例变体三族;开发面族不入——T9 过滤承载,已登记的 3 条随本裁决删除) -- [ ] 复跑 `coverage_enum.py`+两探针:缺口清单=零(未豁免未补测=0)+枚举基数与真缺口 45/豁免 165 口径核对,读数入提交信息 -- [ ] 验证:工具最小参数全路径含产出落盘(`--out` 默认路径)+面板打开无红示警(无 reason 缺失条目) - -### T11 产出物落位卡(0.25 日) -- [ ] `reports/iter-实现报告-<日期>.md`:各卡状态+实机目检总清单(探针动线扩面屏点选段)+遗留读数义务+实现决定记录 -- [ ] `reports/iter-反哺点-<日期>.md`:预期零条(§6 条件触发除外) -- [ ] 批末:能力行名字与实际落地核对——名实不符=停卡呈报(回表走写卡段通道) - -**切分预案**:超软盒(>10.5 日)先砍 T9 高档购买钮与先手段(树面 B4 行断言 V7 仍在),余量挂待办清单登记后续批。 - -## 8. 验证闸(改动—验收对照表) - -| # | 需求点(判据出处行锚) | 改动 | 验收测试(名称+落点+尾缀〔QA余 Vn〕) | 层级 | 真实入口 | 判据绑定面 | 能力行 | -|---|---|---|---|---|---|---|---| -| V1 | 十七违约词拒绝路径(`design/engineering/test-conventions.md:67`) | 新增 `schema_vocab_violation_test.gd` 七函数+run_all manifest 登记 | `schema_vocab_violation_test.gd:_check_empty_tables` 等 7 函数 | 单元 | 各表 schema `validate()` 直调注入坏行/坏词表 | errs 类别串恰含目标违约词(逐注入独立可判红) | 新增:schema 违约词拒绝路径与关键表值钉(空表/冻结/出域/白名单/settlement 钉/cap 段七槽钉) | -| V2 | equivalence_ref_damage 钉 4(`design/engineering/test-conventions.md:119`) | `table_structure_guard_test.gd` +函数 | `table_structure_guard_test.gd:_check_settlement_pin_values` | 单元 | 表行读值 | 表值==4(漂移即红) | 新增:schema 违约词拒绝路径与关键表值钉(空表/冻结/出域/白名单/settlement 钉/cap 段七槽钉) | -| V3 | cap 段七槽钉值(`design/engineering/test-conventions.md:119`) | 同上文件+函数 | `table_structure_guard_test.gd:_check_curio_cap_segment_pins` | 单元 | `adventure_table.curio_cap()` 读数 | 七槽逐槽==表值 | 新增:schema 违约词拒绝路径与关键表值钉(空表/冻结/出域/白名单/settlement 钉/cap 段七槽钉) | -| V4 | feat_ticket_quota 配额满分支(`design/engineering/test-conventions.md:133`) | `adventure_feats_test.gd` +函数 | `adventure_feats_test.gd:_check_ticket_quota_exhausted` | 单元 | `AdventureRunner.present_node_curio()` 链 | 售满后 ticket_appeared 恒 false | 既有:专长(奇物)授予与凭证保底 | -| V5 | rap_transfer_mult 行值端到端(`design/engineering/test-conventions.md:133`) | `treasure_effects_test.gd` +函数 | `treasure_effects_test.gd:_test_rap_transfer_row_e2e` | 单元 | `TreasureItems.add_item()`→attune 装配链 | 注入 RAP 增量==行值 125 | 既有:秘宝结构冻结与 12 件效果 | -| V6 | AP 条高/结算带高读表(`design/engineering/test-conventions.md:133`) | `stage_background_test.gd` +两函数 | `stage_background_test.gd:_test_ap_bar_height_from_table`;`_test_log_band_settle_height` | 单元 | 生产读点(`ap_bar_view.gd:35`/`battle_log_view.gd:24`)经装配夹具 | 视图几何==表值 | 既有:战斗屏三区几何与棋盘格边长(分辨率两档×四档板型) | -| V7 | 树面四行一组断言(`design/engineering/test-conventions.md:133`) | `meta_progression_forge_test.gd` +四函数 | `_check_ks_workshop_row`;`_check_ks_refresh_row`;`_check_fork_rows`;`_check_fork_side_projection` | 单元 | `MetaProgression.tree_buy()` 真链 | 行值/投影值==生产表行 | 新增:天赋树节点行值与侧投影(秘宝匣钥匙门/零刷新/fork 两行/侧名与脉络投影) | -| V8 | reward stacks 行钉(`design/engineering/test-conventions.md:119`) | `table_structure_guard_test.gd` +函数 | `table_structure_guard_test.gd:_check_reward_row_pins` | 单元 | 表行读值 | 生产行 stacks==表值 | 新增:schema 违约词拒绝路径与关键表值钉(空表/冻结/出域/白名单/settlement 钉/cap 段七槽钉) | -| V9 | defensive_stance 值断言(`design/engineering/test-conventions.md:133`) | `round_flow_skill_pool_test.gd` +函数 | `round_flow_skill_pool_test.gd:_check_defensive_stance_values` | 单元 | `BattleOrchestrator.begin_battle()`(状态施加段) | 减伤/持续/叠层==行值 | 新增:状态效果施加与行值(减伤/持续/叠层读表) | -| V10 | p_perfect 读表接线(`design/engineering/test-conventions.md:133`+`design/gdd/systems/战斗循环/战斗结算.md:124`) | `reward_grant.gd:418-421` 改读 ConfigDB | `table_structure_guard_test.gd:_check_settlement_pin_values`(值钉+p_perfect=100 活性断言)+`seal_polarity_test.gd` 既有真实流完美双份兑付段(:330-401)跑绿 | 单元 | 完美兑付路径(ConfigDB 出口) | 兑付倍率==表值且随表值变化(活性);字面量 grep 零残留为辅证(结构接线形态 grep 不判死接线,主证=活性断言) | 既有:轮内流与结算五段全序 | -| V11 | L3 两变异行(`design/engineering/test-conventions.md:133`) | `variant_placement_test.gd` +函数 | `variant_placement_test.gd:_test_l3_rockfall_minedust_rows` | 单元 | 变异布置段 | 两行放置可达+效果通道命中 | 既有:变异布置门控 | -| V12 | enemy_alert/ap_drain 生产行(`design/engineering/test-conventions.md:133`) | `seal_polarity_test.gd` +两函数 | `_check_enemy_alert_production_row`;`_check_ap_drain_production_row` | 单元 | 效果引擎兑付链读生产行 | 断言真值依赖生产行值 | 既有:封印与极性路由/不可逆 | -| V13 | 十一动线真输入可达(`design/engineering/test-conventions.md:37`) | `ui_click_probe.gd` 动线扩面 | `ui_click_probe.gd:_ready`(扩面段) | 探针 | 合成 InputEvent 经 `push_input` 真点 | 每动线落点可见性断言+登记件 hits 增键 | 新增:控件动线扩面真输入可达(图例关闭/节点继续/三选一与商店/秘宝架/树高档与先手/弃图链/地图放弃/Esc 设置/减动效开关) | -| V14 | cell_mark_overlay 显示正确性——渲染通道(`design/engineering/test-conventions.md:100`) | 采集态逐类型核对与缺型补注(T9);采集态改动=基线换代走 golden_baseline_refresh.sh(用户过目后执行) | `board_shot_probe.tscn` 三图采集+`golden_compare.py` 逐像素 | 渲染闸 | 窗口化真实渲染截图(固定种子单关直构,`board_shot_probe.gd:_ready`) | 棋盘裁剪区加严口径(changed>0 落 900×760 裁剪区=判失效,`game/tests/golden/README.md`) | 新增:棋盘格面绘制显示(渲染闸棋盘三图 golden 逐像素——变异标记/奖励徽章/移除退色) | -| V15 | 豁免登记对账清零(`design/engineering/test-conventions.md:119`) | `tools/coverage_exemptions.js` +ontology 逐 id+controls 19 条(开发面族不入账) | T10 对账读数(`coverage_enum.py` 缺口=0+探针差集=附录 C 排除面) | 工具直跑 | 工具最小参数全路径 | 读数落 `.gates` 且与附录一致 | 既有:全表装载、就绪态与表清单目录对账 | -| V16 | per_level_shift_pct 三关档钉(`design/engineering/test-conventions.md:119`) | `table_structure_guard_test.gd` +函数 | `table_structure_guard_test.gd:_check_meta_per_level_pins` | 单元 | 表行读值 | 三关档值==6/9/1 | 新增:schema 违约词拒绝路径与关键表值钉(空表/冻结/出域/白名单/settlement 钉/cap 段七槽钉) | -| V17 | 开发面出圈与本体分类修正(`design/engineering/test-conventions.md:65`) | `probe_coverage_recorder.gd` 调试面边界过滤+`coverage_enum.py` `scan_screens()` 基类分类 | 复跑读数:两探针 seen 集零开发面键+枚举「屏与模态」无绘制域件/调试浮窗(`coverage_enum.py` 全路径落 `.gates`) | 工具直跑 | 工具最小参数全路径+探针直跑 | 登记件 seen 与枚举基数对附录 C 排除面/本体分类口径(逐项可判红) | 既有:全表装载、就绪态与表清单目录对账 | - -**独立验收审计**:合回前由未参与实现的会话或子代理执行——审计入口=本卡 §8 对照表+实现报告实际对照表+diff+测试文件,报告落 `reports/iter-验收审计-<日期>.md`;验收档=中,深度按 test-conventions §8.7 中档执行;未过不合回。 - -- **测试方式两分法**:V1–V12/V15=调试接口直改数据(单元面);V13 动线=探针真输入;V14=渲染闸 golden;V17=工具直跑+登记件读数;**用户目检项**=探针动线扩面十一段的屏面观感+基线换代帧过目(登记实现报告目检总清单,登记不阻塞)。 -- **回归措辞**:里程碑步(T 段)出口跑一次该步触碰套件+关联套件;波内修复只做出红最小单元最窄确认;新增测试先行孤立验证再并入全套。 -- **闸口径**:本批改动含 `game/` 非文档行为载体(reward_grant.gd)→ 批末跑代码域闸(冒烟+单元+探针+渲染/静态);批末另有改前改后读数对拍(T0 锚 vs T10 复跑)。 -- **测试削弱申报**:零删除断言、零放宽阈值;G8 合成行旧断言保留并存(非削弱);停手钮零命中排除=iter54 已修非本批动作。 - -## 9. 异常分级 - -- L1 自救(一次重试):探针动线偶发超时、导入缓存陈旧。 -- L2 记录继续:断言尾缀撞号(就地改号记录)、豁免 reason 文案微调。 -- L3 停机写报告等用户:①p_perfect 硬编码值≠表值 200(spec-实现冲突深化)②新增件超 §14 预算=机检预算互斥,上游缺陷停卡退回写卡段 ③某动线真输入打不到目标控件(到达性失败,非等待参数问题)④validate 直调与 schema 现行签名不符 ⑤某违约词只在致命通道暴露(§4 第 4 条)。 - -## 10. 代拍板白名单 - -断言消息尾缀取号与撞号改号;检查函数归并既有套件内的落点微调;探针动线段内等待帧数与滚入参数;豁免 reason 文案微调(语义不变);T9 动线段顺序重排(集合不变)。 - -## 11. 待裁点 - -**零待裁点,开工门=U0**。复核中两处分叉已按自判落定(记录见 §17):①p_perfect 接线方向=修实现读表(数值单一事实源红线唯一答案;硬编码值==表值时行为零漂移);②B5「探针未打开过的屏」口径=零命中集合经并集归并后不存在该类条目(全部落在已开屏或开发面),无需另立豁免口径。 - -## 12. 落位与可复用性预检 - -- **复用面**:45 条真缺口的验证全部落既有套件文件(table_structure_guard/adventure_feats/treasure_effects/stage_background/meta_progression_forge/round_flow_skill_pool/variant_placement/seal_polarity)+两既有探针——零新增产品码文件、零新增数据件;唯一新增件=`schema_vocab_violation_test.gd`,不能复用既有件的理由:现役套件先例两形态——致命通道专件(manifest negative,如 treasure_target_violation_test)与单表 validate 诊断面(level_table_validate_test)——本批十七违约词跨十二表的**违约词族集中面**与任一先例职责不同(单一变化原因=违约词族增删,code-conventions §1.1),拆散塞进各表既有套件会把集中义务打散成十二处触点;独立成件是职责轴切分,不是 §5.6 强制(validate 诊断注入本不触 §5.6)。 -- **唯一面**:豁免登记唯一落点 `coverage_exemptions.js`;对账唯一工具 `coverage_enum.py`(本批唯一工具改动面=`scan_screens()` 分类修正,T10);开发面过滤唯一落点=登记件 `probe_coverage_recorder.gd` 调试面边界(三处成员引用单点,§3);p_perfect 表值读取唯一经 ConfigDB 出口;同名检查函数零重复(grep 计划名逐一核过)。 -- **分层与交互面**:V10 接线在 core 内经 ConfigDB 既有读法(Core 零 UI 依赖不破);V4/V11 走 AdventureRunner 真链不经 UI;探针扩面只增段不改既有段(既有动线零回归风险面=探针文件内新增);登记件过滤为纯减法(开发面子树不入账,玩家可达面登记零影响);枚举器分类修正为纯收窄(出圈件本无断言文料关联,其余四源零触碰);测试面全落 `game/tests/unit`+`game/probe`(静态扫描 S 系面外,test-conventions §1.1 三元组归位:新增单元套件+探针段)。 - -## 13. 禁为机检文本保留无效成员 - -本批零重构拆件;豁免登记的 id 串是**面板消费的数据**非代码成员——禁为对账清零读数而登记无理由豁免(面板标红机制兜底);机检键(能力行代表用例名)与实现落地名互斥时停卡呈报,禁自造第三条路。 - -## 14. 实现规范预算 - -- **新增件三查**(`schema_vocab_violation_test.gd`):①公开方法计划 8(`_ready`+7 个 `_check_*`)≤20 ✓;②成员变量计划 ≤5(夹具表句柄与 errs 收集)≤15 ✓;③迁移函数:无迁移。 -- **存量触面一查**:触碰的 10 个测试件+run_all.gd(manifest 增一行)+2 个探针面件(ui_click_probe 扩面段+probe_coverage_recorder 过滤判定,均纯增量+1~+2 函数零删改既有函数)——S13 键较登记值只降不升预期成立(无键新增:新增函数不涉 gdstyle 基线键面;探针/测试件不在 S9 扫描面,code-conventions §4.13);coverage_enum.py 属工具件不在 gdstyle 面(验证=最小参数全路径实跑)。 -- **指标例外通道**:无申报。 - -## 15. 拆分边界纪律 - -本批唯一新增件(`schema_vocab_violation_test.gd`)职责语句=「schema 词表违约词的拒绝路径集中断言面」——单一变化原因=违约词族增删;集体身份=「违约词拒绝」可命名;八表空表注入并函数承载属同一违约类别(empty_table)的八实例,非凑计数袋。禁实现段为对账读数好看而把无关断言塞进该件(发现即 L3 第②条)。 - -## 16. 验收档申报 - -**验收档:中**(头部已申报;用户 U0 时确认或改判)。审计深度按 test-conventions §8.7 中档执行:对照表逐行核对全量、判据绑定面抽查、最窄测试复跑省略(以远端 CI 现查读数代证)。 - -## 17. 复核记录 - -| 轮次 | 复核者身份 | 发现 | 去向 | 处置结果 | -|---|---|---|---|---| -| 0(写卡段复核分流) | 两名未参与撰写的只读子代理(Explore)分裁 B4 零命中 92 条与有命中 119 条;写卡人按普查口径与代码事实校准(推翻 2 条:skill neq/treasure cell_removal 属预留埋点;修正 7 条:ap_grant/risk/min_safe_count/indeg/terminals 等按消费事实与预留口径改判) | 裁决与代码事实的偏差(子代理未见普查报告、未查生产消费点) | 自判 | 写卡人逐条以 file:line 复核后定案(附录 A/B/C 底稿);分歧记录=`game/tests/.gates/coverage/review_scratch_b4.txt`(写卡段过程件,不入 git) | -| 1(grilling 对抗复核) | 未参与撰写的只读子代理(Explore),九审点全过+godot-master NEVER/Gotchas/性能预算对照 | ①hits 数 38/25 系事件数非键数 ②settlement.tres :29/:34 行号错位 ③action_economy.gd 跨 :64-68 ④meta_tree load_bearing 漏列附录 A(附录 A 实数 44 非 46)⑤V10 回归套件指错(settle_segments 无完美兑付断言)⑥V10 grep 判据抓不到死接线 ⑦run_all.gd manifest 触碰面漏列 ⑧回表通道三处口径不一 ⑨附录 B 草稿残留(未决问号/terminals 重复)⑩per_level_shift_pct 无验收行 ⑪「62 类」歧义 ⑫§12 复用论据半错 | 补写×9(①②③④⑤⑥⑦⑨⑩)+自判×3(⑧⑪⑫) | ①§3 改「38 次·去重 27 键/25 次·去重 19 键」②:29/:34 更正③:64-68 更正④G1 增第 17 词、真缺口实数修为 46(44+load_bearing+per_level)⑤V10 回归面改指 `seal_polarity_test.gd:330-401`⑥T2/V10 增 p_perfect=100 读数活性断言、grep 降辅证⑦结构图/T1/§12/§14 增 run_all.gd manifest 登记面⑧§4/T11 统一「名实不符=停卡呈报,回表走写卡段通道」(依据 test-conventions §8.3)⑨附录 B 残留清理⑩V16 行+T2 步骤+结构图+预算计数⑪改「62 分组中 40 组带缺口」⑫§12 论据改职责轴切分(单表 validate 诊断面先例 level_table_validate_test 在案,code-conventions §1.1) | -| 1 后(处置自查) | 写卡人(12 处置点逐条回读卡内落地) | 零残留(12/12 落地;待裁 0、退回上游 0) | 自判 | 本节即凭据;卡片成立,进入提交 | -| 2(实现段 L3 回退改判) | 用户裁决(实现报告 §6 两处 L3 呈报、写卡段呈两案后裁定);写卡段续任落实(未参与实现) | ①cell_mark_overlay 被枚举器按文件名后缀误分类为屏与模态(实体=RefCounted 绘制域件,模态断言无可观测面,V14 原形态作废);②「进入下一层」钮属调试两层模式专用(main.gd:361 仅调试模式接线),调试入口不入玩家可达测试范围——写卡段原呈两案(改判豁免/另立规格)均含豁免选项 | 待裁→用户裁决 | 用户裁(2026-11-07):两处均不豁免。①测试目的=验证其能否正常显示,走渲染通道——V14 改指渲染闸棋盘 golden(锚 test-conventions.md:100),本体清单出圈归枚举器分类修正(T10),能力行回表;②调试面在覆盖登记层过滤不入宇宙(T9+附录 C 排除面),controls 开发面 3 条豁免删除——豁免=在范围内特批不做,出圈面不占豁免;卡 §4 增第 10 条红线、§3 增现状条、估算与 roadmap 行随新任务面同步(≈8.75) | - -**零待裁点,开工门=U0**(§11 两处自判依据:architecture.md「数值单一事实源」条款与 QA 报告 :47 完备性边界在案)。 - ---- - -## 附录 A:B4 真缺口明细(45 条,验证落点见 §7/§8) - -**G1 违约词(17)**:empty_table×8(board_gen/enemy/level/meta/reward/shop/skill/status_effect——`trigger_cond_test.gd:46` 仅类别过滤非违约路径);settlement missing_segment/pperfect_oob/segorder_violation(`settlement_table.gd:23,37-38,63-64` 零负面件);feat zero_flat(`feat_table.gd:47` 零负面件);treasure zero_flat(`treasure_item_table.gd:110-112` 零负面件);meta keystone_cost(guard :147/:151 系 treasure unlock_keystone_cost 子串误命中);treasure use_phase+active_dig(schema :106-108 出域分支零注入);board_gen solver_rules+single_subset(`:57-60` frozen 分支零注入);meta_tree load_bearing(彩蛋 cap>3 违约分支零注入,`meta_tree_table.gd:65`)。 -**G2 结算/秘宝数值(3)**:equivalence_ref_damage(运行时零消费、工具镜像零钉);rap_transfer_mult(接线在役、测试字面量);p_perfect(硬编码不读表——接线)。 -**G3 adventure cap/配额(8)**:curio_cap ap/armor/heal/max_hp/rap/refresh/time_sand 七槽(guard :114-115 只钉 gp/attack);feat_ticket_quota(`curio_deck.gd:115` 配额满分支零测试)。 -**G4 布局(2)**:ap_bar_h(`ap_bar_view.gd:35` 消费零断言);log_band_h_settle(`battle_log_view.gd:24,44,58` 消费零断言)。 -**G5 天赋树(8)**:ks_workshop(零断言);ks_refresh(`tree_requires_level_test.gd:52` 仅注释);fork_sense/fork_economy(零断言);fg_economy/name_a/name_b(零断言);spine(`screen_flow_probe.gd:430` 夹具喂几何非语义)。 -**G6–G8(4)**:defensive_stance(零值断言);rockfall/mine_dust(L3 零放置零断言);enemy_alert/ap_drain(合成行未读生产行,`trigger_cond_test.gd:130-133`/`seal_polarity_test.gd:772-773`);reward stacks(合成行键未读生产行)。 -**出圈(非缺口非豁免)**:cell_mark_overlay——非屏与模态实体(RefCounted 绘制域件,枚举器文件名后缀误分类,2026-11-07 用户裁);显示正确性归渲染闸棋盘 golden(V14),本体清单出圈归枚举器分类修正(T10)。 -**G10 换算率钉(1)**:per_level_shift_pct(运行时零消费、离线 verifier 消费端 `tools/balance_verifier.py:77-103`,值 6/9/1 零内容断言——钉值防标定漂移)。 - -## 附录 B:豁免登记清单(约 165 条,执行计数以尾注与 T10 登记清单为准——`tools/coverage_exemptions.js` ontology 逐 id+reason) - -- **豁免·预留埋点(16)**——词表先行内容后接(普查 §2 同口径):action_economy chain_ap_cost/move_ap_cost(schema 冻结 0,`game/core/action_economy.gd:67-68` 零调用方);skill hero_hp_pct(TRIGGER_FACTS 在册、skills.tres 零行使用);skill neq(普查算子词预留在册);treasure ap_rounds_front/effective_rounds/mine_hit_halve/reflect_damage/refresh_pick/reward_weight_bias/slot_cost/ap_grant/risk/cell_removal(EFFECT_KINDS/MAGNITUDE_KINDS/DIMENSIONS 在册、tres 零行使用或普查旧词在案)。 -- **豁免·挂起件(1)**:settlement_review_overlay(全仓零引用,生涯条目承载)。 -- **豁免·假缺口(148)**——验证在役、文本关联盲区,按族登记(reason 逐族): - - adventure quota 段 13 槽+value 段 13 槽:和锚/逐槽钉值在役(`table_structure_guard_test.gd:104-113`、`feat_vouchers_test.gd:44-124`)。 - - cap_gp/cap_attack 两槽:钉值在役(`:114-115`)。 - - feats 22 行+6 计数行(echo_seals/smith_seals/fuse_pts/round_instinct_atk/round_digs/round_blast_spent):`adventure_feats_test.gd:608-759` 逐行行为断言+父专长通用通道读值。 - - enemy/skills harden/venom_spit/shield_bash/hook_horror:`round_flow_skill_pool_test.gd:548-625` 池构成与 EV 锚+`table_structure_guard_test.gd:227-236` 键序。 - - reward heal_backlash/pierce_snare/magic_recoil/gp_lose:`seal_polarity_test.gd:755-758`+guard `:506-530`。 - - meta_tree att_socket2/att_socket3/currency/effects_a/effects_b/requires_level/sense_sharp/zero_flat(`meta_progression_forge_test.gd:634-638`+tree_rules_v11/tree_requires_level/负面反例承载)。 - - 屏与模态 8 屏(battle_end/camp_esc/curio_pick/legend/level_map/node_overlay/save_select/settings):探针真实入口可见性/真输入断言在役(ui_struct_probe/ui_click_probe/screen_flow_probe/reward_overlay_test 各段)。 - - 词表杂项:pity_threshold/min_safe_count(生产消费+行为承载)/atk_max/atk_min/initial_owned/per_level_gain/price_ratio_pct/type_axis/battle_ratio/fork_ways_max/rest_ratio/reward_ratio/shop_ratio/indeg/terminals/rest_heal_pct/gp_drops/price_a/pool_shelf/mult_oor_warning/round_direction/wall_band/canvas/gate_gap/hud_band_h/hotspot_key/texture_rect/log_band_h_dig/info_panel_w/info_visible_layers/curio_candidate_count/feat_ticket_chance/feat_ticket_limit/feat_ticket_pity_step/quota_segment/cap_segment/value_segment/seal_place_ap_cost/per_level_bonus/reserve_jar。 - - treasure 现役词 11(use_phase 归 G1;area_3x3/board_wide/dimension_tags/load_bearing/remove_mines/passive/ap_charge_safe/charge_reset/charges_per_adventure/mine_count_preview/refresh_stock_grant/shop_refresh_bonus/unlock_keystone_cost):`treasure_effects_test`/`treasure_target_violation_test`/guard 现役承载。 - -> 注:per_level_shift_pct 已归附录 A 真缺口(G10);本附录为按族分组登记,T10 执行清单=重生成缺口集与本卡裁决的逐 id 差集(210−45——cell_mark_overlay 经枚举器分类修正出圈后的基数),以登记时逐 id 清单为准。 - -## 附录 C:B5 零命中裁决(并集口径:两探针 hits 归一化〔去尾序位+折叠空锚段〕后取交集) - -- **排除(3 类非缺口)**:ap_bar 停手钮——iter54 卡 1 已修(数据 2026-11-06 早于合回);camp_object 七物件裸键——与场景路径键双源同物,并集后七件全命中(forge/notebook/campfire 由 screen_flow 承载);**开发面(10 键出圈,2026-11-07 用户裁非豁免)**——debug_overlay 八钮+`(root)/Button#调试`+inter 覆盖层「进入下一层」:调试面控件不入玩家可达测试宇宙,登记件按调试面边界过滤(DebugOverlay 类型+`ui.screens.inter_overlay`/`ui.screens.debug_badge` 引用单点;依据=main.gd:361「仅调试模式接线」+test-conventions.md:65 发布态恒隐);controls 豁免清单原开发面 3 条随本裁决删除——豁免语义=在玩家可达范围内特批不做,出圈面不占豁免。 -- **豁免·进程终结(2 键)**:MenuScreen 退出游戏/camp_esc 退出游戏——真点即杀探针进程,按〔接线断言〕承载(既有结构断言在位)。 -- **豁免·并集已覆盖(screen_flow 单侧零命中 17 键)**:status_panel 继续/settings 返回/confirm 取消·次选项/save_select 返回/forge 返回营地/图例钮/board_zone 状态/level_map 状态/树面解锁25·购买10·购买20/MenuScreen 进入存档等——ui_click 侧 hits 在案。 -- **真缺口·动线扩面(十一组,T9)**:图例关闭;节点继续;curio 确认选择+继续+刷新钮;商店购买+刷新钮;秘宝架购买10/购买25/装配/升级30;树面购买0/购买30/40/60(调试注钥后真点)/先手压制(fork B 侧);弃图刷新+确认弃图(→确认弹窗);地图放弃;Esc 浮窗设置;减动效开关(settings 两枚 switch_toggle)。 diff --git a/roadmap.md b/roadmap.md index 56a5219b..64af57a7 100644 --- a/roadmap.md +++ b/roadmap.md @@ -5,8 +5,8 @@ ## 当前位(只回答「现在该做什么」;三行内随批次换代,禁止在此扩写成状态快照) - **阶段**:M3——Alpha 版本的完整实现(2026-10-09 立规:未明令宣布完成前停留 M3,迭代只排 M3 需求,M4 不排期;根目录 stage.txt 为旧阶段开关仅存档)。 -- **迭代位**:迭代 1–54 已完成。迭代 55 进行中(QA 覆盖余量收口——实现段两项 L3 停机已裁、卡片轮 2 修订成立,续行收口中)、迭代 56 已编待开工(结算期文字列表退役+封印动作改版两卡)。各迭代收口与批后收尾沿革查 git 提交信息与 `reports/`。 -- **下一步**:`/iter` 续行收口迭代 55(卡片轮 2 已修订,≈8.75 日);或发令开工 56(≈12.25 日,两卡:结算期文字退役先行+封印改版);待编池:效果通道与事件词零现役普查(唯一遗留待裁=秘宝表 schema 旧词面 9 词收尾)、结算明细文案入表(待文档设计)、二三关棋盘观感(待设计+待美术)、测试面真输入化批发现四项待裁(待执行);EC8 热重载实装待用户另立条目。 +- **迭代位**:迭代 1–55 已完成。迭代 56 已编待开工(结算期文字列表退役+封印动作改版两卡)。各迭代收口与批后收尾沿革查 git 提交信息与 `reports/`。 +- **下一步**:发令开工 56(≈12.25 日,两卡:结算期文字退役先行+封印改版);待编池:效果通道与事件词零现役普查(唯一遗留待裁=秘宝表 schema 旧词面 9 词收尾)、结算明细文案入表(待文档设计)、二三关棋盘观感(待设计+待美术)、测试面真输入化批发现四项待裁(待执行);EC8 热重载实装待用户另立条目。 ## 里程碑时间线 @@ -88,7 +88,7 @@ | 迭代 52 | 已完成(2026-11-05) | 已退役(git 历史可考) | 2026-11-04 | ≈9.275 个工作日 | 已退役(git 历史可考) | | 迭代 53 | 已完成(2026-11-06) | 已退役(git 历史可考) | 2026-11-05 | ≈6.0 个工作日 | 已退役(git 历史可考) | | 迭代 54 | 已完成(2026-11-07) | 已退役(git 历史可考) | 2026-11-07 | ≈8.625 个工作日 | 已退役(git 历史可考) | -| 迭代 55 | 进行中 | reports/需求卡片-QA覆盖余量收口批-2026-11-07.md | 2026-11-07 | ≈8.75 个工作日 | — | +| 迭代 55 | 已完成(2026-11-07) | 已退役(git 历史可考) | 2026-11-07 | ≈8.75 个工作日 | 已退役(git 历史可考) | | 迭代 56 | 待开工 | reports/需求卡片-结算期文字列表退役批-2026-11-07.md
reports/需求卡片-封印动作改版批-2026-11-07.md | 2026-11-07 | ≈12.25 个工作日〔用户特批 2026-11-07 超 10 个工作日〕 | — | - 历史行的「—」= 该列事实不可考:迭代 1~8 早于需求卡片制;编排时点与预计周期不再回溯,细节查 git 提交史。 diff --git a/体验验证清单.md b/体验验证清单.md index a4166ec1..f2ad337e 100644 --- a/体验验证清单.md +++ b/体验验证清单.md @@ -530,3 +530,14 @@ | 2 | 覆盖面板下钻控件在场 | 停点链覆盖面板(奇物确认/选择、继续)下钻时,停手键与停点链键在场可点 | - **结论回流**:观感问题归待办清单登记新条目。 + +## 54 探针扩面动线与完美封印双份兑付目检(迭代 55) + +> 迭代 55 QA 覆盖余量批落装后,机检已承载行为与像素面:探针十一组真输入命中与落点断言(进入下一层组经用户裁开发面出圈,不在玩家可达宇宙)、渲染闸棋盘三图 golden 逐像素(采集态六类型注入,基线换代经用户过目)、p_perfect 读表接线值零漂移(真实流回归完美双份兑付绿),观感面按登记不阻塞立规不拦合并。 + +| # | 目检项 | 判据 | +|---|---|---| +| 1 | 探针扩面动线屏面观感 | 图例关闭落点、节点继续、三选一刷新重投喂、商店购买/刷新货架态、秘宝架四钮柜台态、树面高档购买与先手压制回切、弃图刷新确认 chips、地图放弃确认窗、Esc 浮窗设置、两拨杆开关态各屏过渡自然不脏面 | +| 2 | 完美封印双份兑付战内表现 | 完美封印第二份奖励的高光行与全屏横幅表现与既有观感一致(值零漂移,仅观感复核) | + +- **结论回流**:观感问题归待办清单登记新条目;数值面不在目检现场改数。 diff --git a/待办清单.md b/待办清单.md index 17bd0eba..f7a32307 100644 --- a/待办清单.md +++ b/待办清单.md @@ -384,14 +384,6 @@ **状态**:待执行 -#### QA harness 覆盖遗漏余量——B4 本体缺口与 B5 控件零命中缺口复核分流(2026-11-07 登记,来源=批次移交,优先级=P0) - -**实况**:前条「QA harness 三批缺陷与覆盖遗漏收口」已编卡部分(A2/B1/B2)随迭代 54 卡 1 完成整条删除,A1 随同批营地交互修复批消(均合回提交 5b5e6297,git 历史可考)。余量=B4 缺陷本体缺口 212 条、B5 控件零命中缺口,人工复核后分流(真缺口立卡/假缺口豁免清单核销);B3 精锚归「测试面真输入化分期」条目、B6 判据收紧轮归复核轮,不在本条。B5 增补实例(iter54 审计观察)=覆盖登记件自动登记通道=BaseButton pressed+营地自绘物件两源,地图画布与 bcard 非 BaseButton 真输入命中不产键。证据=reports/QA-harness三批-缺陷与覆盖遗漏报告-2026-11-06.md(八类逐条带文件行号与登记处指针)。2026-11-07 写卡段复核分流定案:重生成读数 211 条(报告 212 系 elite 行入表漂移)→真缺口 46 条补测/豁免 165 条登记,零待裁点;卡片(reports/需求卡片-QA覆盖余量收口批-2026-11-07.md)落 reports/。2026-11-07 实现段两项 L3 停机呈报(cell_mark_overlay 枚举分类误判/进入下一层调试专用面),用户裁两处均不豁免:显示正确性归渲染闸棋盘 golden+开发面登记层过滤出圈;卡片轮 2 修订成立(真缺口 45/枚举器分类修正/登记件过滤),实现段续行收口。 - -**改动面**:游戏代码 - -**状态**:已写卡+已编迭代 55 - #### 闸机超时守卫缺陷修复——gate_run_timeout 标志文件恒真(2026-11-06 登记,来源=批次移交) **实况**:tools/gate_platform.sh 的 gate_run_timeout 用 mktemp 预建超时标志文件,判据 `[ -f ]` 建时即真、超时态无法与正常完成区分(Windows Git Bash 实测直接调用 4 秒返回 124;远端各闸以工件锚定未受影响)。连带 tools/golden_baseline_refresh.sh 的 guard 子Shell sleep 420 未被 kill 短路(重采集等待 7 分钟症状)。修法=kf 先赋路径+rm -f 后置守卫(probe_gate.sh:97 run_suite 同款正确写法)。证据=tools/gate_platform.sh:37/:48+迭代53实现报告遗留呈报 1(git 历史可考)。