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:
DKChan committed 2026-10-15 07:59:25 +08:00
1 parent 67342c690e
commit db1bf42322
5 files changed
+64 -14

No files matched your search

+18
View File
@@ -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 实战坑(本项目踩实)