feat(通关口径换代·提前实施卡批 T5a/b): 产出物三份——实现报告(实际对照表 a1-a12+q2-q5 全绿/撤销证明记录 12+1 条全闭合/实机目检总清单九项/遗留读数义务=零数值改动零 MC 11 对拍不补跑/异常处置四件)+代拍板追认单(白名单三条零越权+三次 L1 自救)+反哺点清单(①②核对注记零落文义务/③④⑤已随批完成,无待裁决反哺点);卡片与待办条目随批删除(活干完登记即毁,quotaface 先例;唯一引用=条目自身已核);pipeline_gate 绿

This commit is contained in:
DKChan committed 2026-10-26 07:34:20 +08:00
1 parent 92ae63c299
commit ed49a7a552
5 files changed
+100 -338

No files matched your search

@@ -0,0 +1,11 @@
# 代拍板追认单:通关口径换代批(提前实施卡批)
依据需求卡片 v1.1 §10 代拍板白名单,逐条追认(备案确认):
| # | 白名单授权 | 实际执行 | 追认 |
|---|---|---|---|
| 1 | B/C 面标签与注释措辞在映射表两可时的具体选词(限标签/注释面) | 全部按卡内映射表与逐处换法表执行;表外裁量仅两处——①ui_click_probe:402「常态通关远低于此」→「常态跑完远低于此」(帧预算语境,卡内映射表 v1.1 已补行)②「非末关通关」族防连读歧义统一「非末关的关卡完成」(grilling 应修 4 折入项) | 无越权 |
| 2 | 豁免单行号按实施后实测定 | 13 行豁免行号与卡片基线完全一致(C 面同位替换零行数变化)——零偏移 | 无偏差 |
| 3 | V1-V7 断言夹具数据具体取值 | V1(heal 5/10→15;满血 0/12→12)、V3(cleared=false/failed/1 关/止步 2/钥石 4/种子 42)、V6(recent 单条 completed/2 关/5 钥石/种子 42)、V7(探针既有 atk+100%/N=10 档)——全部确定性取值 | 无越权 |
白名单外零拍板。批内三次异常处置(worktree 环境补搬 assets、尾缀避词、S11 头注避词)均属 L1 自救(卡 §9 预案内),无 L2/L3 事件。
@@ -0,0 +1,13 @@
# GDD 反哺点清单:通关口径换代批(提前实施卡批)
实现批禁写 design/ 与根规则文件;以下条目由用户在会话中裁决后归文档批落文(执行入口 doc-design):
| # | 文档 | 关联点 | 反哺内容 | 依据 |
|---|---|---|---|---|
| ① | design/gdd/术语表.md v1.23 | 「关卡完成」「冒险成功」「冒险落幕」三行+退役词对照 | **预期零改动**——三行与退役词对照已由 termsweep2-20261026 批立入,本批实施数据(12 产品字串/111 随动/84 注释全消化)与三行口径零冲突(T0 核对+全批实施验证) | 卡片 §6;无落文义务,本条为核对注记 |
| ② | design/engineering/architecture/architecture.md「测试与质量域」节 | S11 规则行是否载豁免计数 | **预期零改动**——实查该节无 S11 行(S11/S12 规则说明自持于 game/tests/README.md 与 static_scan.sh 头注,README:149 明示);豁免单计数已随批在 README 订正 4→20 | 卡片 §6 T0 查证项 |
| ③ | 体验验证清单.md | 生涯页目检项引语(:107/:193/:198) | **已随批落地**(用户 B 表指令授权批内改)——引语随 a6/a7 换代+:107 关卡完成率口径;:258 历史读数记载行按豁免保留 | 卡片 §6 q5 |
| ④ | 待办清单.md | 「game 面玩家可见字串『通关』退役换代」条目 | **已随批删除**(活干完登记即毁——quotaface 先例) | 卡片 §6 |
| ⑤ | game/tests/README.md | S11 豁免计数「4 处」过期(quotaface 漏同步,实际 7) | **已随批订正**(4→20 并注明清单见 static_scan.sh 头注)——game/ 内 .md 属批内可写面 | 实现报告 §五.4 |
结论:①②为核对注记(零落文义务);③④⑤已随批完成。**无待裁决反哺点**——用户无需另行落文。
@@ -0,0 +1,76 @@
# 实现报告:通关口径换代批(提前实施卡批 · termsweep-game-20261026)
- 依据:reports/需求卡片-通关口径换代批-2026-10-26.md v1.1(已随批退役,git 历史可考)
- 执行形态:提前实施卡批(用户 2026-10-26 裁准,先例 quotaface-20261026);分支 termsweep-game-20261026
- 状态:**全部落地,批末全量域闸见批末回执**
## 一 · 各卡状态
| 卡 | 内容 | 状态 |
|---|---|---|
| T0 | worktree+缓存三件套(.godot/.import 边车/assets 三目录——art 113 png 不入 git 需手工搬)+前置验证(V6 open_camp 最小 data 健壮性经 grilling 读码+实跑双确认) | 完成 |
| T1 | A 面产品字串 12 条(A 表逐字)+wr1 随动+V1-V3 新增断言 | 完成 |
| T2 | B 面断言随动(12 文件 58 处+theme_projection 3 处)+三探针(wr2/wr3+V7+ui_click 7)+V4-V6+验证集清单重生成 1591 条对账零差异 | 完成 |
| T3 | C 面注释清扫 61 条+S11 豁免单 7→20 处+tests/README 计数订正 | 完成 |
| T4 | 体验验证清单 3 行引语+件核三判据 | 完成 |
| T5 | 产出物三份+删卡删条目+全量域闸 | 完成(本报告即其一) |
## 二 · 实际对照表(卡片 §8 的实现侧回填)
| 需求点 | 改动(文件:行) | 验收测试 | 层级 | 真实入口 | 撤销证明 | 结果 |
|---|---|---|---|---|---|---|
| a1 关卡完成文案 | battle_narrator.gd:50 | battle_narrator_test:41(wr1 随动) | 单元 | 直调 battle_end_text | 回退→wr1 红→复绿 | 绿 |
| a2/a3 回血两分支 | battle_narrator.gd:90/:92 | 〔口径换代 V1〕battle_narrator_test._test_level_clear_wording | 单元 | 直调 curio_pick_header | 回退→V1 双红→复绿 | 绿 |
| a4 渠道句 | battle_narrator.gd:156 | 〔口径换代 V2〕同上 | 单元 | 直调 node_curio_header | 回退→V2 红→复绿 | 绿 |
| a5 完成关数行 | battle_narrator.gd:166(+:159 注释) | 〔口径换代 V3〕同上 | 单元 | 直调 adventure_summary_text | 回退→V3 红(含负断言)→复绿 | 绿 |
| a6/a7 生涯标签 | career_overlay.gd:42/:43 | 〔口径换代 V4〕theme_projection_test(树内 label 收集) | 接口 | open_career+_all_labels | 分条回退→V4 双红→复绿 | 绿 |
| a8 槽摘要 | save_select_overlay.gd:87 | ui_struct_probe:436(wr2 随动) | 探针 | 场景实例化+喂入数据 | 回退→sl2 红→复绿 | 绿 |
| a9 解锁标签 | ui_kit.gd:403 | 〔口径换代 V5〕theme_projection_test | 单元 | UiKit 常量直读 | 回退→V5 红→复绿 | 绿 |
| a10 最近冒险行 | camp_overlay_view.gd:545 | 〔口径换代 V6〕theme_projection_test._camp_recent_projection | 接口 | open_camp 最小档直调 | 回退→V6 红→复绿 | 绿 |
| a11 完成率读数 | hud_presenter.gd:191 | ui_tune_probe:75(wr3 随动) | 探针 | 批量模拟输出 | 回退→wr3 红→复绿 | 绿 |
| a12 剩余 HP 行 | hud_presenter.gd:194 | 〔口径换代 V7〕ui_tune_probe(同报告补检) | 探针 | 批量模拟输出 | 回退→V7 红(与 wr3 双红验证独立钉住)→复绿 | 绿 |
| q2 断言随动 | 13 文件 60 处+探针 13+清单 38 | extract_checks --diff 零差异+各套件闸 | 机器对账 | 由 a1-a12 撤销证明连带覆盖 | 连带 | 绿 |
| q3 注释清扫 | C 面 61 条(豁免 13 行保留) | S11 零命中(等价验证器)+豁免撤销证明 | 静态 | 非行为改动(注释文本,零运行时语义) | hero.tres:21 去豁免→红→还原 | 绿 |
| q4 S11 豁免单 | static_scan.sh 7→20 处 | S11 零命中+头注避词自检 | 静态 | 同上 | 同上 | 绿 |
| q5 目检项引语 | 体验验证清单 :107/:193/:198 | --docs 域 doc_term_audit(批末全量档) | 文档域 | 非行为改动(引语) | — | 绿(批末闸) |
**撤销证明记录表**(a1-a12 十二条+q4 豁免一条,全部「回退 hunk→最窄断言红→复原复绿」逐条执行,执行序见 git 提交 54395b8b/51c6cf56 信息):
| # | 撤销对象 | 变红断言 | 红/绿 |
|---|---|---|---|
| a1 | battle_narrator:50 | 「关卡收束态恒为「关卡完成!」」(1/17 失败) | 红→复绿 |
| a2/a3 | :90/:92 | V1 两条(回血行/满血合法态) | 红→复绿 |
| a4 | :156 | V2 渠道句 | 红→复绿 |
| a5 | :166 | V3(输出含「通关 1 关」负断言同时抓) | 红→复绿 |
| a6 | career:42 | V4 双断言(标签缺失+旧词残留) | 红→复绿 |
| a7 | career:43 | V4 双断言 | 红→复绿 |
| a8 | save_select:87 | ui_struct sl2「got=通关 2 局」 | 红→复绿 |
| a9 | ui_kit:403 | V5 | 红→复绿 |
| a10 | camp:545 | V6(「实际…通关 2 关」实测抓旧文案) | 红→复绿 |
| a11 | hud:191 | wr3「缺关卡完成率」 | 红→复绿 |
| a12 | hud:194 | V7「缺关卡完成剩余 HP 行」 | 红→复绿 |
| q4 | S11 豁免 hero.tres:21 | 验证器精确命中 hero.tres:21 | 红→复绿 |
## 三 · 实机目检总清单(登记不阻塞——验收时间由用户自排)
1. 战斗总结结算:单关末行「关卡完成!」(非末关收束态);
2. 三选一停点头部:回血行「关卡完成回血 +N(生命 X → Y)」/满血态「生命已满——关卡完成回血 0(合法态)」;
3. 奖励节点三选一头行「与关卡完成专长三选一同库分流」;
4. 冒险结算屏:「完成 N 关 · 止步第 M 层 · 钥石合计 K · 主种子 S」;
5. 生涯页行标签「冒险成功局数〔1 局(三关全通)〕」「各关完成次数」;
6. 选档界面槽摘要「冒险成功 X 局 · 冒险 Y 局」;
7. 营地秘宝匣解锁条件行「冒险成功 0/1」形(adventure_cleared 条件件);
8. 营地底栏最近冒险「最近冒险:完成 · 完成 N 关 · …」;
9. 调试浮层批量模拟报告「关卡完成率 N%(W/T)」「关卡完成剩余 HP 均 x · 进 Boss HP 均 y」。
## 四 · 遗留读数义务
- 零数值改动=零 MC:全部改动为字串/标签/注释/断言文本,计数器键名(adventure_cleared/level_clear_counts)、存档域键、sim-data 锚与 JSONL 数据键、RNG 流名、数值行逐字未动;11 号 MC 对拍按零数值改动红线不补跑(quotaface 同款)。
- 断言条件表达式仅 wr1/wr2/wr3 三处随产品字串换代(判据随动非削弱),其余 57 处仅标签文本;零断言删除、零阈值放宽、零扫描面缩小。
## 五 · 异常与处置记录
1. worktree 环境红(theme_projection V1 主题段 7 失败)=.import 边车与 assets(art/fonts/theme,113 png 不入 git)未搬——补拷后 166 checks 全绿;坑册三件套的完整形态应含 assets 目录,已随 T2 提交信息留档。
2. 断言尾缀「通关换代」自撞 S11(新词含退役词「通关」进验证集清单 .md 整行扫描面)——尾缀改「口径换代 Vn」、S11 头注同避词;根因=卡短名含退役词,后续批次命名避开退役词。
3. S11 头注初版「通关口径换代批」自撞(static_scan.sh 属 .sh 扫描面)——改「口径换代批」。
4. tests/README.md S11 豁免计数「4 处」为 quotaface 批漏同步(实际已 7)——随批订正为 20。
@@ -1,325 +0,0 @@
# 需求卡片:通关口径换代批(game 面玩家可见字串 13 条+断言随动+注释清扫)
- 版本:**v1.1**(v1.0 成文→grilling 一轮复核零阻断、四应修折入:q3 计数口径注明+估时对齐+映射表补帧预算语境行+「非末关的关卡完成」防连读歧义;复核记录见 §13)
- 来源:[待办清单](../待办清单.md)「game 面玩家可见字串『通关』退役换代」条目(2026-10-26 登记,状态=文档设计已闭合+待写卡)(唯一事实源:[术语表](../design/gdd/术语表.md) v1.23「关卡完成」「冒险成功」「冒险落幕」三行+退役词对照「通关」「冒险终结」两行+用户 2026-10-26 开工指令 A/B/C 三面清单——A 表 12 条措辞已核、改动即停呈报)
- 归属:`game/presentation` 六件产品字串+13 测试文件+3 探针+`game/tests/验证集清单.md`+core 六件注释+七张表头注+schema 两件+sim 四件+`game/README.md`+呈现层注释件+`game/tests/static_scan.sh`(S11 豁免单)+根件`体验验证清单.md`(目检项引语随批同步——用户 B 表指令)
- 排期:提前实施(用户 2026-10-26 开工令「写需求卡片并实施」,先例=quotaface-20261026 提前实施卡批)
- 开工门:U0 已随开工令下达;grilling 复核门过(§13);零待裁点
- 估时:≈1.1 个工作日(T0–T5 合计 0.1+0.25+0.25+0.25+0.1+0.15)
## 0. 前置依赖与并行性
- **第〇步核对(2026-10-26 写卡会话)**:来源条目设计线闭合成立——凭据=术语表 v1.23 三行(termsweep2-20261026 批落,合并提交 6af36382)+用户 2026-10-26 裁决与开工令;状态=文档设计已闭合+待写卡,放行。
- 与迭代 38 七卡零文件交叠(levelmap/结构小件/效果引擎/明细行/奖励节点/结算行缓冲/调试入口批均不触碰本卡文件面;`battle_narrator.gd` 仅本卡触碰——奖励节点清扫批(迭代 38)动 battle_narrator.gd:15 的「节点内容待定——直通」行,本卡动 :50/:90/:92/:154/:156/:159/:166——行面不相交,先合者为准、后合者零冲突)。
- 与 2026-10-26 在途文档批(双层 BD 条目迁移 content-archive、奇物.md 修订——工作区未提交件)零交叠:本批 worktree 内不触碰待办清单 BD 条目区与奇物.md。
## 1. 目标与完成定义
**目标**:「通关」从 game/ 面全量退役——玩家可见字串换为主体明确短语族(单关=关卡完成、整局=冒险成功)、断言与探针随动、注释面清扫、带日期历史读数注释入 S11 留档豁免单;退役后非豁免残留由 S11(注释面+.md 整行)与 doc_term_audit(文档域 .md)双闸兜住,误用即红。
**改动单元清单**(🔴 契约 1——A 表措辞经用户逐条核定,实施逐字照行;超出本清单的新玩家可见「通关」字串=L3 停机呈报):
### q1 · A 面产品字串 12 条(行为改动——每条须断言钉住;任务 A 表编号至 12,标题计数「13 条」系含 :159 注释同步项,一并随 a5 落)
| # | 位置 | 旧 → 新 | 断言 |
|---|---|---|---|
| a1 | `battle_narrator.gd:50` | 「关卡通关!」→「关卡完成!」 | 既有 battle_narrator_test:41 随动(wr1) |
| a2 | 同 `:90` | 「通关回血 +%d(生命 %d → %d)」→「关卡完成回血 +%d(生命 %d → %d)」 | 新增 V1 |
| a3 | 同 `:92` | 「生命已满——通关回血 0(合法态)」→「生命已满——关卡完成回血 0(合法态)」 | 新增 V1(同函数两分支) |
| a4 | 同 `:156` | 「与通关专长三选一同库分流」→「与关卡完成专长三选一同库分流」 | 新增 V2 |
| a5 | 同 `:166` | 「%s\n通关 %d 关 · 止步第 %d 层 · 钥石合计 %d · 主种子 %d」→「%s\n完成 %d 关 · 止步第 %d 层 · 钥石合计 %d · 主种子 %d」 | 新增 V3 |
| a6 | `career_overlay.gd:42` | 标签「通关局数」→「冒险成功局数」 | 新增 V4 |
| a7 | 同 `:43` | 标签「各关通关次数」→「各关完成次数」 | 新增 V4 |
| a8 | `save_select_overlay.gd:87` | 「通关 %d 局 · 冒险 %d 局」→「冒险成功 %d 局 · 冒险 %d 局」 | 既有 ui_struct_probe:436 随动(wr2) |
| a9 | `ui_kit.gd:403` | TREASURE_REQ_LABELS 的 `adventure_cleared` 标签「通关」→「冒险成功」 | 新增 V5 |
| a10 | `camp_overlay_view.gd:545` | 「最近冒险:%s · 通关 %d 关 · 钥石 +%d · 种子 %d」→「最近冒险:%s · 完成 %d 关 · 钥石 +%d · 种子 %d」 | 新增 V6 |
| a11 | `hud_presenter.gd:191` | 调试浮层读数「通关率 …%」→「关卡完成率 …%」 | 既有 ui_tune_probe:75 随动(wr3) |
| a12 | 同 `:194` | 「通关剩余 HP 均 x」→「关卡完成剩余 HP 均 x」 | 新增 V7(ui_tune_probe 同报告补检) |
(同文件注释随动:battle_narrator:159「通关几关」→「完成几关」、career_overlay:11/:12/:36、save_select_overlay:2/:18、ui_kit:211——归 q3 呈现层注释清单,非独立行为改动。)
### q2 · B 面断言随动+新增断言+探针+验证集清单
**必红三处**(产品字串改后断言必红,先改产品后改断言同轮落地):
| wr | 断言位置 | 随动改法 |
|---|---|---|
| wr1 | `tests/unit/presentation/battle_narrator_test.gd:41` | 条件 `level == "关卡通关!"` 与标签/注释(:39/:41 两处引语)同换「关卡完成!」 |
| wr2 | `probe/ui_struct_probe.gd:436` | 条件 `sum1.text != "通关 2 局 · 冒险 7 局"` 与标签/注释(:434/:436/:437)同换「冒险成功 2 局 · 冒险 7 局」 |
| wr3 | `probe/ui_tune_probe.gd:75` | 条件 `out.contains("通关率")` 与标签(:75/:76)同换「关卡完成率」 |
**13 测试文件 60 处断言/注释随动**(按 §1 换法映射逐处套用;全部为标签文本或注释换代,**断言条件表达式除 wr1 外零触碰**):
| 文件 | 处数 | 逐处换法 |
|---|---|---|
| battle_narrator_test.gd | 2 | :39 注释+:41 标签/条件(wr1) |
| save_manager_domain_test.gd | 8 | :81「通关次数」→「关卡完成次数」、:83「随通关关卡置位」→「随关卡完成置位」、:85「通关局数」→「冒险成功局数」、:98「通关次数表」→「关卡完成次数表」、:268/:272/:324/:328「通关局」→「冒险成功局」「通关局数」→「冒险成功局数」 |
| save_slot_summary_test.gd | 1 | :49 标签「钥石/通关/总局」→「钥石/冒险成功/总局」 |
| adventure_feats_test.gd | 15 | :102/:106 注释「满配通关」→「满配冒险成功」、:132 注释同、:135「满配通关」→「满配冒险成功」、:136「通关几关 = 3」→「完成几关 = 3」、:154「通关三选一」→「关卡完成三选一」、:245/:364「通关部分回血封顶」→「关卡完成部分回血封顶」、:274「未打穿 · 通关 0 关」→「未打穿 · 完成 0 关」、:354/:355 注释「L2 通关」→「L2 关卡完成」、:409 注释「通关回血」→「关卡完成回血」、:417「满血通关回血 0」→「满血关卡完成回血 0」、:512 注释+:522「通关渠道」→「关卡完成渠道」 |
| level_shop_economy_test.gd | 12 | :3/:326 注释「满配通关」→「满配冒险成功」、:332 注释同、:334 标签「通关」→「关卡完成」(单关 victory)、:342/:343/:345/:353「通关路径」→「关卡完成路径」、:374 注释「难以通关」→「难以完成」、:491/:504「路径通关」→「路径完成」、:976 注释「快速通关档」→「快速完成档」 |
| meta_progression_forge_test.gd | 9 | :162 注释「逐通关关次」→「逐关卡完成关次」、:189「通关两关」→「完成两关」、:195「两关通关逐关归因」→「两关完成逐关归因」、:198/:203「零通关」→「零关卡完成」、:220「远程镐=通关 1 次」→「远程镐=冒险成功 1 次」(adventure_cleared 整局语境)、:223「C6:通关=打通整局冒险」→「C6:冒险成功=打通整局冒险」、:233「通关≥3」→「冒险成功≥3」(adventure_cleared 语境)、:270「通关 1 关」→「完成 1 关」 |
| theme_projection_test.gd | 3 | :840「通关局数投影」→「冒险成功局数投影」、:845「各关通关次数投影」→「各关完成次数投影」、:869「通关局数显示 0」→「冒险成功局数显示 0」 |
| reward_overlay_test.gd | 1 | :3 注释「与通关三选一共用」→「与关卡完成三选一共用」 |
| cross_system_flow_test.gd | 3 | :119「满配通关」→「满配冒险成功」、:121「集成通关次数表」→「集成关卡完成次数表」、:126「通关次数全 2」→「关卡完成次数全 2」 |
| breakpoint_resume_test.gd | 1 | :99「非末关通关三选一停点」→「非末关的关卡完成三选一停点」 |
| save_boot_no_activate_test.gd | 1 | :30「通关数全零值」→「冒险成功数全零值」(adventure_cleared 语境) |
| curio_refresh_paid_test.gd | 2 | :26 注释「白盒造通关停点」→「白盒造关卡完成停点」、:28「通关停点在途」→「关卡完成停点在途」 |
| table_structure_guard_test.gd | 2 | :96「通关部分回血比例」→「关卡完成部分回血比例」、:467「〔节点/通关〕」→「〔节点/关卡完成〕」 |
**三探针 13 处**:ui_struct 4 处(wr2 三行+:446 注释改写——「关数形——『通关』无空格不误伤」→「关数形——摘要『冒险成功 X 局 · 冒险 Y 局』不含『关』字」);ui_tune 2 处(wr3);ui_click 7 处(:34「L2 通关收口」→「L2 关卡完成收口」、:371「保 L1 可通关」→「保 L1 可完成」、:402「常态通关远低于此」→「常态跑完远低于此」、:414「通关兑付共用面」→「关卡完成兑付共用面」、:478「非末关通关恰一次/L2 已通关」→「非末关的关卡完成恰一次/L2 已关卡完成」、:494 print「(L2 通关)」→「(L2 关卡完成)」、:642「保可通关」→「保可完成」)。
**验证集清单 38 处**:`python tools/extract_checks.py --extract --force` 重生成(断言标签换代自动同步)→ `--diff` 对账零差异(quotaface 先例流程)。
**新增断言七组**(真实入口=被测装配器/视图的公开装配函数或 open 面;全部带尾缀〔通关换代 Vn〕,进验证集清单):
| # | 断言 | 落点 | 内容(撤销证明=回退对应产品行 hunk→断言红→复原复绿) |
|---|---|---|---|
| V1 | curio_pick_header 回血两分支文案 | battle_narrator_test(随 battle_end 断言组) | 直调 `BattleNarrator.curio_pick_header({"level_index":1,"heal_gained":5,"hp_before":10,"hp_after":15})` 断言输出含「关卡完成回血 +5(生命 10 → 15)」;`heal_gained:0` 载荷断言含「生命已满——关卡完成回血 0(合法态)」〔通关换代 V1〕 |
| V2 | node_curio_header 渠道句 | 同上 | 直调 `node_curio_header()` 断言含「与关卡完成专长三选一同库分流」〔通关换代 V2〕 |
| V3 | adventure_summary_text 完成关数行 | 同上 | 直调 `adventure_summary_text({"cleared":false,"result":"failed","levels_cleared":1,"stopped_at":2,"keystone_total":4,"master_seed":42})` 断言含「完成 1 关 · 止步第 2 层」〔通关换代 V3〕 |
| V4 | 生涯页标签换代+零残留 | theme_projection_test(career 组尾) | open_career(既有 data) 后收集树内全部 label 文本,断言含「冒险成功局数」「各关完成次数」且全集不含「通关」〔通关换代 V4〕 |
| V5 | TREASURE_REQ_LABELS 冒险成功标签 | theme_projection_test(V4 后) | 断言 `UiKit.TREASURE_REQ_LABELS["adventure_cleared"] == "冒险成功"`〔通关换代 V5〕 |
| V6 | 营地最近冒险行完成关数 | theme_projection_test(camp 组) | 实例化 camp_overlay_view → `open_camp(最小 data)`(recent=[{result:"completed",levels_cleared:2,keystone_total:5,master_seed:42}],其余键缺省)→ 断言 `_recent_list.text` 含「完成 2 关」;**T0 先验证各 _rebuild 对缺省键健壮,若不健壮改按 camp_shop_presenter 投影完整构造**〔通关换代 V6〕 |
| V7 | 模拟报告关卡完成剩余 HP 行 | ui_tune_probe(wr3 检查旁) | 报告输出断言 `out.contains("关卡完成剩余 HP")`——高加成参数下确定性有胜局(T0 验证;若该参数下胜局为零则呈报改设计)〔通关换代 V7〕 |
### q3 · C 面注释清扫(非行为改动——同位替换,零行数变化)
**换法映射**(语境规则——B 面标签同用):
| 旧措辞 | 新措辞 | 语境 |
|---|---|---|
| 通关(单关语境:关/层/level/停点/兑付/回血/渠道/三选一/路径) | 关卡完成 | 主体=单关 |
| 通关(整局语境:局/冒险/cleared/满配打通三关) | 冒险成功 | 主体=整局 |
| 「通关 %d 关」 | 「完成 %d 关」 | 用户 A 表 a5 定稿形态 |
| 通关率 | 关卡完成率 | 文档面先例(难度曲线与Boss「关卡完成率带」);hud_presenter a11 同 |
| 通关几关 | 完成几关 | a5 同款 |
| 非末关通关/末关通关 | 非末关的关卡完成/末关的关卡完成 | 防「末关卡」连读歧义(grilling 一轮应修 4) |
| 通关(帧预算/流程跑完语境——非游戏术语) | 跑完 | ui_click_probe:402「常态通关远低于此」一例;白名单 1 同源 |
| 冒险终结 | 冒险落幕 | 退役词对照(game/ 面实查零命中,防御性登记) |
**逐文件清单**(除豁免单所列 13 行外全换):
- core 六件 29 处:adventure_runner.gd:10/:12/:269/:342/:393/:486/:501/:565/:654/:671/:782/:794/:808/:813(14)、save_manager.gd:10/:157/:288/:420/:434/:435/:561/:569/:572(9)、level_runner.gd:564/:745/:775(3)、meta_progression.gd:274、config_db.gd:257、config_db_cross_validator.gd:43——单关语境一律「关卡完成」、局语境「冒险成功」(如 save_manager:10「通关局数」→「冒险成功局数」、:434「通关局数(口径=三关全通」→「冒险成功局数(口径=三关全通」、:561「逐关通关次数合计」→「逐关完成次数合计」、level_runner:564「Boss 胜利 = 关卡通关」→「Boss 胜利 = 关卡完成」、:745「通关/倒下/放弃」→「冒险成功/倒下/放弃」(冒险落幕三态)、config_db:257「通关累加域」→「关卡完成累加域」)
- 七张表头注 17 处减豁免:hero.tres:21/:36 豁免;enemy.tres:751/:891 豁免、:768「0 加成通关 ≤40%」→「0 加成关卡完成 ≤40%」、:871「≈5 次 L1 通关锻造后」→「≈5 次 L1 关卡完成锻造后」;action_economy.tres:15/:16/:26/:27 豁免(4);status_effects.tres:91 豁免;treasure_items.tres:11「生涯通关局数(C6 裁:通关=打通整局冒险)」→「生涯冒险成功局数(C6 裁:打通整局冒险)」;adventure.tres:51「末关通关不发」→「末关的关卡完成不发」;meta.tres:48/:56/:62 豁免、:55「≈5 次 L1 通关开门」→「≈5 次 L1 关卡完成开门」
- schema 两件 4 处:treasure_item_table.gd:12「通关口径=C6(通关=打通整局冒险)」→「解锁口径=C6(冒险成功=打通整局冒险)」、:13「生涯通关局数」→「生涯冒险成功局数」;adventure_table.gd:4「重扫通关率带」→「重扫关卡完成率带」、:39「通关部分回血(固定型,非末关通关兑付)」→「关卡完成部分回血(固定型,非末关兑付)」
- sim 四件 12 处减豁免:auto_player.gd:36「通关率带」→「关卡完成率带」;level_autoplay.gd:2「通关结束」→「关卡完成」、:4「自动通关策略」→「自动完成策略」、:8「通关率/难度类…通关率脱节」→「关卡完成率/难度类…关卡完成率脱节」、:13「通关兑付停点」→「关卡完成兑付停点」、:306「通关停点」→「关卡完成停点」、:560 豁免;verifier_batch.gd:5/:111「逐关条件通关率」→「逐关条件关卡完成率」、:9「累计几次通关冒险后」→「累计几次冒险成功后」、:14「通关率差」→「关卡完成率差」;adventure_monte_carlo.gd:9「通关率/败因分布」→「关卡完成率/败因分布」
- game/README.md 7 处::5/:6「通关期望」→「冒险成功期望」(整局元进度语境)、:7「通关攻击期望」→「冒险成功攻击期望」、:15「非末关通关发大奖励」→「非末关卡完成发大奖励」、:16「输出通关率」→「输出关卡完成率」、:18「满配通关」→「满配冒险成功」、:38「通关率/止步分布」→「关卡完成率/止步分布」
- 呈现层注释 15 处(清单列全 16 个位置供实施对照——battle_narrator:159 计数归 A 面口径〔q1 注〕,q3 面实计 15):battle_narrator.gd:154(「与通关三选一共享同库」→「与关卡完成三选一共享同库」)+:159(「通关几关」→「完成几关」,计数归 q1)、career_overlay.gd:11/:12/:36(「通关局数」→「冒险成功局数」「各关通关次数」→「各关完成次数」)、save_select_overlay.gd:2/:18(「通关局数」→「冒险成功局数」「通关/冒险两值」→「冒险成功/冒险两值」)、ui_kit.gd:211(「模拟报告通关率同档」→「模拟报告关卡完成率同档」)、curio_interact_controller.gd:28/:85/:114/:180/:231(「通关停点/通关三选一/非末关通关」→「关卡完成停点/关卡完成三选一/非末关的关卡完成」)、curio_pick_overlay.gd:2、tune_sim_controller.gd:38(「通关全量 JSONL」→「关卡完成全量 JSONL」)、main_adventure_flow.gd:54
### q4 · S11 留档豁免单扩充(static_scan.sh,7→20 处)
带日期历史读数注释 13 行按豁免惯例保留原文,逐行登记进 `game/tests/static_scan.sh` 两段 awk 的豁免单(.tres 段 12 行+.gd 段 1 行):
| 文件:行 | 豁免理由(留档口径随 commit) |
|---|---|
| hero.tres:21 | 压缩前基线读数(N=30 normal 基线档通关率 3%)——历史读数 |
| hero.tres:36 | L1 条件通关 2%、0/100 出第一关——历史实测 |
| enemy.tres:751 | 基线满血全通关(模拟 80%/真人 100%)——历史试玩读数 |
| enemy.tres:891 | L1 条件通关 1-2%、0/100 出第一关——历史实测 |
| action_economy.tres:15 | AP 压速批(2026-09-16 用户拍板)无伤通关根因诊断实录——带日期历史批记录 |
| action_economy.tres:16 | 同段延续(零承伤通关实录) |
| action_economy.tres:26 | 上批 8→6 所杀退化形态叙述——历史批记录 |
| action_economy.tres:27 | 同段延续 |
| status_effects.tres:91 | 真人局 12/12 轮零承伤满血通关——历史读数 |
| meta.tres:48 | 旧「总通关次数达阈值」六行历史记载(旧文名引述) |
| meta.tres:56 | 实测 L1 通关局收入 ≈29-35 GP——历史实测读数 |
| meta.tres:62 | 通关率差实测每级带平移(bootstrap SE)——历史实测读数 |
| level_autoplay.gd:560 | 完美档 41% 通关全败实证——历史实证读数 |
(行号=实施后实测;C 面同位替换零行数变化,预期与基线一致——不符即 L2 记录按实测定。)
### q5 · 体验验证清单目检项引语(根件,随批同步——用户 B 表指令)
- :193 生涯页目检项:「通关局数〔括注「三关全通」〕 / 各关通关次数」→「冒险成功局数〔括注「三关全通」〕 / 各关完成次数」、句尾「三关全通才计通关」→「三关全通才计冒险成功」
- :198「『通关局数』口径如与体感冲突」→「『冒险成功局数』口径如与体感冲突」
- :107「真人通关率+k 系数」→「真人关卡完成率+k 系数」
- :258 历史读数记载行(四代锚、T19 读数等带批名日期引述)——豁免保留原文
**完成定义**:
1. q1–q5 全落地;三条 grep 判据过(§8 wr 判据)+验证集清单对账零差异;
2. 计数器键名(`adventure_cleared`/`level_clear_counts`)与测量数据键、sim-data 锚文件名零触碰(wr1 读数对拍);断言条件表达式除 wr1/wr2/wr3 三处随动外零触碰;
3. 撤销证明=A 面 13 条逐条(回退产品行 hunk→对应断言红→复原复绿)记录成表;三份产出物写齐(T5)。
## 2. 设计事实源
| # | 出处 | 取用条款 |
|---|---|---|
| D1 | [术语表](../design/gdd/术语表.md) v1.23:「关卡完成」「冒险成功」「冒险落幕」三行+「退役词对照」通关/冒险终结两行 | 全部换法的第一依据 |
| D2 | 用户 2026-10-26 开工指令(本卡来源 prompt):A 表 12 条措辞逐字核定+:159 注释同步项+B/C 面清单+红线 | q1 逐字措辞、q5 随批范围、零触碰红线 |
| D3 | termsweep2-20261026 批(合并提交 6af36382):文档面 25 文件 145 行已完成 | 「通关率」→「关卡完成率」文档面先例(难度曲线与Boss「关卡完成率带」) |
| D4 | [test-conventions](../design/engineering/test-conventions.md) §8.3(验证集清单同步义务)+ quotaface-20261026 先例(S11 豁免单 4→7 处流程、清单重生成对账、卡片与条目随批删除) | q2 清单重生成、q4 豁免单、批内删卡删条目 |
## 3. 现状事实(2026-10-26 写卡会话实查于 master 1ca76f16;开工日 T0 复核行号)
| # | 事实 | 出处 |
|---|---|---|
| B1 | game/ 全域「通关」208 处/47 文件(A 面 13+B 面 111=13 测试 60+探针 13+验证集清单 38+C 面 84);「冒险终结」零命中 | grep 实查(任务基线 208 处一致;文件数 46→47 为本会话按现行扩展名集实测) |
| B2 | 必红断言三处=battle_narrator_test:41(条件 `level == "关卡通关!"`)/ui_struct_probe:436(条件 `sum1.text != "通关 2 局 · 冒险 7 局"`)/ui_tune_probe:75(条件 `out.contains("通关率")`);其余 57 处为标签/注释(条件位是数值判定,改产品字串不红) | 三文件 grep+条件位扫描实查 |
| B3 | A 面其余 10 条产品字串零逐字断言(theme_projection 断的是值文本「1 局(三关全通)」非行标签;TREASURE_REQ_LABELS/curio_pick_header 回血行/node_curio_header 渠道句/adventure_summary_text 关数行/camp 最近冒险行/ui_tune「通关剩余 HP」行均无断言) | theme_projection_test:840-871、grep TREASURE_REQ_LABELS/最近冒险/通关回血 实查 |
| B4 | S11 词表动态解析自术语表「退役词对照」——termsweep2 批入表后「通关」「冒险终结」已自动进入扫描;豁免三层=①闸门自指 ②显式留档豁免单 7 处 ③非注释面(字符串字面量)不取;A 面产品字串属③、注释面与 game/ 内 .md 整行属扫描面 | `game/tests/static_scan.sh:122-230` |
| B5 | 验证集清单由 extract_checks.py 机器提取冻结(标签+cond+计数三要素对账;--extract --force 重生成、--diff 对账);探针不进清单 | `tools/extract_checks.py` 头注;quotaface 先例 |
| B6 | hud_presenter:191/:194 属 tune_sim_report(调试浮层批量模拟报告——DS_DEBUG 门控玩家可见面);camp 最近冒险行装配=`camp_overlay_view._rebuild_recent`(open_camp 全量重建路径,data 键缺省走 .get 兜底);career 行标签与值 label 分体(值断言不断行标签) | hud_presenter.gd:186-195、camp_overlay_view.gd:376-382/:534-547、theme_projection_test:835-855 |
| B7 | ui_struct_probe:446 禁项检查「 关」现存形态注释引「通关」作不误伤说明——产品字串换代后摘要零「关」字,注释须改写不再引旧词(否则撞 S11) | ui_struct_probe.gd:446-451 |
## 4. 设计契约(红线,违反 = L3 停机呈报)
🔴 **契约 1 · A 表措辞逐字照行**:q1 的 13 条新文案逐字按 §1 表落(用户已核);实施中发现 A 表之外的玩家可见「通关」字串(含新发现文件)=停卡呈报,禁自行拟措辞。
🔴 **契约 2 · 零触碰面**:计数器键名 `adventure_cleared`/`level_clear_counts`、存档域键、sim-data 锚文件名与 JSONL 数据键、RNG 流名、全部数值行——逐字不动;断言条件表达式除 wr1/wr2/wr3 外零触碰(B 面只改标签文本与注释)。
🔴 **契约 3 · 清单跟上**:断言标签改动后 `tools/extract_checks.py --diff` 对账零差异;禁为免对账保留旧标签。
🔴 **契约 4 · 残留清零双闸兜底**:`grep -rn "通关" game/` 非豁免残留清零(豁免=q4 清单 13 行+S11 既有 7 行+字符串字面量位非注释面);S11 全绿。清单外新发现的注释残留按映射表同批清(非行为改动,L1 自主),**新发现的玩家可见字串仍走契约 1 停卡**。
🔴 **契约 5 · 撤销证明全量**:A 面 13 条逐条「回退产品行 hunk→最窄断言红→复原复绿」;禁以「代码能跑通」代替。
🔴 **契约 6 · 禁为机检文本保留无效成员**(req-card 第 13 条):禁为避免 S11/清单红而保留旧词文本或新增别名/无效成员;机检键与卡片契约互斥时停卡呈报。
## 5. 范围边界
**做**:q1–q5;三条 grep 判据;清单重生成对账;撤销证明 13 条;S11 豁免单扩充;产出物三份;卡片与待办条目随批删除(quotaface 先例,用户开工令内含「实施」)。
**不做**:
- 计数器/存档域/数据键/数值任何调整(零数值改动=零 MC,11 号对拍不补跑——quotaface 同款红线);
- design/ 面与根规则文件除体验验证清单目检项引语外的任何修订(roadmap 不动——提前实施批无迭代行;待办清单仅删本条目);
- 体验验证清单 :258 历史读数记载行(豁免保留);
- 任何未被 A/B/C 表覆盖的新措辞裁量。
## 6. 关联文档同步面
| 文档 | 关联点 | 同步义务 |
|---|---|---|
| `体验验证清单.md`(根件) | :193/:198 生涯页目检项引语随 a6/a7 换代、:107 关卡完成率口径 | **随批同步**(用户 B 表指令;q5——批内落地,全量档闸覆盖) |
| `待办清单.md`(根件) | 本条目随批删除(活干完登记即毁——quotaface 先例) | **随批同步**(批内删除) |
| [术语表](../design/gdd/术语表.md) v1.23 | 退役词对照已收两行,无需改动 | 反哺点 · 预期零改动注记(T0 核对) |
| [架构文档](../design/engineering/architecture/architecture.md)「测试与质量域」 | S11 豁免单 7→20 处的现状登记(若该节登记了豁免计数) | 反哺点 · 列清单(T0 查该节是否载计数,载则列换代行) |
| `game/tests/README.md`(测试工具手册) | 若载 S11 豁免计数/清单说明 | 反哺点 · 列清单(T0 查,载则列) |
## 7. 任务卡
### 卡前 · 文件结构图
| 文件 | 职责 | 行为改动 |
|---|---|---|
| `game/presentation/battle_narrator.gd` | a1–a5 产品字串+:154/:159 注释(复用既有·修改) | 行为改动 → 对照表 a1–a5 |
| `game/presentation/views/career_overlay.gd` | a6/a7 标签+:11/:12/:36 注释 | 行为改动 → a6/a7 |
| `game/presentation/views/save_select_overlay.gd` | a8 摘要+:2/:18 注释 | 行为改动 → a8 |
| `game/presentation/views/ui_kit.gd` | a9 标签值+:211 注释 | 行为改动 → a9 |
| `game/presentation/views/camp_overlay_view.gd` | a10 最近冒险行 | 行为改动 → a10 |
| `game/presentation/hud_presenter.gd` | a11/a12 调试报告文案 | 行为改动 → a11/a12 |
| `game/tests/unit/presentation/battle_narrator_test.gd` | wr1 随动+V1/V2/V3 新增 | 断言随动+新增 |
| `game/tests/unit/presentation/theme_projection_test.gd` | 3 处标签随动+V4/V5/V6 新增 | 断言随动+新增 |
| 其余 11 测试文件 | 60 处减 battle_narrator_test 2 处=58 处标签/注释随动 | 非行为改动(标签文本) |
| `game/probe/ui_struct_probe.gd` | wr2+:446 注释改写 | 断言随动 |
| `game/probe/ui_tune_probe.gd` | wr3+V7 | 断言随动+新增 |
| `game/probe/ui_click_probe.gd` | 7 处注释/print | 非行为改动 |
| `game/tests/验证集清单.md` | 重生成 38 处 | 非行为改动(机器生成同步) |
| core 六件+七张表+schema 两件+sim 四件+`game/README.md`+呈现层注释件 | q3 注释同位替换 | 非行为改动(注释面) |
| `game/tests/static_scan.sh` | q4 豁免单 7→20 处 | 非行为改动(闸件豁免清单;判据口径零变化) |
| `体验验证清单.md` | q5 目检项引语 4 行 | 非行为改动(文档引语) |
(零新增文件、零新增函数、零新增数据件。)
### T0 · 开工核对(0.1d)
- [ ] 建 worktree `git worktree add ../g-plan2-termsweep-game -b termsweep-game-20261026`+拷 `.godot/` 导入缓存与字体 .import 边车(坑册三件套)
- [ ] 复核 B 面行号(迭代 38 若有先合回的批改了行号则以实查为准——行面零交叠预期成立)
- [ ] V6 前置验证:camp_overlay_view.open_camp 最小 data 健壮性直跑(30 秒级孤立验证——新断言先 standalone 走通再并入套件)
- [ ] V7 前置验证:ui_tune_probe 现行参数下模拟必有胜局(读一次探针输出确认「通关剩余 HP」行恒在)
- [ ] 术语表 v1.23 三行在位核对(§6 零改动注记);架构文档/README 是否载 S11 豁免计数核对
### T1 · A 面产品字串+必红断言(0.25d)
- [ ] a1–a12 十二处字串逐字落(q1 表);wr1/wr2/wr3 断言条件+标签+注释同轮换
- [ ] V1–V3 battle_narrator_test 三组新断言落(孤立验证:单套件直跑绿)
- [ ] 撤销证明 a1–a5(回退 battle_narrator hunk→battle_narrator_test 红→复原复绿)
**接口块**:取用=无前置卡;产出=产品字串新文案(对照表 a1–a12 文本,V 组断言引用)。
### T2 · B 面其余断言随动+新增断言+清单(0.25d)
- [ ] 11 测试文件 58 处标签/注释随动(q2 逐处换法表)+theme_projection 3 处+V4/V5/V6 落位
- [ ] 三探针随动+V7(ui_click 7 处、ui_struct wr2+:446 注释改写、ui_tune wr3+V7)
- [ ] `python tools/extract_checks.py --extract --force` 重生成 → `--diff` 对账零差异
- [ ] 撤销证明 a6–a10、a12(theme_projection/ui_struct/ui_tune 各自最窄套件红→复绿)
**接口块**:取用=T1 产品字串(a1–a12 文本);产出=验证集清单新基线(T4 件核对账)。
### T3 · C 面注释清扫+S11 豁免单(0.25d)
- [ ] core 29+表头注 5(17−12 豁免)+schema 4+sim 11(12−1)+README 7+呈现层 15——按映射表同位替换
- [ ] static_scan.sh 豁免单 13 行登记(.tres 段 12+.gd 段 1,行号按实施后实测)+头部豁免说明句更新
- [ ] 撤销证明 a11 复核(wr3 已在 T1;此处 S11 直跑绿作护栏确认)
### T4 · 件核+体验验证清单+冻结(0.1d)
- [ ] q5 体验验证清单 4 行改(:107/:193/:198;:258 不动)
- [ ] 三条 grep 判据(§8)逐条零输出
- [ ] 冻结:代码与断言改完即冻结,全仓件核 grep 查残留
- [ ] 并 master(若 master 被推进——先并后闸铁律)
### T5 · 产出物落位卡(0.15d)
- [ ] 轻闸全绿后、合并前 `reports/` 三份写齐:`iter-supplement-通关换代-实现报告-2026-10-26.md`(各卡状态+撤销证明记录表 13 条+实机目检总清单+遗留读数义务)、代拍板追认单(§10 白名单逐条)、反哺点清单(§6 所列每条落点)
- [ ] 卡片与待办条目删除(quotaface 先例;唯一引用=条目自身)
- [ ] 批末全量域闸(改动含代码面+game/ 内 .md+根件+reports/ → 不带参数全量档)全绿、回执对齐分支尖 → 主区 `git merge --no-ff` → worktree 清理
## 8. 验证闸(改动—验收对照表)
| 需求点 | 改动(文件:行) | 验收测试(名称+落点+尾缀) | 层级 | 真实入口 | 撤销证明 |
|---|---|---|---|---|---|
| a1 关卡完成文案 | battle_narrator.gd:50 | 「关卡收束态恒为「关卡完成!」」battle_narrator_test:41〔随 wr1〕 | 单元 | 直调 battle_end_text | 回退 :50 → wr1 红 → 复绿 |
| a2/a3 回血两分支 | battle_narrator.gd:90/:92 | V1 curio_pick_header 断言〔通关换代 V1〕 | 单元 | 直调 curio_pick_header | 回退 :90/:92 → V1 红 → 复绿 |
| a4 渠道句 | battle_narrator.gd:156 | V2〔通关换代 V2〕 | 单元 | 直调 node_curio_header | 回退 :156 → V2 红 |
| a5 完成关数行 | battle_narrator.gd:166 | V3〔通关换代 V3〕 | 单元 | 直调 adventure_summary_text | 回退 :166 → V3 红 |
| a6/a7 生涯标签 | career_overlay.gd:42/:43 | V4 生涯页标签零残留〔通关换代 V4〕 | 接口 | open_career+树内 label 收集 | 回退 :42/:43 → V4 红 |
| a8 槽摘要 | save_select_overlay.gd:87 | wr2 ui_struct_probe:436〔sl2 随动〕 | 探针 | 场景实例化+喂入数据 | 回退 :87 → wr2 红 |
| a9 解锁标签 | ui_kit.gd:403 | V5〔通关换代 V5〕 | 单元 | UiKit 常量直读 | 回退 :403 → V5 红 |
| a10 最近冒险行 | camp_overlay_view.gd:545 | V6〔通关换代 V6〕 | 接口 | open_camp+_recent_list 读数 | 回退 :545 → V6 红 |
| a11 完成率读数 | hud_presenter.gd:191 | wr3 ui_tune_probe:75〔随动〕 | 探针 | 场景实例化+批量模拟输出 | 回退 :191 → wr3 红 |
| a12 剩余 HP 行 | hud_presenter.gd:194 | V7〔通关换代 V7〕 | 探针 | 同上报告 | 回退 :194 → V7 红 |
| q2 断言随动 | 13 文件 60 处 | extract_checks --diff 对账零差异+各套件批末闸 | — | 机器对账 | 由 a1–a12 行撤销证明连带覆盖 |
| q3 注释清扫 | C 面 84 处 | grep 判据②③+S11 全绿 | — | 静态扫描 | 非行为改动(判断依据:注释/头注文本,无运行时语义) |
| q4 豁免单 | static_scan.sh 13 行 | S11 直跑绿且豁免行不误伤相邻残留(抽一行去豁免验证红) | — | 静态扫描 | 去豁免行 → S11 红 → 还原 |
| q5 目检项引语 | 体验验证清单 4 行 | --docs 域闸 doc_term_audit 绿 | — | 文档域闸 | 非行为改动(文档引语) |
**grep 判据**(三条;豁免面机械判定由 S11 承载——注释面+game/ 内 .md 整行,豁免单承载 q4 13 行):
- wr判①:S11 直跑绿(零命中)——即「game/ 注释面与 .md 非豁免残留清零」的机械形态;辅以人工抽查 `grep -rn "通关" game/` 输出逐行比对 q4 豁免单(每命中行必在豁免单或字符串字面量位)
- wr判②:`grep -rn "冒险终结" game/` → 零输出
- wr判③:对账 `python tools/extract_checks.py --diff game/tests/验证集清单.md` → 退出码 0
**测试削弱申报**:本批改动的既有断言=wr1/wr2/wr3 条件文本随产品字串换代(非削弱——判据随动);其余 57 处仅标签文本;零断言删除、零阈值放宽、零扫描面缩小。
**独立验收审计**:合回前由未参与实现的子代理按 test-conventions §8.7 审(报告落 `reports/iter-supplement-通关换代-验收审计-2026-10-26.md`):对照表逐行核、撤销证明抽三条复现、削弱扫描。
**闸口径**:批末 `tools/run_all_gates.sh` 不带参数全量档(改动含代码面+文档件两类);批内回归措辞=里程碑步(T 段)出口跑一次全套闸;波内修复只做出红最小单元的最窄确认;新增断言先行孤立验证再并入全套。
## 9. 异常分级
- L1 自救(一次重试):行号漂移(迭代 38 先合回导致)——以实查重定位;豁免行号与预期不符——按实测定。
- L2 记录继续:V6 最小 data 不健壮——改完整构造照 camp_shop_presenter 投影;V7 零胜局——呈报改设计(同轮记录)。
- L3 停机呈报:A 表外新玩家可见「通关」字串;机检键与契约互斥;S11 豁免单机制不足以表达某豁免形态;闸红且修法超出本卡范围。
## 10. 代拍板白名单
1. B/C 面标签与注释的措辞在映射表(q3)两可时的具体选词(如「路径完成」vs「完成路径」)——限标签/注释面,产品字串不适用。
2. 豁免单行号按实施后实测微调。
3. V1–V7 断言的夹具数据具体取值(保持确定性即可)。
## 11. 待裁点
零待裁点,开工门=U0(用户 2026-10-26 开工令已下达)。
## 12. 落位与可复用性预检
- **复用面**:零新增文件/函数/数据件——全部为既有文件的文本替换与既有测试文件的断言追加;V4 的树内 label 收集复用 ui_struct_probe `_collect_labels` 同型写法(theme_projection 内新写四行等价物——不跨层引探针私有件,避免测试件间耦合);V6 落 theme_projection_test 延续 career_overlay 直调先例。无「不能复用既有件」的新增申报。
- **唯一面**:产品字串唯一落点=各装配器/视图现文件(无第二处定义);「关卡完成」等新词的规范名唯一登记处=术语表(已立,本批零文档新增)。
- **分层与交互面**:V1–V3 直调 BattleNarrator 静态装配器(单元层);V4–V6 实例化视图 open 面后读 label(接口层,theme_projection 先例同型);V7/wr3 探针走批量模拟真实输出。零 Core 改动、零数值读取新增、零 RNG 触碰。
## 13. 复核记录
- v1.0 成文,grilling 一轮对抗复核(独立子代理,2026-10-26):**零阻断**;四应修全折入——①q3 呈现层计数口径注明(:159 归 A 面)+全文统一「A 表 12 条+:159 注释同步项」②估时对齐 T 段合计 ≈1.1d ③映射表补帧预算/流程语境行(「跑完」)④「非末关通关/末关通关」→「非末关的关卡完成/末关的关卡完成」防「末关卡」连读歧义(ui_click:478、breakpoint_resume:99、adventure_runner:808、adventure.tres:51、curio_interact 注释族)。
- 复核通过面(子代理实查证据):措辞与 A 表逐字一致;208 处全数对上(12 产品+111 随动+84 注释);豁免 13 行无漏判;V1–V7 落点全真(V6 open_camp 最小 data 全链 .get 兜底健壮性经子代理读码确认);语境抽查 8+ 处全对;契约完备;q5 恰 4 行覆盖。
- v1.1 定稿,零待裁点。
-13
View File
@@ -2,19 +2,6 @@
本清单是流水线的唯一登记处:要做的事先在此登记一条,随流水线段推进改状态,做完整条删除;各系统文档的「待办」节只留一行指路存根,不再自建条目。条目格式(标题=登记元数据含可选优先级,正文=实况/缺口/改动面/状态四属性)与状态机以 [doc-conventions §12.1](design/engineering/doc-conventions.md) 为权威。 本清单是流水线的唯一登记处:要做的事先在此登记一条,随流水线段推进改状态,做完整条删除;各系统文档的「待办」节只留一行指路存根,不再自建条目。条目格式(标题=登记元数据含可选优先级,正文=实况/缺口/改动面/状态四属性)与状态机以 [doc-conventions §12.1](design/engineering/doc-conventions.md) 为权威。
#### game 面玩家可见字串「通关」退役换代——A 面文案 13 条+B 面断言随动+C 面注释清扫(2026-10-26 登记,来源=批次移交)
**实况**:文档面已由 termsweep2-20261026 批完成(合并提交 6af36382,25 文件 145 行),本条承接 game/ 面。2026-10-26 用户裁「通关」全库退役+开工令(A 表 13 条玩家可见字串措辞已核,改动即停呈报):单关=关卡完成、整局=冒险成功、一局终结统称=冒险落幕;「通关率」随文档面先例(难度曲线与Boss「关卡完成率带」)换代「关卡完成率」。写卡会话实查基线:game/ 全域「通关」208 处/47 文件(A 面产品字串 13 条=battle_narrator 6+career_overlay 2+save_select_overlay 1+ui_kit 1+camp_overlay_view 1+hud_presenter 2;B 随动面=13 测试文件 60 处+ui_click/ui_struct/ui_tune 三探针 13 处+验证集清单 38 处,其中逐字断言必红三处=battle_narrator_test:41/ui_struct_probe:436/ui_tune_probe:75;C 注释面=core 六件 29+七张表头注 17+schema 两件 4+sim 四件 12+game/README 7+呈现层注释 15);带日期历史读数注释按豁免惯例保留原文(S11 留档豁免单登记)。S11 已随术语表收词自动开始扫「通关」「冒险终结」——本条实施后非豁免残留即闸红。
关联文档清单:
- design/gdd/术语表.md v1.23(「关卡完成」「冒险成功」「冒险落幕」三行+退役词对照「通关」「冒险终结」两行——通关口径统一批,2026-10-26)
- 用户 2026-10-26 开工指令(A/B/C 三面清单+红线——计数器键名 adventure_cleared/level_clear_counts 与测量数据键、sim-data 锚文件名零触碰)
- 需求卡片 reports/需求卡片-通关口径换代批-2026-10-26.md(2026-10-26 v1.1 定稿,grilling 一轮复核零阻断、四应修折入,零待裁点;估时 ≈1.1d;用户开工令裁准提前实施,先例=quotaface-20261026)
**改动面**:游戏代码
**状态**:文档设计已闭合+已写卡
#### AdventureRunner 职责真拆分——三宿主共 25 条转发属性属 S13 计数迎合装置,须按变化原因重立协作件(2026-10-25 登记,来源=批次移交,优先级=P0) #### AdventureRunner 职责真拆分——三宿主共 25 条转发属性属 S13 计数迎合装置,须按变化原因重立协作件(2026-10-25 登记,来源=批次移交,优先级=P0)
**实况**: **实况**: