docs(card): 需求卡片·代码注释禁用词清扫批 v1.0 + 06 条目推进「已写卡」

卡片落 design/research/需求卡片-代码注释禁用词清扫批-2026-10-20.md,六需求点:
N1 完美排雷→完美封印(全库统一,含对外文案 3 处)/N2 板级→整图/
N3 门票→专长凭证(仅注释措辞)/N4 正主→现行事实源/N5 落籍→已入库/
N6 代码域静态扫描闸新增 S11「代码注释禁用词」规则。

上游依据=2026-10-19 用户裁(完美排雷全库统一换代为完美封印,含代码内部注释),
据此推翻 需求卡片-凭证件裁削批:108「内部开发用语按 v3.15 纪律保留」半句,
该卡片条款订正归文档轨批。

契约八条:标识符零改动(feat_ticket_*/SHELF_KINDS/存档键)/游戏行为零变化
(唯一例外=对外文案三处文本)/S11 先落规则后修码/S11 词表从术语表解析不内联/
S11 带扫描面零命中自检/禁碰并行会话在改文件(AGENTS.md/code-conventions.md)/
对照性文本豁免。

不做(去向):design/ 全部文档归 reports/ 反哺点;门票标识符与数据键不动;
shop.tres:86 与 curio_interact_controller.gd:165-166 移交文档侧定性;
A 表词/流程动词/STC 通用词待用户另裁。

06 条目状态:待写卡 → 已写卡(卡片路径)。
流水线闸 PASS:卡片口径 22 张全过。
This commit is contained in:
DKChan committed 2026-10-20 00:45:43 +08:00
1 parent 6e04fa60f6
commit 3e3bc136f9
2 files changed
+297 -1

No files matched your search

+1 -1
View File
@@ -690,4 +690,4 @@
**归属**:game/ 代码与数据表(代码域,走独立 worktree 批;并行避让——`changelog-retire-20261019` 在盘未合回且正在改 `AGENTS.md` 与 `design/dev/code-conventions.md`,本批禁碰这两个文件,S11 规则说明自持于 `game/tests/static_scan.sh` 头注与 `game/tests/README.md`)
**状态**:待写卡
**状态**:已写卡(design/research/需求卡片-代码注释禁用词清扫批-2026-10-20.md)
@@ -0,0 +1,296 @@
# 需求卡片·代码注释禁用词清扫批(退役词换代+完美排雷统一为完美封印)
- **批次名**:代码注释禁用词清扫批
- **日期**:2026-10-20
- **批次性质**:工程债/重构(凭 06 在册条目直接写卡;工程直入四类,无设计前置要求)
- **设计事实源**(唯一事实源:`design/gdd/术语表.md`「退役词对照」+「用语规范 A 表」+「对外命名纪律」节;req-card 三选一之③工程直入证据指认):扫描读数=`game/` 下 195 个文件(.gd/.tres/.md/.json/.sh/.txt)逐处实测,落点带 file:line(见 §2);复现命令见 §2 末。
- **版本**:v1.0
- **迭代归属**:待编入 roadmap 迭代 32(本卡不自行编入;编排归 iter-plan 段)
- **上游依据**:2026-10-19 用户裁——「完美排雷」**全库统一**换代为「完美封印」,含代码内部注释
## 1. 目标与完成定义
**目标**:把术语表已在册的退役词从 `game/` 的代码注释里清干净,并把「完美排雷」统一为对外正式名「完美封印」;同时在**代码域自己的静态扫描闸**里补一条规则,让这类残留以后自动见红。
| 需求点 | 一句话 |
|---|---|
| **N1** | 「完美排雷」全库统一为「完美封印」(含对外文案 3 处、代码注释 13 处) |
| **N2** | 注释里「板级」换代为「整图」 |
| **N3** | 注释里「门票」换代为「专长凭证」(标识符与数据键零改动) |
| **N4** | 注释里「正主」换代为「现行事实源」 |
| **N5** | 注释里「落籍」换代为「已入库」 |
| **N6** | 代码域静态扫描闸新增 S11「代码注释禁用词」规则,先落规则再见红 |
**完成定义**(全部满足才算完):
1. `game/` 内 `完美排雷`/`板级`/`门票`(注释面)/`正主`/`落籍` 五词,**疑似现行计数全部为 0**(豁免=含对照/历史信号的行)。
2. 对外文案三处不含「雷」字面,读作「完美封印」。
3. 冒烟绿数与改前基线一致(现行 1151 项 0 失败)、单元测试 34 套全绿、探针段绿。
4. S11 规则在位:注入一次禁用词 → `game/tests/static_scan.sh` 判红;还原后绿;变异验证记录进实现报告。
5. 代码域闸按域选档跑通,回执 `game/tests/.gates/receipt.json` 的 commit = 分支 tip 且 `all_green=true`。
6. `reports/` 三份产出物写齐(实现报告/代拍板追认单/反哺点清单)。
**文档面不在本卡完成定义内**——迭代批禁写 `design/` 整目录与根规则文件,唯一可写目录=`reports/`(process-conventions §3 第 13 条)。
## 2. 现状事实(2026-10-19 实测,开工自行复核)
扫描范围:`game/` 下 195 个文件(.gd/.tres/.md/.json/.sh/.txt)。
口径:命中行若含对照性/历史信号(`退役`/`作废`/`换装`/`继任`/`留档`/`历史`/`已删`/`不再`/`禁用`/`禁「`/`字面`/`原「`/`旧称`/`更名`/`换代`/`改为`/`→`/`禁令`/`引举`/`对照`/`豁免`/`待裁`/`已入库`/`登记`/`风味`)则不计入。
### N1 · 完美排雷(16 处 / 9 文件)
| 落点 | 行 | 面 |
|---|---|---|
| `core/battle_orchestrator.gd` | 265、911 | 注释 |
| `core/battle_orchestrator.gd` | **925** | **对外文案**(`"完美排雷!清图奖励 ×2"`) |
| `core/battle_orchestrator.gd` | 1296 | `##` 文档注释(谓词说明) |
| `data/schemas/settlement_table.gd` | 8 | 注释 |
| `presentation/row_pacer.gd` | 92 | 注释 |
| `presentation/views/battle_log_view.gd` | **194** | **对外文案**(「本板完美排雷已破」) |
| `presentation/views/board_fx_view.gd` | 2、90 | 注释 |
| `presentation/views/board_fx_view.gd` | **102** | **对外文案**(`_show_banner("完美排雷 ×2")`) |
| `presentation/views/settlement_fx_view.gd` | 14 | 注释 |
| `game/README.md` | 146 | 文档正文 |
| `smoke/smoke_all.gd` | 3512、3516、4076、6201 | 注释/断言描述 |
| `tests/smoke/critical-paths.md` | 20 | 文档正文 |
注:`battle_log_view.gd:194` 的病句已由 `design/qa/文案审查报告-2026-10-18.md:150` 点名,本批一并修掉。
### N2 · 板级(26 处 / 13 文件)
`core/battle_orchestrator.gd`(67、265、470、482、506、507、928、1213)· `core/board_data.gd`(17、53)· `core/treasure_items.gd`(2、41)· `core/minesweeper_rules.gd`(126)· `data/schemas/variation_table.gd`(20、79)· `presentation/main.gd`(914)· `presentation/treasure_interact_controller.gd`(101)· `presentation/views/board_view.gd`(149、511)· `presentation/views/board_cell_unit.gd`(97)· `presentation/views/hero_info_panel_view.gd`(122、162)· `presentation/views/settlement_fx_view.gd`(146)· `smoke/smoke_all.gd`(2588、2630)· `tests/unit/core/feat_vouchers_test.gd`(174)
### N3 · 门票(38 处 / 11 文件;其中 3 处移交,本批做 35 处)
`core/adventure_runner.gd`(67、68、69、477、664、751、771、788、796、1033、1034)· `core/level_runner.gd`(51、781、826、831)· `data/schemas/adventure_table.gd`(92、96、97)· `data/schemas/shop_table.gd`(18)· `data/tables/shop.tres`(104)· `presentation/curio_interact_controller.gd`(89、217、237)· `presentation/views/curio_pick_overlay.gd`(110)· `smoke/level_autoplay.gd`(226)· `smoke/smoke_all.gd`(1362、1363、1370、1378、1379、1382、1384、5306)· `tests/unit/core/pool_case_d_test.gd`(98)· `tests/unit/presentation/reward_overlay_test.gd`(41)
**移交 3 处**(不属本批,去向=文档轨批):`data/tables/shop.tres:86` display_name「奇物门票」、`presentation/curio_interact_controller.gd:165`/`:166` 玩家可见文案「奇物门票/开一次奇物三选一」。
### N4 · 正主(12 处 / 9 文件,含误报 1 处)
`core/adventure_runner.gd:59` · `core/treasure_items.gd:57` · `presentation/views/board_cell_unit.gd:111`/`112` · `presentation/views/board_view.gd:122` · `smoke/board_shot_probe.gd:31` · `smoke/layout_probe.gd:2` · `smoke/shot_probe.gd:3`/`28` · `smoke/t17_defer_probe.gd:6`/`20` · `tests/unit/battle_settlement/damage_math_test.gd:36`(**误报**——「正主角池」是「正主」+「角池」,非词面命中,不改)
### N5 · 落籍(10 处 / 4 文件,含历史注记 1 处)
`core/config_db.gd`(22、23、42、45、280、337、390)· `data/tables/enemy.tres:653`(**历史注记**——「已落籍 9cc4b8b」带 commit 号,属留档文本,不追改)· `presentation/views/board_view.gd:35` · `tests/unit/data_config/config_db_test.gd:133`
**已核实清零(迭代 31 成果,本批不重复动)**:`金币`/`插旗`/`标旗`/`雷格`/`惩罚格`/`旗` 在 `game/` 内疑似现行计数**均为 0**。残留 3 处「旗」全在闸门逻辑(`smoke/smoke_all.gd:1319` 禁字面检查)与字形检查夹具(`tests/unit/presentation/ui_font_asset_test.gd:18`/`:19`),属对照性文本。
**复现命令**(仓库根):`grep -rn "完美排雷\|板级\|门票\|正主\|落籍" game/ --include=*.gd --include=*.tres --include=*.md --include=*.json --include=*.sh`
## 3. 设计契约(🔴 违反=L3 停机呈报)
1. 🔴 **标识符零改动**——`feat_ticket_*`(`_feat_ticket_pity`/`_feat_ticket_sold`/`_feat_ticket_appeared`/`_redeem_feat_ticket()`/`_pool_ticket`/`feat_ticket_chance`/`feat_ticket_quota`)、`SHELF_KINDS` 的 `"feat_ticket"`、断点存档键 `"feat_ticket_pity"`/`"feat_ticket_sold"`(持久化在 `save.json` 的 `breakpoint.adventure_counters`)**一律不动**。改名会断旧存档与跨文件契约,且上游 `需求卡片-凭证件裁削批`:109 明列「feat_ticket 体系|与本批无关,不碰」。
2. 🔴 **游戏行为零变化**——本批是纯中文文本替换,禁止改动任何逻辑、数值、权重、条件判断。唯一例外=对外文案三处的**文本内容**变更(改前「完美排雷」→改后「完美封印」),这是玩家可见文本变化,须登记实机目检项。
3. 🔴 **对外文案只动三处**——`battle_orchestrator.gd:925`/`board_fx_view.gd:102`/`battle_log_view.gd:194`;其余对外文案(含 `shop.tres:86`、`curio_interact_controller.gd:165-166`)零改动。
4. 🔴 **S11 规则先落、后修码**——先把规则写进 `game/tests/static_scan.sh` 并跑出红,再动注释(code-conventions 缺陷-规范对照表纪律)。
5. 🔴 **S11 词表不内联第二份**——规则脚本从 `design/gdd/术语表.md`(「退役词对照」+「用语规范 A 表」两节)解析词面;禁止在脚本里另抄一份词表(单一事实源红线,ADR 漂移教训同类)。
6. 🔴 **S11 必须带扫描面零命中自检**——先数一遍扫描面文件数,为零即判红(沿 S3 教训:路径写歪时自检一起歪、一起红,不会静默恒绿)。
7. 🔴 **禁碰并行会话在改的文件**——`AGENTS.md` 与 `design/dev/code-conventions.md`(分支 `changelog-retire-20261019` 在盘未合回)。S11 规则说明自持于 `game/tests/static_scan.sh` 头注与 `game/tests/README.md`。
8. 🔴 **对照性文本豁免**——含退役/更名/禁令等信号的行不改写(术语表用语规范 B 类豁免条款)。
## 4. 范围边界
**做**:
1. `game/` 内 `完美排雷`→`完美封印`(16 处,含对外文案 3 处)
2. `game/` 内注释面 `板级`→`整图`(26 处)
3. `game/` 内注释面 `门票`→`专长凭证`(35 处,剔除移交 3 处)
4. `game/` 内注释面 `正主`→`现行事实源`(11 处,剔除误报 1 处)
5. `game/` 内注释面 `落籍`→`已入库`(9 处,剔除历史注记 1 处)
6. 代码域静态扫描闸新增 S11 规则(含零命中自检)
7. `game/README.md`/`game/tests/README.md` 同步
8. 全量冒烟+单元+探针验证,绿数与基线一致
**不做**(去向):
| 不做的 | 去向 |
|---|---|
| `design/` 全部文档(术语表/战斗结算/地图战斗资源/难度曲线与Boss/art-bible/ux 各件/07 清单) | **反哺点**——落 `reports/iter32-反哺点-<日期>.md`,由用户在会话裁决后归文档轨批(迭代批禁写 `design/`) |
| `门票` 标识符与数据键(`feat_ticket_*`/`SHELF_KINDS`/存档键) | 上游卡 §4 明列不碰;若将来要改,另立独立批并连带处理存档兼容 |
| `shop.tres:86`「奇物门票」与 `curio_interact_controller.gd:165-166` 玩家文案 | 属 奇物/专长 归类表述,与 06「冒记案遗留待裁两项」第①项同源 → 交文档侧定性后另走传导批 |
| `AGENTS.md`/`design/dev/code-conventions.md` | 并行会话 `changelog-retire-20261019` 在盘未合回,本批禁碰 |
| 术语表 A 表词(不得 14/报错 18/对标 1/若干 1/buff 22) | 待用户另裁;裁入则新立 06 条目与卡片 |
| doc-conventions 第 4 节流程动词(收口 128/随批 20/台账 17/对拍 16/在飞 10/落文 2) | 同上 |
| 简明技术中文(STC)通用禁用词(缺省 105/情况 26/入参·出参 23/比较·较为·相对 22 等) | 同上 |
| 任何游戏逻辑/数值改动 | 禁止(本批纯文本替换) |
## 5. 关联文档同步面(必填)
| 文档 | 关联点(本批实现会改变它的哪条陈述) | 同步义务 |
|---|---|---|
| `design/gdd/术语表.md`「退役词对照」节 | 「门票→专长凭证」行现指在册,代码侧换代后该行应保留(对照行合法);「完美排雷」未入表,玩家面正式名=「完美封印」应由文档侧登记 | **反哺点** |
| `design/gdd/systems/战斗循环/战斗结算.md`(:85/:108/:116/:139/:141/:161/:259/:342) | 全篇称「完美排雷」,与 `奇物.md` v3.18+ 的「完美封印」同名异称 | **反哺点** |
| `design/gdd/systems/战斗循环/地图战斗资源.md`(:155/:194) | 同上 | **反哺点** |
| `design/gdd/systems/冒险循环/难度曲线与Boss.md`(:224/:227/:313) | 同上 | **反哺点** |
| `design/gdd/systems/战斗循环/战斗表现.md`(:53/:68) | 同上 | **反哺点** |
| `design/gdd/systems/表现与支撑/HUD框架.md`(:277) | 同上 | **反哺点** |
| `design/gdd/ux/battle.md`(:85/:222/:422) | 同上 | **反哺点** |
| `design/gdd/ux/interaction-patterns.md`(:90) | 同上 | **反哺点** |
| `design/art/art-bible.md`(:8/:88/:562/:574) | 同上;另 :198/:211 的「金币」换代 GP 已由分支 `gpsweep-20261019` 完成但未合回 | **反哺点** |
| `design/gdd/07-体验验证清单.md`(:142) | 「完美排雷」措辞;本批对外文案变更需登记目检项 | **反哺点** |
| `game/README.md`(:146/:168/:267) | 措辞换代 | **本批直改**(文件在 `game/` 内) |
| `game/tests/README.md` | S11 规则说明与扫描面登记 | **本批直改** |
| `game/tests/static_scan.sh` | S11 规则承载 | **本批直改** |
## 6. 任务卡
### 卡前·文件结构图
| 文件 | 职责 | 本批动作 |
|---|---|---|
| `game/tests/static_scan.sh` | 静态扫描域可执行承载(现 S1–S5、S9、S10) | 增 S11 段 |
| `game/tests/README.md` | 测试分层与闸口径登记 | 增 S11 说明 |
| `game/README.md` | 切片架构说明 | 措辞换代 |
| `game/core/battle_orchestrator.gd` | 战斗编排器 | 注释+对外文案换代 |
| `game/core/minesweeper_rules.gd` 等 12 个 .gd | 注释承载 | 注释换代 |
| `game/data/tables/*.tres` | 数据表注释 | 注释换代 |
| `game/smoke/smoke_all.gd` | 冒烟断言 | 注释与断言描述换代 |
| `game/tests/unit/**` | 单元测试 | 注释与断言描述换代 |
### T0 · 基线记录(≈15 min)
- [ ] 在 worktree 内跑全量冒烟,记录绿数(现行基线 1151 项 0 失败)
- [ ] 跑单元测试,记录套数与绿数(现行基线 34 套全绿)
- [ ] 跑 `bash game/tests/static_scan.sh`,记录现行退出码 0
- [ ] 跑 §2 末复现命令,存改前命中清单(五词逐处),作为改后零残留的对照
**取用**:无(首卡)。
**产出**:`reports/iter32-实现报告-<日期>.md` 的「改前基线」三数——`baseline_smoke_green:int`/`baseline_unit_suites:int`/`baseline_scan_exit:int`。
### T1 · S11 规则落闸并见红(≈1.0–1.5h)
- [ ] 在 `game/tests/static_scan.sh` 头部注释的第 1–3 行补 S11 一行说明(规则名+权威出处+扫描面)
- [ ] 新增 S11 段:扫描面=`DIR_CORE`+`DIR_PRES` 下 `.gd`,逐行剔除注释行以外的代码行后取注释文本段
- [ ] 词表面从 `design/gdd/术语表.md` 解析:取「退役词对照」表第一列全部词面(去括号注)+「用语规范」A 表「禁用」列全部词面
- [ ] 规则先数扫描面文件数,为零即 `echo "[static_scan] S11 FAIL: 扫描面为空"` 并 `fail=1`
- [ ] 命中即打印 `file:line + 命中词`,段末 `fail=1`
- [ ] 注入验证:在 `game/core/battle_orchestrator.gd` 某注释里临时写回「板级」一词 → 跑 `bash game/tests/static_scan.sh` 见红并记输出摘要 → `git checkout -- game/core/battle_orchestrator.gd` 精确还原 → 记录进实现报告变异验证表
**取用**:无。
**产出**:`game/tests/static_scan.sh` 的 `S11` 段(退出码语义=任一硬失败规则命中即 `exit 1`,与现役同段同规)。
### T2 · 完美排雷 → 完美封印(≈1.0h)
- [ ] `game/core/battle_orchestrator.gd:925` 行内字符串 `"完美排雷!清图奖励 ×2"` 改为 `"完美封印!清图奖励 ×2"`
- [ ] `game/presentation/views/board_fx_view.gd:102` `_show_banner("完美排雷 ×2")` 改为 `_show_banner("完美封印 ×2")`
- [ ] `game/presentation/views/battle_log_view.gd:194` 病句改写:现 `"(本板完美排雷已破——归因此封印)"` → `"(本图完美封印已破——归因此次封印)"`
- [ ] 其余 13 处注释/文档正文逐处换代(清单见 §2 N1 表)
- [ ] 跑 §2 末复现命令确认 `完美排雷` 零命中
**取用**:无。
**产出**:`game/` 内「完美排雷」零命中;对外文案三处读作「完美封印」。
### T3 · 板级 → 整图(≈1.0h)
- [ ] `game/core/battle_orchestrator.gd` 8 处(67/265/470/482/506/507/928/1213)换代
- [ ] `game/core/board_data.gd` 2 处(17/53)换代
- [ ] 余 11 文件 16 处逐处换代(清单见 §2 N2)
- [ ] 跑 §2 末复现命令确认 `板级` 零命中
**取用**:无。
**产出**:`game/` 内「板级」零命中。
### T4 · 门票 → 专长凭证(注释面,≈1.0h)
- [ ] `game/core/adventure_runner.gd` 11 处注释换代(67/68/69/477/664/751/771/788/796/1033/1034)
- [ ] `game/core/level_runner.gd` 4 处(51/781/826/831)
- [ ] `game/data/schemas/adventure_table.gd` 3 处(92/96/97)+ `shop_table.gd:18`
- [ ] `game/data/tables/shop.tres:104` 注释换代
- [ ] `game/presentation/curio_interact_controller.gd` 3 处(89/217/237)+ `curio_pick_overlay.gd:110`
- [ ] `game/smoke/level_autoplay.gd:226`+`smoke_all.gd` 8 处+`tests/**` 2 处换代
- [ ] 复核标识符与数据键零改动(`feat_ticket` 族、`"feat_ticket"` 行族键、存档键)
**取用**:无。
**产出**:`game/` 注释面「门票」零命中;标识符与数据键保持原样。
### T5 · 正主 → 现行事实源(≈0.5h)
- [ ] 11 处换代(清单见 §2 N4,剔除 `damage_math_test.gd:36` 误报)
**取用**:无。
**产出**:`game/` 内「正主」零命中。
### T6 · 落籍 → 已入库(≈0.5h)
- [ ] 9 处换代(清单见 §2 N5,剔除 `enemy.tres:653` 历史注记)
**取用**:无。
**产出**:`game/` 内「落籍」零命中。
### T7 · 全量验证与产出物落位(≈1.0h)
- [ ] 跑代码域档验收(按本批改动域选档),确认所选域全绿
- [ ] 确认回执 `game/tests/.gates/receipt.json` 的 commit = 分支 tip 且 `all_green=true`
- [ ] 写 `reports/iter32-实现报告-<日期>.md`(各卡状态+改前改后读数对照+实机目检总清单+遗留读数义务)
- [ ] 写 `reports/iter32-代拍板-<日期>.md`
- [ ] 写 `reports/iter32-反哺点-<日期>.md`(§5 每条都要有落点)
**取用**:T1–T6 全部产出。
**产出**:`reports/` 三份产出物 + 可合回的分支 tip。
**估时合计 ≈6.5–7.5h**(不含并行会话等待)。超 8h 切分预案:T3/T4 各拆「核心层」与「呈现+测试」两卡串行施工,其余不动。
## 7. 验证闸
### 逐需求点验收清单
| # | 需求点 | 测什么(断言/行为) | 怎么测(落点) | 谁验 |
|---|---|---|---|---|
| A1 | N1 | `game/` 内 `完美排雷` 疑似现行计数 == 0 | grep 复现命令+同脚本口径 | 自动(S11+收尾 grep) |
| A2 | N1 | 对外文案三处文本恰为「完美封印…」,且不含「雷」字面 | 新冒烟断言:取清图高光行 `display_name`,断言 `find("雷") == -1` 且 `find("完美封印") >= 0`;落点 `game/smoke/smoke_all.gd` 清图段 | 自动(闸 01) |
| A3 | N2 | `game/` 内 `板级` 计数 == 0 | 同 A1 | 自动 |
| A4 | N3 | `game/` 注释面 `门票` 计数 == 0;且 `feat_ticket` 标识符与存档键**保持原样** | 同 A1 + 新增断言:`grep -c "feat_ticket"` 计数 == 改前值 | 自动 |
| A5 | N4 | `game/` 内 `正主` 计数 == 0 | 同 A1 | 自动 |
| A6 | N5 | `game/` 内 `落籍` 计数 == 0(历史注记行豁免) | 同 A1 | 自动 |
| A7 | N6 | S11 规则在位:注入禁用词 → 退出码 1 且输出含 `S11 FAIL`/命中行 | 注入实验(变异验证),落点 `game/tests/static_scan.sh` | 自动(人工执行一次取证) |
| A8 | 全域 | 冒烟绿数 == 基线 1151、单元 34 套全绿、探针段绿 | 跑所选域档 | 自动 |
| A9 | 全域 | 回执 commit == 分支 tip 且 `all_green=true`,零新增红 | 跑闸后读 `game/tests/.gates/receipt.json` | 自动(合回闸) |
**测试方式两分法**:A1–A7 属能力验证(静态扫描/断言直取数据)与取证实验;A8–A9 为运行期验证。玩家可见文案的最终观感归**用户目检**(登记不阻塞):商店/图例/HUD 与结算高光行读作「完美封印/封印印记」。
**闸口径**:按本批改动域选档跑 `tools/run_all_gates.sh`(本批只触 `game/` 与 `reports/` → 代码域档);跑完写回执。
**回归措辞模板**:「里程碑步(波/T 段)出口跑一次全套闸;波内修复只做出红最小单元的最窄确认;新增测试/工具先行孤立验证再并入全套」。
### 变异验证(新增判据必做)
| 变异点 | 注入形态 | 跑的闸 | 期望红 |
|---|---|---|---|
| `game/core/battle_orchestrator.gd:265` 注释 | 写回「板级完美排雷」原措辞 | `bash game/tests/static_scan.sh` | `S11 FAIL` + 命中行输出 |
| 同上对外文案 | `game/core/battle_orchestrator.gd:925` 写回「完美排雷!…」 | 冒烟清图段 | 断言 A2 红 |
| S11 扫描面 | 临时把 `DIR_CORE` 改成不存在目录 | `bash game/tests/static_scan.sh` | `S11 FAIL: 扫描面为空` |
注入后一律 `git checkout -- <file>` 精确还原,四件(变异点 file:行/跑的闸/红输出摘要/还原结论)记进实现报告变异验证记录表。
## 8. 异常分级
- **L1(自救)**:单文件漏改致 grep 未过 → 补改重跑该段,不改批结构。
- **L2(记录继续)**:冒烟绿数与基线偏差 ≤2 且已归因到断言描述文本替换 → 记录偏差原因后继续。
- **L3(停机呈报)**:
1. 冒烟绿数下降 >2,或出现逻辑断言红(说明改动触及行为);
2. `.tres` 加载失败或 schema 不同步;
3. 改前改后同种子读数不一致;
4. S11 注入后不变红(判据无效);
5. 触碰并行会话在改文件(`AGENTS.md`/`design/dev/code-conventions.md`)。
## 9. 代拍板白名单
1. 注释换代时的措辞微调(如「板级变异」→「整图变异」vs「整图作用域变异」),语义等价即可。
2. `落籍`→`已入库` 在带 commit 号的历史注记行**不改**(留档文本)。
3. `正主` 误报处(`damage_math_test.gd:36`「正主角池」)不改。
4. 测试断言描述文本的替换措辞,语义等价即可。
5. S11 规则段的 shell 写法(grep 组合、计数方式),与现役 S 段同构即可。
超清单必呈报。
## 10. 待裁点
**零待裁点,开工门=U0(`/iter 32` 发令)。**
已落裁决两条,卡片据以成文:
| 裁定 | 结论 |
|---|---|
| 完美排雷 | 全库统一换代为「完美封印」(含代码内部注释)——2026-10-19 用户裁;据此推翻 `需求卡片-凭证件裁削批`:108「内部开发用语按 v3.15 纪律保留」半句,卡片条款订正归文档轨批 |
| 门票 | 仅换代注释措辞;标识符与数据键零改动;玩家可见两处(`shop.tres:86`/`curio_interact_controller.gd:165-166`)移交文档侧定性 |