docs(迭代28 T6): 变异验证硬规则落文+机械面文档同步闸
规范落文三处(本批新硬规则「验收函数无变异红记录不算验收成立」):
- CLAUDE.md:批次工作流实施段新增第 9 条(原 9-14 顺延 10-15)
- design/dev/code-conventions.md:新增 §3.6 变异验证操作细则
(注入→最窄闸见红→git 精确还原→记录四步;变异不红二选一处理;
判据强弱分层:运行期断言/golden 逐像素/占比统计类三档)
- req-card 技能(仓外 ~/.workbuddy/skills/req-card/SKILL.md §7 验证闸,
ZCode 副本同步;CodeBuddy/Qoder CN 无此技能副本,不动)
机械面文档同步:
- roadmap.md:迭代 28 行换代为已入库(冒烟 1086→1125/0)、近期主战场
前沿改迭代 29+ M4
- design/gdd/06-待办清单.md:登记条销号改写为已入库收口 + 新增 GDD 反哺点
三条专条(装配合同/boot 后置条件/生命周期矩阵,待用户逐点裁决)
- design/gdd/07-体验验证清单.md:新增 ㉗ 启动态菜单目检节五观测项
顺带清理(非本批引入,基线带入):07-体验验证清单.md v1.0 行处残留
<<<<<<</=======/>>>>>>> 合并冲突标记(iter27-techdebt-20261014 分支合并进
master 时漏解)——两侧均有效故全留(qa 收尾批人闸核销行 + ㉖ 目检节登记行
与正文节),版本号顺延 v1.1,清理注记入 v1.2 行。
doc 三闸对基线零新增(lint 三件/死链 3/术语 5 组均与 master 39c6544 同)。
This commit is contained in:
1 parent
67342c690e
commit
db1bf42322
5 files changed
+64
-14
No files matched your search
@@ -142,6 +142,24 @@
|
||||
4. **调试注入两层(测试方式两分法的落码面)**:自动化测试=测试代码直调核心层写口构造状态(直改数据表行/计数器/存档域,不经 UI、不走正常资源积累流程——冒烟现役做法);人工体验=DebugOverlay/DS_DEBUG 调试面,服务用户目检。清单条目的「怎么测」必须写到数据面粒度:改哪张表哪行、置哪个计数、调哪个核心写口。
|
||||
5. **换代批旧验证约束同生死**:删除旧数据行/旧实现代码的批次,必须同批摘除只验证旧实现的断言与护栏校验,由新断言替代——旧件断言残留=冒烟假绿来源;合并后冒烟全绿且全仓无旧件残留引用为证。
|
||||
|
||||
### 3.6 变异验证——验收函数的拦截能力自证(2026-10-15 迭代 28 立)
|
||||
|
||||
测试绿只证明「当前代码没犯这个错」,不证明「犯了这个错会被抓住」。新增或改写的验收函数(冒烟断言/探针自检/闸机判据)必须配一次变异验证,把拦截能力自证一遍。**无变异红记录的断言不写「已验收」,只写「已实现,拦截能力未证」。**
|
||||
|
||||
**操作四步(逐条落实现报告变异验证记录表)**:
|
||||
|
||||
1. **注入**——把被测件改坏成该类缺陷的最小形态(翻装配序、注释一行 `add_child`、把状态源取反、把层 `visible` 置 false)。一次只注入一处;可直接改源码,不必留长期开关。
|
||||
2. **跑最窄的那一道闸**——只跑能覆盖该断言的最小单元(单冒烟脚本/单探针/单比对命令),禁跑全套闸(见 `CLAUDE.md` 闸机轮次纪律②)。判据:注入后该断言**必须变红**;红在别处而目标断言仍绿=判据没打在缺陷上,按第 4 条处理。
|
||||
3. **精确还原**——`git checkout -- <文件>`(不用 `git stash`、不手工回改,防残留)。还原后复跑同一道闸确认回绿,才算本轮闭环。
|
||||
4. **记录**——变异点(文件:行)、跑的闸、红输出摘要、还原结论,逐条进实现报告记录表。
|
||||
|
||||
**变异不红怎么办(不许含糊带过,二选一)**:
|
||||
|
||||
- **改判据**——把断言打到真正的缺陷面上(例:断言「菜单标题可见」只查截图墨色占比时,把菜单层藏起来仍不红,因为底层棋盘透过标题框照样给出高反差像素;改查 `is_visible_in_tree` 或加 golden 逐像素比对才红)。
|
||||
- **如实标注拦截边界**——判据本身只覆盖弱面的(如「只证伪整框空白/整框糊,不证明框里是何内容」),在断言注释与报告里写明边界,并说明强判据由哪一件承担。
|
||||
|
||||
**判据强弱分层(迭代 28 实测结论)**:同一缺陷面往往需要多件配合——**可见性/状态源类**缺陷由 `is_visible_in_tree`、树序、状态源取值的**运行期断言**抓;**内容/观感类**缺陷由 **golden 逐像素比对**抓;**占比/统计类**判据(墨色占比、纹理幅度)只能兜「整框空白/整框糊/压 busy 纹理」,是补充不是主力。写卡时按此分层配齐,别指望一条断言包打。
|
||||
|
||||
---
|
||||
|
||||
## 4. 语言纪律——GDScript 4.x 实战坑(本项目踩实)
|
||||
|
||||
+20
-1
@@ -656,4 +656,23 @@
|
||||
|
||||
**归属**:测试基建/工程债批(迭代 28;零玩法行为变更,装配顺序修复除外)
|
||||
|
||||
**状态**:已编入迭代 28(2026-10-15 用户令;开工门=U0 已满足——用户预批连做全批)——收口后按批结论销号或改写为反哺点登记;本批立新硬规则「验收函数无变异红记录不算验收成立」落 CLAUDE.md/code-conventions/req-card 技能三处
|
||||
**状态**:✅ **已入库收口(2026-10-15,迭代 28 单会话交付——用户预批连做全批;T1 装配合同 `LAYER_CONTRACT` 单点化+顺序修复+V1a-d 断言重写/T2 `_smoke_boot_chain` 十断言/T3 `_smoke_lifecycle_matrix` 九阶段×五引用面/T4 渲染面三件(探针两自检+墨色判据+启动态菜单 golden)/T5 变异验证六次注入全见红并精确还原/T6 规范三处落文;冒烟 1086→1125/0〔+39=新增 42−退役裸下标断言 3〕;run_all 全套+probe_gate --click/--full+render_gate 四闸全绿;MC 零跑〔零数值零行为变更〕;实现报告=design/qa/iter28-实现报告-2026-10-15.md;残留人闸=实机目检启动态菜单〔07 ㉗〕)**。本批立新硬规则「验收函数无变异红记录不算验收成立」,已落 CLAUDE.md 第 9 条+code-conventions.md §3.6+req-card 技能 §7 三处;GDD 反哺点三条见下条待用户逐点裁决
|
||||
|
||||
---
|
||||
|
||||
#### 迭代 28 启动装配与生命周期验收补全批——GDD 反哺点三条(2026-10-15 随批登记,待用户逐点裁决另批落文)
|
||||
|
||||
**现状**:六任务全量入库(单会话交付;变异验证六次注入全见红并精确还原;实现报告=design/qa/iter28-实现报告-2026-10-15.md)。实现与设计权威文档的差异/缺口如下,经裁决后另批落文——**机械面随批已动的有 roadmap/本条/07/active.md/CLAUDE.md/code-conventions.md/req-card 技能(仓外)**。**与迭代 27 反哺点①的关系**:迭代 27 只登记了「场景分层/会话生命周期陈述滞后于实态」的方向性缺口,本批把其中「层序=谁说了算」「boot 后置条件是什么」「会话引用面何时活何时死」三件做成了代码级事实与可执行断言,本条是其**具体化承接**——落文时可合并处理。
|
||||
|
||||
**归属**:工程债/测试基建批收口反哺(不阻塞,不排期)
|
||||
|
||||
| # | 文档 | 反哺点 |
|
||||
|---|---|---|
|
||||
| 1 | design/dev/architecture/architecture.md + ADR 系列 | **视觉层装配合同**=`main.gd` 的 `LAYER_CONTRACT` 常量(16 层:屏壳/模态/全屏态/非视觉节点,含 host 宿住层与 shell 屏壳占树位两类特例),树序=登记序=z 序同源派生,全仓唯一落位口 `_apply_layer_contract`(散落 `move_child` 由冒烟 V1d 源码断言判红);现行架构文档无此条款(仅在 :124 提「组合根 main.gd」、:173 提「主场景装配视图单元」)——是否立条款、合同表是否随架构文档同步摘录待裁 |
|
||||
| 2 | design/dev/architecture/architecture.md | **boot 链路后置条件**:本批以 `_smoke_boot_chain` 十断言把「启动后玩家该看到什么」成文(ConfigDB 就绪且表已载/系统设置已落引擎态/菜单层可见/续玩钮态=断点在档态/闲时会话已在树/调试浮窗态=DS_DEBUG 门控);架构文档启动流程(:173)只有装配动作无后置条件——是否入册待裁 |
|
||||
| 3 | design/dev/architecture/architecture.md | **RunScope 生命周期存活性矩阵**:九阶段(闲时/开局停点/战斗中/结算后/选路页/终局面/回菜单收束/各模态开合后/两连局+续玩)× 五引用面(run_scope 在树/adventure/runner/settlement/四处回调句柄同源)的活死表;架构文档 :124 只登记了 RunScope 的存在——矩阵是否入册、阶段划分是否认账待裁 |
|
||||
|
||||
**状态**:备忘(反哺点三条待裁决;代拍板追认单见实现报告 §三;残留人闸=07 ㉗ 启动态菜单目检,登记不阻塞)
|
||||
|
||||
---
|
||||
|
||||
+16
-4
@@ -272,10 +272,9 @@
|
||||
| v0.7 | 2026-10-13 | 新增 ㉓ 敌人表内容修批三观测目检节(迭代 24 卡①随批登记:新招可见性/甲型体感/第一关节奏——登记不阻塞按 2026-10-12 真人检测立规) |
|
||||
| v0.8 | 2026-10-13 | 新增 ㉔ UI 全局主题批全屏巡检目检节(迭代 25 卡①随批登记:引擎默认灰清零巡检/音量滑轨两段可辨/专项观察点二(滑轨柄抢焦点·滚动条槽可见性)/预盖件无实役注记——登记不阻塞;能力验证半=冒烟 V1-V6) |
|
||||
| v0.9 | 2026-10-14 | 新增 ㉕ UI 交互与观感批逐屏巡检目检节(迭代 26 卡①随批登记:按钮五态反馈/键盘焦点环/全局 Nearest 巡检(含暗角与渐变白名单判据)/布局均衡(商店居中+营地四栏等高)/诊断钮清零——登记不阻塞;能力验证半=冒烟 V1-V6+T4 结构断言) |
|
||||
<<<<<<< HEAD
|
||||
| v1.0 | 2026-10-14 | **qa 收尾批·人闸核销(用户 2026-10-14 回报实机目检全部完成)**:⑮真人半、⑳、㉑、㉒、㉓、㉔、㉕ 七节逐节加「✅ 已核销(2026-10-14)」注记——用户目检回报完成、未呈报问题;iter19 acceptance-package 存活八项与 iter20 五件(行为变化速览节)同批核销;迭代 18 清单 18 项同批核销。注:⑯⑰⑱⑲ 等早期人闸节此前已随各批核销或归 07 独立跟踪,本条不涉及 |
|
||||
=======
|
||||
| v1.0 | 2026-10-14 | 新增 ㉖ 代码架构技术债修复批全流程走查目检节(迭代 27 卡①随批登记:全流程观感零变化走查/续玩断点恢复/调试浮窗对局中可开不锁棋盘〔:407-408 事故回归〕/刷新余量显示一致/DS_DEBUG 启动浮窗+两屏角标——登记不阻塞;能力验证半=冒烟 V1-V9+parity 三变体逐位一致对拍五跑全同) |
|
||||
| v1.1 | 2026-10-14 | 新增 ㉖ 代码架构技术债修复批全流程走查目检节(迭代 27 卡①随批登记:全流程观感零变化走查/续玩断点恢复/调试浮窗对局中可开不锁棋盘〔:407-408 事故回归〕/刷新余量显示一致/DS_DEBUG 启动浮窗+两屏角标——登记不阻塞;能力验证半=冒烟 V1-V9+parity 三变体逐位一致对拍五跑全同) |
|
||||
| v1.2 | 2026-10-15 | **冲突标记清理解(迭代 28 随批)**——本文件 v1.0/v1.1 两行处残留 `<<<<<<<`/`=======`/`>>>>>>>` 合并冲突标记(迭代 27 分支 iter27-techdebt-20261014 合并进 master 时漏解,两侧均有效故全留:qa 收尾批人闸核销行 + ㉖ 目检节登记行与正文节);清理后两行内容照旧,仅版本号顺延。同批新增 ㉗ 启动态菜单目检节(迭代 28 卡①随批登记) |
|
||||
|
||||
|
||||
## ㉖ 代码架构技术债修复批——全流程走查(迭代 27 卡①随批登记;能力验证半=冒烟 V1-V9+parity 三变体逐位一致对拍五跑全同)
|
||||
@@ -289,4 +288,17 @@
|
||||
| 3 | 调试浮窗对局中可开不锁棋盘 | 对局中开浮窗→棋盘可继续操作(:407-408 永久锁死事故回归——互斥域 tags 化后钉面) |
|
||||
| 4 | 刷新余量显示 | 刷新受理后 HUD 余量递减且与受理次数一致(双账删副本后 HUD 单源读快照) |
|
||||
| 5 | DS_DEBUG=1 启动 | 浮窗启动即开+两屏角标点亮可点(同步面随 ModalFlow 迁移后行为钉面) |
|
||||
>>>>>>> iter27-techdebt-20261014
|
||||
|
||||
---
|
||||
|
||||
## ㉗ 启动装配与生命周期验收补全批——启动态菜单目检(迭代 28 卡①随批登记;能力验证半=冒烟 V1a-d/V2a-f/V3a-i+启动态菜单 golden 逐像素)
|
||||
|
||||
> 装配顺序修复(冒险屏先挂、菜单屏后挂)后,**启动即见的那一屏**是本批唯一玩家可见行为变更。自动化闸只能证明「顶层是谁」与「逐像素未变」,真机上「看着对不对、点不点得动」仍需人眼。登记不阻塞(2026-10-12 真人检测立规)。
|
||||
|
||||
| # | 目检项 | 判据 |
|
||||
|---|---|---|
|
||||
| 1 | 启动即见主菜单 | F5 启动后第一屏是主菜单(标题「Dungeon Sweeper」+副标题「扫雷的因」+开始/继续上局/营地/生涯/设置/退出六钮),**不再**是战斗界面/棋盘背景 |
|
||||
| 2 | 菜单按钮可点 | 六钮逐个点:鼠标悬停有反馈、点击有响应(继续上局在无断点时不显示——有断点时显示且文案带关卡号) |
|
||||
| 3 | 菜单与战斗互不遮挡 | 开新冒险后菜单让位、战斗界面完整可见;回菜单后战斗内容不再透出(模态互斥观感与改前一致) |
|
||||
| 4 | 各覆盖层开合层级正确 | 图鉴/关卡地图/奇物/终局/商店/营地/设置/状态/生涯/确认框/调试浮窗逐个开合——浮层都在内容之上,调试浮窗浮于菜单之上且不吃下层点击 |
|
||||
| 5 | 音量与减动效启动即生效 | 改设置退出重进:音量/减动效保持上次值(boot 链路后置条件的人眼侧) |
|
||||
Reference in new issue
Block a user