Compare commits

...
2 Commits
2 changed files with 66 additions and 4 deletions

No files matched your search

@@ -0,0 +1,62 @@
# QA harness 三批——缺陷与覆盖遗漏报告(2026-11-06)
> **接收方**:待办清单「QA harness 三批缺陷与覆盖遗漏收口」条目(P0)。
> **来源**:合并 d3c85390(批 1 探针真输入化+覆盖登记/批 2 覆盖总览面板+本体枚举器/批 3 自动试玩扩展)三批实施过程的真实跑批读数。
> **口径**:本报告只列**发现且未解决**的缺陷与测试遗漏(实施期已自修的环境/机制坑不在列,见 qa-harness 讨论文档 §10–§12);明细可查出处逐条标注。
## 一、产品缺陷(2 类)
### A1 开局被开始层盖住(大门开局开始层滞留盖屏+输入锁死)
- **现象**:大门确认开局冒险后,开始层(start_overlay)滞留可见;它以栈内模态身份直入输入锁谓词(`game/presentation/modal_flow.gd:77` 的 `start_visible_get` 项),战斗全程 `locks_input()==true`,玩家无法操作。
- **发现**:C 自动试玩首跑(journey_player)即机器复现——上报 2 条(同缺陷双指纹),归因字段在案(`game/tests/.gates/coverage/journey_report.js`)。
- **现状**:**营地交互修复批已修未合**(camp-interact 分支 0977a548,main.gd 大门两出口补隐藏句)——该分支合回 master 后本缺陷即消,C 的对应上报自然消失。
- **归属**:随 camp-interact 合回即消,无需新批。
### A2 终局面板关闭路径引擎报错噪声
- **现象**:`game/presentation/views/battle_end_overlay.gd:194` 的 `get_meta(&"celebrate_tw", null)` 在 meta 缺失时仍触发引擎 SCRIPT ERROR 打印(当前引擎版对显式 null 缺省值照样报错);关闭动线功能不受影响,属持续输出的日志噪声。
- **发现**:批 1 探针直跑日志在案(screen_flow_probe 终局段每次触发)。
- **修法**(一行级,未实施):改 `has_meta()` 前置判断。归属=需求性工程条目(改游戏行为),走写卡通道。
## 二、测试覆盖遗漏(6 类)
### B1 停手钮(AP 条)零真输入覆盖
- **现象**:两探针与 C 均未以真输入点过「停手」钮——emit 时代信号直发绕过 disabled 掩盖了驱动空洞;停手使能位=alive∧digging 投影(`game/presentation/views/ap_bar_view.gd:147`、`hud_presenter.gd:92`)。
- **登记处**:覆盖面板控件下钻(ui_click 探针 seen 91/命中 27 的缺口之一);`probe_hits_ui_click.js` 零停手键。
### B2 视图层测试方法面未真输入化
- **现象**:弃图刷新确认链(press_refresh_for_probe/press_confirm_for_probe)、地图候选(press_candidate)、节点与三选一停点(press_continue/press_card/press_confirm)等驱动走视图方法口,非输入管线——保「逻辑通」不保「玩家点击可达」。
- **登记处**:待办清单「测试面真输入化分期与存量断言逐条精锚」条目①余项;C 的两方法口在归因字段如实标注通道。
### B3 存量 996 条断言判据出处精锚
- **现象**:链式锚已保可核(capability_audit 链断 0),逐条出处粒度精锚未做。
- **登记处**:同上条目②,原样在案。
### B4 本体对账缺口 212 条/62 类
- **现象**:游戏本体实体(data/tables 行集、schema 词表与字段、场景按钮、自绘命中类、屏模态清单,共 865 实体)在测试断言文料中零关联 212 条——「游戏做了但从未被验证」的候选面。
- **诚实边界**:grep 关联有假阳假阴(断言测了实体但文本没带 id=假缺口;文本带 id 但断言弱=假覆盖)——**须人工逐条复核后再立事项**,禁直接照单开工。
- **登记处**:覆盖面板第四节(`tools/coverage_report.html`);`game/tests/.gates/coverage/ontology_gaps.js`。
### B5 控件级零真输入命中缺口(ui_click 64 处/screen_flow 97 处)
- **现象**:探针真输入登记的「存在但零命中」控件缺口——大头=未被探针打开过的屏(完备性边界在案:控件级视图只对被打开过的屏负责),其中混有 B1 类真空洞。
- **登记处**:覆盖面板第三节;`probe_hits_ui_click.js`/`probe_hits_screen_flow.js` 的 seen−hit 差集。
### B6 C 判据收紧轮未做
- **现象**:全三关推进约 8 分钟(冒险段帧预算 60000 兜底);契约条款「连 3 批零真缺陷→判据收紧一轮」的触发权与执行归用户复核轮。
- **登记处**:`journey_report.js` meta(上报数/静默数/fatal/屏到达进回执)+qa-harness 讨论文档 §5。
## 三、处置归属(汇总)
| 组 | 项 | 通道 |
|---|---|---|
| 随合即消 | A1 | camp-interact 分支合回,无需新批 |
| 写卡通道 | A2、B1、B2 | 需求性工程条目(改游戏行为/测试驱动)→ 需求卡片 |
| 既有义务 | B3、B6 | 衔接条目②+用户复核轮 |
| 人工复核 | B4、B5 | 面板逐条复核后按性质分流(真缺口立事项/假缺口面板豁免清单核销) |
+4 -4
View File
@@ -251,13 +251,13 @@
**状态**:待执行
#### QA 覆盖总览面板与自动试玩扩展——自动发现测试验证缺漏(2026-11-05 登记,来源=会话提及)
#### QA harness 三批缺陷与覆盖遗漏收口(2026-11-06 登记,来源=批次移交,优先级=P0)
**实况**:方案全文=`D:\code\qa-harness-discussion\QA-Harness讨论结果-中间报告.md`(三批定案;批1实施偏差八条回写其 §10);证据=能力行「营地七物件命中区点选与分界面可达」残险 game/tests/README.md:158+test-conventions §8.3/§2 条文。进度=①②已落地(worktree qa-harness:批1=两探针 51 处真输入化+1 接线断言保留+覆盖登记件+§2 条文;批2=B 面板四节+义务层提取器+六源回执明细化闸壳挂点+本体枚举器 865 实体对账,工具四件入 tools/,提交 bb9ce8a1)③已落地(journey_player 场景驱动件:全动线 16 类屏到达+异常三类上报+误报指纹跨跑静默收敛实测生效+真输入命中并入覆盖登记 30 控件;首跑机器复现在案缺陷「开局被开始层盖住」)。裁决在案勿重提:A 执行覆盖矩阵不做、D 缺口闸不做、变异测试禁入、归因登记不立独立制度。
**实况**:证据=reports/QA-harness三批-缺陷与覆盖遗漏报告-2026-11-06.md(八类逐条带文件行号与登记处指针:产品缺陷 2=A1 开局被开始层盖住/A2 终局关闭路径引擎报错噪声;测试覆盖遗漏 6=B1 停手钮零真输入/B2 视图方法面/B3 精锚/B4 本体缺口 212 条/B5 控件零命中缺口/B6 判据收紧轮);来源批次=合并 d3c85390(三批读数在案)。处置分流:A1 随营地交互修复批合回即消;A2/B1/B2 走需求性工程写卡通道;B3/B6 归衔接条目与复核轮;B4/B5 人工复核后分流(真缺口立事项/假缺口豁免清单核销)。
**改动面**:游戏代码+工具代码+文档
**改动面**:游戏代码
**状态**:待执行
**状态**:待写卡
#### 闸机超时守卫缺陷修复——gate_run_timeout 标志文件恒真(2026-11-06 登记,来源=批次移交)