写卡(封印动作改版批·卡片成立): 设计段同区前置闭合——口径=封印受理即揭示/挖封印格被拒(新拒绝情形「已封印」)/清图口径=已挖∪已封印(封印可完成清图)/批次语义序扩「能清图的挖或封」/标空无纠错路径随图存续; 破封一击退役(素材库新立表五留底, dug_under_seal 事实词随件除名); 文档十件换代: 排雷玩法 v2.0(owner)/战斗结算 v1.9(删四情况②④改判块)/地图战斗资源 v1.7/行动经济 v1.6/地形变异 v1.4/奇物 v1.7(26件)/术语表 v1.28/教学引导首遇提示句/ux battle 新立封印格呈现预览节(SVG四格, 用户人审过审——观感细化后置)/art-bible §3.2·§4.1(已揭示格承载)。用户三裁: ①受理即揭示全揭示案 ②破封一击退役 ③MC同批重锚。卡片: 16节+T0-T7(区间6-10.25, 中值≈8.125工作日)+对照表R1-R12(行锚全路径钉死, 判据出处=修订后行号)+落位预检(新增sealed_identity/notify_cleared两公开方法, 零新文件)+复核记录一轮13发现全处置(退回上游1=教学引导漏改面已修/自判5/补写5/待裁1=滑失注入用户裁③退役+重标定补偿); 测试削弱申报四处; 验收档高。能力清单: 3行换代+1行删除+2行新增+覆盖域表2行换代(计划测试5函数卡片锚定)。待办清单: 条目推进文档设计已闭合+已写卡, 新立封印格观感细化条(备选)。读数: --docs【验收通过】无新增红(流水线闸红项0+gdd_lint 19/19 PASS+能力审计红项0, 回执receipt.json)
This commit is contained in:
1 parent
bb6b17266b
commit
843edf9d70
14 files changed
+365
-68
No files matched your search
@@ -0,0 +1,249 @@
|
||||
# 需求卡片:封印动作改版批
|
||||
|
||||
> **批名**:封印动作改版批 **卡片日期**:2026-11-07 验收档:高
|
||||
> **来源**:待办清单「封印动作改版——挖开与封印都揭示格子(2026-11-07 登记,来源=会话提及)」条目;用户 2026-11-07 会话三裁(①封印受理即揭示〔全揭示案〕②专长破封一击退役 ③MC 同批重锚)+封印格呈现预览用户人审通过(观感细化后置,不阻塞基线冻结)。
|
||||
> **唯一事实源**:`design/gdd/systems/排雷循环/排雷玩法.md` v2.0(2026-11-07 用户裁「封印受理即揭示」);配套闭合凭据=战斗结算.md v1.9 · 地图战斗资源.md v1.7 · 行动经济.md v1.6 · 地形变异.md v1.4 · 奇物.md v1.7 · 术语表.md v1.28 · 教学引导.md(范围草案;封印首遇提示句 2026-11-07 换代)· 道具退役素材库.md 表五 · ux/battle.md「封印格呈现预览」节(Last Updated 2026-11-07)· art-bible §3.2 封印印记条与 §4.1 封印黑条(现行版)。
|
||||
> **估时**:8 张 T 卡合计区间 6–10.25 个工作日,中值合计 **≈8.125 个工作日**(逐卡区间见第 9 节);**切分预案=超 10 个工作日停卡呈报用户改排**——T4/T6 均不可拆(T6 拆出违反三裁③「MC 同批重锚」;T4 拆出=改动先行落库而无当轮验收断言,违反验收闭合红线),无第三种拆法。
|
||||
|
||||
## 1. 目标与完成定义
|
||||
|
||||
这批把封印动作从「不揭示的盲承诺+可挖开改判」改成「受理即揭示、不可再挖开」:封印被受理的那一刻墙瓦片换地板、格下身份(危险格「危」/安全格数字)当场可见、封印法阵叠在其上;挖已封印的格被拒(新可辨拒绝原因),「封印后再挖开」路径整体删除;清图口径换代为「全部安全格完成=挖开或封印」。四类改动随批交付:
|
||||
|
||||
1. 排雷规则核心:合法性表换代(挖封印格拒绝)、封印受理揭示查询面、清图口径、批次语义序扩「能清图的挖或封」。
|
||||
2. 结算与效果面:挖封印格兑付改判(四情况②④)与 `dug_under_seal` 事实词退役;标中/标空轮末判定批与封印溢价**零改动**。
|
||||
3. 呈现层与探针:封印格地板+法阵+身份字形(垫色牌)渲染、悬停禁字、文案四处换代、三探针断言换代。
|
||||
4. 内容与测量:破封一击退役(feats.tres 删行)、sim 自动玩家策略对齐、MC 基线锚同批重锚、golden 棋盘三图重制。
|
||||
|
||||
**完成定义**:本卡第 8 节对照表逐行有绿读数;改前改后 MC 配对读数落盘;golden 三图(windows)重制且渲染闸绿;批末「产出物落位卡」两件(实现报告+反哺点清单)写齐;合回后远端 CI 代码域全量绿。
|
||||
|
||||
## 2. 设计事实源
|
||||
|
||||
唯一事实源=`design/gdd/systems/排雷循环/排雷玩法.md` v2.0。本卡所有验收判据从下列闭合文档句子抄出(判据出处行锚在第 8 节逐行标注):
|
||||
|
||||
| 文档 | 版本 | 本批消费的判据面 |
|
||||
|---|---|---|
|
||||
| 排雷玩法.md | v2.0 | 动作合法性表(挖:未开、无封印;拒绝情形「已封印」)、封印受理即揭示段、清图口径(挖开或封印)、批次语义序「能清图的挖或封」、封印生命周期(无纠错路径)、验收标准「封印受理即揭示、挖封印格被拒」与「清图口径」两条 |
|
||||
| 战斗结算.md | v1.9 | 授予段「封印受理即揭示」段、封印判定批兑付、验收标准「封印受理即揭示零兑付」条 |
|
||||
| 地图战斗资源.md | v1.7 | 极性矩阵封印行(标中正向/标空负向+正向不兑付)、清图奖励口径句 |
|
||||
| 行动经济.md | v1.6 | 价目表封印行(纠错路径不存在) |
|
||||
| 地形变异.md | v1.4 | 伤害型变异条(封印揭示不触发变异伤害) |
|
||||
| 奇物.md | v1.7 | 跨族桥退役段(破封一击退役、事实词除名) |
|
||||
| 术语表.md | v1.28 | 「封印 / 控制」定义行 |
|
||||
| ux/battle.md | 2026-11-07 | 「封印格呈现预览」节像素级判据五条+Interaction Map 封印行/已封印格行+拒绝细分 |
|
||||
| 道具退役素材库.md | 表五 | 破封一击留底行(退役原因) |
|
||||
| art-bible | 现行 | §3.2 封印印记占位句(已揭示格承载、数字同格合法)、§4.1 封印黑条(裸土承载对比 ≥4.5:1) |
|
||||
|
||||
## 3. 现状事实(代码级,开工自行复核)
|
||||
|
||||
核心(`game/core/minesweeper_rules.gd`,除非另注):
|
||||
|
||||
- 封印受理:`_do_seal_place` :447-468——扣费后仅 `_seals[c] = true`,不揭示、零事件;重复封印拒 `seal_present` :455-456。
|
||||
- 挖封印格放行:`_board_face_dig` :362-372(:371 注释「封印不拦挖掘」);`_do_dig` :304-334——`was_sealed` :311/:313/:328、`_reveal_chain(c, order, was_sealed)` :331;`_reveal_chain` :341-359 载荷带 `"dug_under_seal"` :351/:358;:390 处 fx_reveal 载荷恒 false;`preview_reveal` :397-405 含封印隐式退役模拟;`_classify` :267-285 清图模拟含「本格封印视为已隐式退役」:271-275。
|
||||
- 清图口径:`_safe_remaining` :101-110 与 `_cleared_after` :438-442 只认 `_revealed`,不认封印。
|
||||
- 轮末判定:`_emit_seals_batch` 对在场封印逐格 `seal_judged`(标中=`_board.is_mine(c)`)——本批零改动。
|
||||
- 中立移除:`remove_mines_in` :116-126 排除已揭示/有封印/非雷格——本批零改动。
|
||||
|
||||
结算与效果:
|
||||
|
||||
- `game/core/settlement/grant_segment.gd`——`dug_under_seal` 作废行 :102-103、雷事件载荷携带 :153、注释「封印格直挖照吃变异伤害」:204;`_judge_seal` :343 / `_judge_seal_hit` :352 / `_judge_seal_miss` :422(本批零改动)。
|
||||
- `game/core/effect_engine.gd`——事实词表 `dug_under_seal` :55/:60。
|
||||
- `game/core/reward_grant.gd`——天眼 `_safe_dig_open` 跳过封印格 :174(逻辑保留、注释换代);封印溢价消费 :216-217(零改动)。
|
||||
|
||||
呈现层:
|
||||
|
||||
- `game/presentation/views/board_view.gd`——印记可见性 `u.seal_on = seal and not revealed` :541;瓦片切换 revealed?:floor:wall :597-623;`_diggable` :301-304(未开且未移除即入可挖域,含封印格);左键分派 revealed→move 否则 dig :471-485(:483-484 注释「相邻封印格直接挖」);悬停 `board_hover.gd` :96-121(相邻封印格=挖掘光标 :113-116);拒绝文案 `hud_presenter.gd` :169-191(`seal_present` :179 含「相邻时左键直接挖开」);图例 `legend_overlay.gd` :9-13;操作提示条 `board_zone_view.gd` :80(含 chord 退役后残留错句「同格双击 快开」)。
|
||||
|
||||
测试、探针、sim、数据(第 7 节文件结构图逐件列):
|
||||
|
||||
- 单元:`minesweeper_rules_test.gd`(`_test_dig_face_rules` :72-84 断言 `target_revealed`;`_test_seal_place` :101-111;preview 形态 B :122-161;判据锚 :73/:88/:102/:115);`seal_polarity_test.gd`(末点 AP 封印收轮 :46-82;封印不可逆四情况组 :579-651;资源资格面 :778-826);`settlement_wiring_snapshot_test.gd` 内嵌 golden(`"seals": 1`/`"revealed": 42` 等计数);`hud_presenter_test.gd` :29-30 与 `player_copy_sweep_test.gd` :69-82/:125-140(文案逐字);`adventure_feats_test.gd` :721-723(破封一击 `dug_under_seal`);`effect_words_t1_test.gd` :16-27/:37-71(词表在册断言)。
|
||||
- 探针:`ui_input_probe.gd`(case④ 右键封印 :273-281、case④b 印记落位断言 :282-286、目标选取排除封印格 :230-242/:522-540/:601-608);`board_shot_probe.gd`(封印取证选择器 `has_seal and not is_revealed` :78/:191);`ui_click_probe.gd`(行为②撤封印 :1063-1069 恒假死路;随机封印行为① :1055-1062;图例行断言 :899-908)。
|
||||
- sim:`auto_player.gd`(choose_dig 跳封印格 :20;已证雷先封后挖 :38-50/:86-97;`_constraints` 封印位计入已知雷约束 :162-185);`level_autoplay.gd`(「标雷误挖」滑失注入 :507-521——封印意图按概率转成同格挖意图)。
|
||||
- 数据:`game/data/tables/feats.tres` :624 起「破封一击」行;`game/data/tables/adventure.tres` feat_ticket_* 概率行(:46-49,本批不动);golden 基线 `game/tests/golden/`(board_L1/L2/L3 × windows/mac 六件+palette_baseline)。
|
||||
- 存档:`breakpoint_store.gd` 28 键(BREAKPOINT_FIELDS :16-45)无格子状态键、停点粒度=节点级——**本批存档零改动**(同种子重放重建棋盘态)。
|
||||
|
||||
## 4. 设计契约(违反即返工;🔴 触碰=L3 停机呈报)
|
||||
|
||||
- 🔴 **语义唯一裁决=排雷玩法.md v2.0**:封印受理即揭示、挖封印格被拒、清图口径(挖开∪封印)、标中/标空轮末判定、印记无撤下手段。实现不得自造第三条路;实现与文档冲突=上游缺陷,停卡退回。
|
||||
- 🔴 **事件集合封闭**:封印保持零事件——不新增事件、不发 `cell_revealed`;身份可见性走新增只读查询面,消费方=**呈现层+sim 策略域(测量侧镜像玩家可读信息)**,禁扩到战斗结算等兑付面。增删事件=接口修订,本批不做。
|
||||
- 🔴 **数值单一事实源**:`action_economy.tres`(ap_per_round/dig_ap_cost/seal_place_ap_cost)、`settlement.tres`(seal_hit_premium/p_perfect/甲效/掷点)零改动;本批数据表改动仅限 `feats.tres` 删破封一击行与池引用清零核对。
|
||||
- 🔴 **Core 零 UI 依赖、fail-fast、RNG 单点**:本批零新随机源;数据校验错误一律致命中止。
|
||||
- 🔴 **兑付面零漂移**:标中正向(含溢价 ×(1+δ))、标空负向、完美封印双份、清图批、挖格批的既有结算行为,除删除 `dug_under_seal` 改判路径外逐位不变——MC 改前改后配对读数兜底。
|
||||
- **拆分边界纪律**:本批零拆出单元(纯规则换代+删径),禁顺手重构;删径代码(`was_sealed` 一族、`dug_under_seal` 词与载荷键)必须删净,**禁为迎合机检消息文本保留无效成员/别名**(code-conventions §1.1 同款);机检键与卡片契约互斥时一律停卡呈报。
|
||||
|
||||
## 5. 范围边界
|
||||
|
||||
**做**:第 1 节四类改动面;`smoke/critical-paths.md` 人工 QA 清单第 4 条改写(原文「封印/撤封印/挪封印」随 seal_pull 退役早已过时——顺带修);`board_zone_view.gd` 提示条 chord 残留错句「同格双击 快开」顺带修(同文件触碰面)。
|
||||
|
||||
**不做**(明示不收件,去向):封印格观感细化(用户 2026-11-07 裁后置——**已登记待办清单**「封印格观感细化(2026-11-07 登记)」条,实现批不做);「结算明细文案入表」批(待办清单在册,文案承载面换代不混批);键盘/手柄输入(Beta);存档 schema(零改动);MC 读数的数值调参(重锚只换代锚,不做数值裁决——数值标定窗口另批)。
|
||||
|
||||
## 6. 关联文档同步面
|
||||
|
||||
| 文档 | 关联点(本批实现改变它的哪条陈述) | 同步义务 |
|
||||
|---|---|---|
|
||||
| 排雷玩法.md v2.0/战斗结算.md v1.9/地图战斗资源.md v1.7/行动经济.md v1.6/地形变异.md v1.4/奇物.md v1.7/术语表.md v1.28/ux/battle.md/art-bible §3.2·§4.1/道具退役素材库.md 表五 | 本批实现的就是这些句子;设计面已随本卡同区前置修订 | 设计权威文档——实现批**禁改**;实现与文冲突=停卡退回,差异走反哺点 |
|
||||
| 教学引导.md(范围草案) | 「封印是一次性承诺的首遇提示」条 | **已随本批修订**(2026-11-07 提示句换代为新口径);实现批禁改 |
|
||||
| game/tests/README.md(能力清单) | 第 8 节能力行清单:3 行换代、1 行删除、2 行新增、覆盖域表 1 行换代 | **已由写卡批同区维护**(随本卡合入);实现批禁写该文件;批末只核对表上名字与实际落地一致(改名回表) |
|
||||
| smoke/critical-paths.md | 第 4 条人工 QA 清单句 | 随 T4 改写(game/tests/ 面文件,随批可改) |
|
||||
| 反哺点预期 | 设计面已前置闭合 | 预期**零反哺点**;实现期发现文档缺陷才列 `reports/iter<N>-反哺点-<日期>.md` |
|
||||
|
||||
## 7. 文件结构图(本批新建/修改的文件逐件列;行为改动行标注对照表行号)
|
||||
|
||||
| 文件 | 职责与改动 | 行为改动 | 复用/新增 |
|
||||
|---|---|---|---|
|
||||
| game/core/minesweeper_rules.gd | 合法性换代(挖封印格拒 `target_sealed`)、删 `was_sealed` 一族与 `dug_under_seal` 载荷键、`_do_seal_place` 受理后清图判定接行动经济、`_safe_remaining`/`_cleared_after` 口径换代、`_classify` 语义序扩封印清图预判、`preview_reveal` 删封印形态、新增公开只读查询 `sealed_identity(c)` | R1 R2 R3 R4 R6 R7 | 全修改(新增 1 公开方法——落位预检见第 12 节) |
|
||||
| game/core/action_economy.gd | 新增公开方法 `notify_cleared()`(封印路径清图事实上报——轮末仲裁与 `request_dig` 的 cleared 语义同源) | R3 | 修改(新增 1 公开方法) |
|
||||
| game/core/settlement/grant_segment.gd | 删 :102-104 作废行、:153 载荷键、:204 注释句 | R6 | 修改 |
|
||||
| game/core/effect_engine.gd | 事实词表删 `dug_under_seal`(:55/:60)+提取面清零 | R7 | 修改 |
|
||||
| game/core/reward_grant.gd | :174 跳封印格注释换代(逻辑保留) | 非行为改动(注释) | 修改 |
|
||||
| game/presentation/views/board_view.gd | `seal_on = seal`、封印格地板瓦片+身份字形(垫色牌)、`_diggable` 排除封印格、左键封印格零动作 | R8 R9 | 修改 |
|
||||
| game/presentation/views/board_hover.gd | 封印格悬停=禁止光标+说明 | R9 | 修改 |
|
||||
| game/presentation/hud_presenter.gd | `seal_present` 文案换代+新增 `target_sealed` 文案 | R10 | 修改 |
|
||||
| game/presentation/views/legend_overlay.gd | 图例封印行重写(受理即揭示口径) | R10 | 修改 |
|
||||
| game/presentation/views/board_zone_view.gd | 提示条换代+chord 残留错句顺带修 | R10 | 修改 |
|
||||
| game/data/tables/feats.tres | 删「破封一击」行(:624 起)+全仓引用清零 | R7 | 修改 |
|
||||
| game/tests/unit/core/minesweeper_rules_test.gd | 挖已揭示拒绝保留;新增挖封印格被拒/受理揭示/清图口径断言;preview 形态 B 删;判据锚刷新 | R1 R2 R3 | 修改 |
|
||||
| game/tests/unit/battle_settlement/seal_polarity_test.gd | 四情况组重写(挖封印格两情况→被拒负面断言);末点 AP 收轮/seal_pull 出目录/标中标空判定/资源资格面保留 | R2 R5 R6 | 修改 |
|
||||
| game/tests/unit/battle_settlement/settlement_wiring_snapshot_test.gd | 内嵌 golden 重录(seals/revealed 计数漂移) | R6 | 修改 |
|
||||
| game/tests/unit/presentation/hud_presenter_test.gd、player_copy_sweep_test.gd | 文案断言换代 | R10 | 修改 |
|
||||
| game/tests/unit/battle_settlement/adventure_feats_test.gd、effect_words_t1_test.gd | 破封一击断言退役、词表断言换代 | R7 | 修改 |
|
||||
| game/tests/unit/presentation/seal_mark_params_test.gd | 迷雾门控断言前提换代(印记承载面) | R8 | 修改 |
|
||||
| game/probe/ui_input_probe.gd、board_shot_probe.gd、ui_click_probe.gd | case④b 印记落位断言换代、取证选择器换代、撤封印死路段清理 | R8 R9 | 修改 |
|
||||
| game/tests/smoke/critical-paths.md | 第 4 条改写 | 非行为改动(清单句) | 修改 |
|
||||
| game/sim/auto_player.gd、level_autoplay.gd | 约束集对齐、滑失注入退役 | R11 | 修改 |
|
||||
| game/tests/golden/(board_L1/L2/L3 ×2 平台) | 渲染基线重制 | R12 | 基线资产换代 |
|
||||
| sim-data/(MC 锚) | 改前锚留盘、新锚同 seed0 采集+现行锚指针换代 | R11 | 数据产物换代 |
|
||||
| sim-data/README.md | 「现行锚」指针节换代+旧锚迁历史锚节 | R11 | 修改(入库件,不在实现批禁写清单) |
|
||||
|
||||
**对照表按行号引用第 8 节;表内 R 编号与第 8 节逐行对应。**
|
||||
|
||||
## 8. 验证闸(改动—验收对照表)
|
||||
|
||||
每行七格:需求点|改动|验收测试(名称+落点+尾缀〔封印改 Vn〕)|层级|真实入口|判据绑定面|能力行。判据出处行锚=需求点格内 `文档:行号`,已按本批修订后的 worktree 行号钉死(可 grep 核对)。
|
||||
|
||||
| # | 需求点(判据出处行锚) | 改动 | 验收测试 | 层级 | 真实入口 | 判据绑定面 | 能力行 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| R1 | 封印受理即揭示——身份当场可查、受理零兑付零事件(design/gdd/systems/排雷循环/排雷玩法.md:52) | `_do_seal_place`+`sealed_identity(c)` 新查询面 | `minesweeper_rules_test.gd:_test_seal_reveal_identity`〔封印改 V1〕:封印受理后 `sealed_identity(c)` 返回 `{kind, digit}` 与板事实逐位一致;`settle_batch` 事件流零 `cell_revealed`(受理零兑付的结算侧证据由 R6 行覆盖) | 单元 | `MinesweeperRules.settle_batch()` | `sealed_identity` 返回值+事件流计数+结算行数 | 新增:封印受理即揭示(身份可查、受理零事件) |
|
||||
| R2 | 挖已封印格被拒、原因可辨、零副作用(design/gdd/systems/排雷循环/排雷玩法.md:56) | `_board_face_dig` 增封印拒绝 | `minesweeper_rules_test.gd:_test_dig_sealed_rejected`〔封印改 V2〕:`sub_reason=="target_sealed"`、`has_seal`/`is_revealed`/AP 三态零变化;`seal_polarity_test.gd` 四情况组内原「直挖受理」断言改判为拒绝 | 单元 | `MinesweeperRules.settle_batch()` | 拒绝原因串+状态源取值 | 既有:挖/封印合法性与可辨拒绝(拒绝零副作用、挖封印格被拒) |
|
||||
| R3 | 清图口径=已挖∪已封印;封印可完成清图;封印后清图判定触发(design/gdd/systems/排雷循环/排雷玩法.md:139) | `_safe_remaining`/`_cleared_after` 换代+`_do_seal_place` 清图接 `ActionEconomy.notify_cleared()` | `minesweeper_rules_test.gd:_test_clear_by_seal`〔封印改 V3〕:封掉最后安全格→`clear_map_cleared()` 翻 true 且轮次以清图收束(轮末事件 carry 清图);封掉非末安全格→`clear_map_cleared()` 仍 false、再挖开其余安全格后清图照常触发 | 单元 | `MinesweeperRules.settle_batch()` | 公开读数 `clear_map_cleared()`+轮次结束事件载荷 | 新增:清图口径换代(挖开∪封印、封印可完成清图) |
|
||||
| R4 | 批次语义序「能清图的挖或封最优先」(design/gdd/systems/排雷循环/排雷玩法.md:166) | `_classify` 封印清图预判 | `minesweeper_rules_test.gd:_test_classify_seal_clears`〔封印改 V4〕:同批「耗尽前停手+能清图的封」提交,赢家=清图高光而非停手 | 单元 | `MinesweeperRules.settle_batch()` | 结算赢家类别 | 既有:挖/封印合法性与可辨拒绝(拒绝零副作用、挖封印格被拒) |
|
||||
| R5 | 标中/标空轮末判定批与溢价逐位不变(design/gdd/systems/战斗循环/战斗结算.md:139) | 判定批零改动(回归保护) | `seal_polarity_test.gd` 保留断言原样跑绿(末点 AP 收轮、标中兑付+溢价 125%、标空负向+归因行、完美封印双份);保留组各函数补判据出处注记行(`# 判据出处: design/gdd/systems/战斗循环/战斗结算.md:139 …〔封印改 V5〕`——尾缀 grep 载体)〔封印改 V5〕 | 单元 | `BattleOrchestrator.begin_battle()` 全轮驱动 | 结算行流逐项 | 既有:封印与极性路由/不可逆 |
|
||||
| R6 | 受理当场零兑付、改判路径死(design/gdd/systems/战斗循环/战斗结算.md:134) | grant_segment 删改判面 | `settlement_wiring_snapshot_test.gd` golden 重录〔封印改 V6〕:同种子驱动序内「挖+封+停」行流/快照逐位对拍新 golden;流水零「奖励作废(封印格直接挖开)」行 | 单元 | `BattleOrchestrator` 真实驱动序 | 内嵌 golden 逐位 | 既有:封印与极性路由/不可逆 |
|
||||
| R7 | 破封一击退役、`dug_under_seal` 事实词除名(design/gdd/systems/冒险循环/奇物.md:72) | feats.tres 删行+词表删+断言退役 | `adventure_feats_test.gd` 破封一击断言删;`effect_words_t1_test.gd` 词表断言换代〔封印改 V7〕;`grep dug_under_seal game/ 全域=0`;抽取池引用清零核对 | 单元+静态 | feats.tres 装载路径 | 表行缺席+词表缺席 | 既有:换图系刷新链路与效果词表接线 |
|
||||
| R8 | 封印格呈现:地板+法阵+身份字形垫色牌(design/ux/battle.md:170) | board_view 渲染换代 | `seal_mark_params_test.gd:_test_seal_on_revealed_visible` 新增断言〔封印改 V8〕:`seal_on` 与已揭示同真时印记子件仍可见(新组合态;直读 CellUnit 子件可见性=受控例外——该行为无公开可观测面可钉,随行申报)+`ui_input_probe.gd` case④b 换代:真输入右键封印后印记子件可见且身份字形可查 | 探针 | 真实实例化场景+`push_input` 右键 | `seal_on` 供数表达式+子件可见性 | 既有:棋盘封印印记呈现(已揭示格承载+已封印格零动作) |
|
||||
| R9 | 已封印格无动作:左/右键零意图、悬停禁止+说明可见(design/ux/battle.md:299) | board_view 输入分派+board_hover | `ui_input_probe.gd` 新增 case〔封印改 V9〕:真输入左/右键已封印格→`action_requested` 零发射、光标态=禁止、悬停说明在册可见(措辞按白名单 2 润,断言钉在册) | 探针 | 真实实例化场景+`push_input` | 信号发射面零计数+说明可见性 | 既有:棋盘封印印记呈现(已揭示格承载+已封印格零动作) |
|
||||
| R10 | 文案换代四件(design/ux/battle.md:284) | hud_presenter/legend/board_zone_view | `hud_presenter_test.gd`/`player_copy_sweep_test.gd` 断言换代〔封印改 V10〕+`ui_click_probe.gd` 图例行断言换代 | 单元+探针 | 文案装配函数+真实场景 | 逐字串断言 | 既有:挖/封印合法性与可辨拒绝(拒绝零副作用、挖封印格被拒) |
|
||||
| R11 | sim 策略对齐+MC 基线锚同批重锚(design/gdd/systems/排雷循环/排雷玩法.md:52——策略镜像玩家可用的揭示面;同批重锚授权=用户 2026-11-07 裁) | auto_player/level_autoplay 换代+「标雷误挖」注入退役+等价补偿注入重标定(用户 2026-11-07 裁③) | MC 重锚:改前锚留盘,新锚同 seed0 采集落盘,逐项对比读数写实现报告〔封印改 V11——载体=实现报告对照表行+重锚提交说明,独立审计按报告核对〕;补偿注入后普通档踩雷读数对齐改前锚量级 | 测量 | sim 采集链(master_seed 配对) | 改前改后读数差分(留盘) | 既有:挖/封印合法性与可辨拒绝(拒绝零副作用、挖封印格被拒) |
|
||||
| R12 | 渲染基线换代(design/ux/battle.md:170) | golden 三图重制 | 渲染闸绿+新基线采集前用户对照预览图确认一眼(test-conventions §8.2 口径);mac 三件缺则记遗留(闸 SKIP 不判红)〔封印改 V12——载体=实现报告对照表行+基线刷新提交说明,独立审计按报告核对〕 | 渲染闸 | 真实渲染截图 | 逐像素基线比对 | 既有:棋盘封印印记呈现(已揭示格承载+已封印格零动作) |
|
||||
|
||||
**测试方式两分法**:R1-R7、R10 能力验证=调试接口直调核心写口构造局面(不走正常积累流程);R8、R9、R12 体验验证=用户目检项登记实现报告目检总清单(登记不阻塞):封印受理瞬间揭示的观感、封印格悬停禁字、图例新句、清图高光在封印完成时触发。
|
||||
**闸口径**:本批改动含 `game/` 非文档行为载体 → 批末跑代码域闸(域划分唯一出处=`tools/run_all_gates.sh`);批末四闸语义=「代码域闸全绿+改前改后 MC 读数对拍落盘」。回归措辞照模板:里程碑步出口跑一次全套闸;波内修复只做出红最小单元最窄确认;新增测试先行孤立验证再并入。
|
||||
**测试削弱申报**:允许改判的旧断言仅限本卡点名的四处——①`seal_polarity_test` 四情况组「直挖受理/隐式退役/零兑付」断言(语义被用户裁替换)②`minesweeper_rules_test` preview 形态 B 组(前提消失)③`hud_presenter_test`/`player_copy_sweep_test` 文案逐字断言(文案换代)④`settlement_wiring_snapshot` 内嵌 golden(计数漂移)。其余削弱=独立验收审计判红。
|
||||
**独立验收审计**:`reports/iter<N>-验收审计-<日期>.md`,未参与实现的会话或子代理执行,验收档=高(全量:对照表逐行核对、判据绑定面抽查、削弱检查逐处、直查例外逐条、最窄测试抽查复跑)。
|
||||
|
||||
## 9. 任务卡 T0..T7
|
||||
|
||||
**T0 开工与基线读数**(0.25–0.5 日,中值 0.375)
|
||||
- [ ] 建 worktree+拷 `.godot/` 导入缓存与字体边车+**自主区拷现行 MC 锚 jsonl 入本区 sim-data/**(锚不入 git,worktree 冷检无此件)+`git status` 归属核对
|
||||
- [ ] S13 键读数:本批触碰的存量文件(minesweeper_rules/action_economy/grant_segment/effect_engine/board_view/board_hover 等)对照 `tools/gdstyle_baseline.txt` 登记——预期只降不升(删径只减成员),超预期即停
|
||||
- [ ] MC 改前读数确认:现行锚文件在盘、seed0 记录在案(只核对,禁补跑)
|
||||
|
||||
**T1 排雷规则核心换代**(1.5–2.5 日,中值 2.0)|取用:无|产出:`sealed_identity(c) -> Dictionary`(minesweeper_rules.gd 公开只读)、`ActionEconomy.notify_cleared()`(action_economy.gd 公开)
|
||||
- [ ] `_board_face_dig` 增封印拒绝(`target_sealed`,置于已揭示检查之后、中立移除之前),删 :371 放行注释
|
||||
- [ ] `_do_dig`/`_reveal_chain`/`preview_reveal`/`_classify` 删 `was_sealed` 一族与 `dug_under_seal` 载荷键(`_reveal_chain` 去第三参)
|
||||
- [ ] `_do_seal_place` 受理后:`_seals[c]=true` 照旧+清图判定(`_cleared_after({})` 换代口径)成立→`action_economy.notify_cleared()` 走清图收轮;末点 AP 耗尽路径保持现行收轮序(先封印判定后轮次结束)
|
||||
- [ ] `_safe_remaining`/`_cleared_after` 换代:安全格完成=已揭示或已封印
|
||||
- [ ] `_classify` 增「能清图的封」归最先类(模拟封印受理后清图口径)
|
||||
- [ ] 新增 `sealed_identity(c)`:封印格返回 `{kind, digit}`(`reveal_record` 契约不动——未开仍 `{}`,已开格消费面零扰动)
|
||||
- [ ] 验收步骤:R1/R2/R3/R4 断言孤立跑绿(读数进本步提交信息)
|
||||
|
||||
**T2 结算与效果面退役**(0.5–1 日,中值 0.75)|取用:T1 载荷换代|产出:结算载荷无 `dug_under_seal`
|
||||
- [ ] grant_segment.gd 删 :102-104 作废行块、:153 载荷键、:204 注释句
|
||||
- [ ] effect_engine.gd 事实词表删 `dug_under_seal`(:55/:60)+提取面清零
|
||||
- [ ] reward_grant.gd :174 注释换代(跳封印格逻辑保留——封印格不代开)
|
||||
- [ ] 验收步骤:R6/R7 断言绿+`grep -r dug_under_seal game/`=0
|
||||
|
||||
**T3 呈现层换代**(0.75–1.25 日,中值 1.0)|取用:T1 `sealed_identity`|产出:封印格渲染与输入分派
|
||||
- [ ] board_view.gd:`u.seal_on = seal`;瓦片切换 sealed→地板;封印格身份字形=数字/「危」垫现行色牌件(读 `sealed_identity`);`_diggable` 排除封印格;左键封印格零发射
|
||||
- [ ] board_hover.gd:封印格悬停=禁止光标+说明(删「左键直接挖」分支)
|
||||
- [ ] hud_presenter.gd:`seal_present` 句换代+`target_sealed` 新句;legend_overlay.gd 图例封印行重写;board_zone_view.gd 提示条换代+chord 错句顺带修
|
||||
- [ ] 验收步骤:R8/R9/R10 单元侧断言绿(探针断言随 T4 全链跑)
|
||||
|
||||
**T4 测试与探针换代**(1.5–2.5 日,中值 2.0)|取用:T1-T3 全部签名|产出:全套件换代绿
|
||||
- [ ] minesweeper_rules_test:新增 V1-V4 四函数、preview 形态 B 删、判据锚刷新
|
||||
- [ ] seal_polarity_test:四情况组重写(保留组原样)
|
||||
- [ ] settlement_wiring_snapshot_test:golden 重录
|
||||
- [ ] hud_presenter_test/player_copy_sweep_test/seal_mark_params_test/adventure_feats_test/effect_words_t1_test 换代
|
||||
- [ ] ui_input_probe(case④b+新 case V9)/board_shot_probe(选择器)/ui_click_probe(行为②清理+图例行)换代
|
||||
- [ ] smoke/critical-paths.md 第 4 条改写
|
||||
- [ ] 验收步骤:改过的套件与探针逐件孤立跑绿后并入全套(读数进提交信息)
|
||||
|
||||
**T5 内容退役**(0.25–0.5 日,中值 0.375)|取用:无|产出:破封一击零引用
|
||||
- [ ] feats.tres 删「破封一击」行;grep 全仓 `破封`/其 feat_id 清零
|
||||
- [ ] 验收步骤:数据装载冒烟绿+R7 断言绿
|
||||
|
||||
**T6 sim 域换代+MC 同批重锚**(0.75–1.25 日,中值 1.0)|取用:T1 查询面|产出:新 MC 锚落盘
|
||||
- [ ] auto_player:`_constraints` 用 `sealed_identity` 已知身份、choose_dig 跳封印格保持、注释换代
|
||||
- [ ] level_autoplay:「标雷误挖」注入退役(用户 2026-11-07 裁③);新增等价补偿注入——推荐形态「错触直挖」(普通档对已判雷格按新常量概率直接挖,新规则下合法路径),常量初值以改前锚普通档踩雷读数为标定目标,偏差记实现决定
|
||||
- [ ] MC 重锚:改前锚留盘禁补跑;新锚同 seed0 采集(档位与总量按 sim-data/README「MC 采集档位表」——用户 2026-11-07 已授权同批重锚=发起权在案);改前改后逐项对比写实现报告
|
||||
- [ ] 验收步骤:R11 读数落盘;重锚后旧锚退役入档
|
||||
|
||||
**T7 golden 重制与批末收口**(0.5–0.75 日,中值 0.625)|取用:T1-T6 全绿|产出:新基线+两份产出物
|
||||
- [ ] 用户对照 ux/battle.md 预览图确认一眼后,`tools/golden_baseline_refresh.sh` 重制棋盘三图(windows);mac 三件随批尽力、缺则记遗留(渲染闸 SKIP 不判红)
|
||||
- [ ] MC 新锚携回主区:新锚 jsonl 拷入主区 `sim-data/`(数据件不入 git,合并不携带);`sim-data/README.md` 现行锚指针随批合回、旧锚迁历史锚节
|
||||
- [ ] 渲染闸绿;批末核对:改动面×改完即测读数逐面对账、能力行名字与落地一致(改名回表)
|
||||
- [ ] `reports/iter<N>-实现报告-<日期>.md`+`reports/iter<N>-反哺点-<日期>.md`(预期零条——设计面已前置闭合)
|
||||
|
||||
## 10. 异常分级
|
||||
|
||||
- **L1 自救**:闸红一次重试(导入缓存类在册坑按坑册处置)。
|
||||
- **L2 记录继续**:连续 3 次同红灯升级;golden 逐像素差异落棋盘裁剪区→按加严口径显式呈报、由用户定重制(不自行回退基线)。
|
||||
- **L3 停机写报告等用户**:①实现与排雷玩法.md v2.0 冲突(上游缺陷)②MC 重锚读数显示结算面非预期漂移(溢价/标空/完美封印任一逐位不齐)③机检预算与卡片契约互斥(禁自造第三条路)④feats.tres 删行引发装载期 fail-fast(池结构校验红)。
|
||||
|
||||
## 11. 代拍板白名单(微决策逐条列;超清单记实现报告「实现决定记录」)
|
||||
|
||||
1. 拒绝原因英文串定名(`target_sealed`;卡内已钉,拼写微调需同步 R2 断言——保持卡串优先)。
|
||||
2. 拒绝/悬停 toast 与图例的最终措辞(语义按 ux/battle.md 各句,字句可润)。
|
||||
3. 测试函数命名与断言组织细节(对照表点名函数名优先)。
|
||||
4. 色牌、装饰裂纹等渲染细节取现行 ui_kit/art-bible 现行值,零新常量。
|
||||
5. sim 补偿注入的形态与常量初值(「标雷误挖」退役后的重标定补偿——标定目标=改前锚普通档踩雷读数;只动 sim 常量、不动玩法数值),记录进实现决定。
|
||||
6. mac golden 三件缺件时记遗留的处理顺序。
|
||||
|
||||
## 12. 落位与可复用性预检
|
||||
|
||||
**新增件两件(仅此两件),其余全为修改既有件**:
|
||||
|
||||
| 新增 | 为什么不能复用既有 | 落点唯一性核查 |
|
||||
|---|---|---|
|
||||
| `MinesweeperRules.sealed_identity(c)` | `reveal_record(c)` 契约=未开返回 `{}`(board_view 已开格渲染消费此语义,:494/:564 注释在案)——改它会扰动全部已开格渲染判定;身份揭示是封印态专用读数 | grep `sealed_identity` 全仓=0(新名);落 minesweeper_rules.gd 查询面区(`reveal_record`/`is_revealed` 同区),单一事实出处 |
|
||||
| `ActionEconomy.notify_cleared()` | `request_dig(chain_size, clears)` 的 cleared 语义绑定挖掘计费流程;封印不产挖掘计费,硬塞会引入假挖掘记账;清图事实需要独立上报口 | grep `notify_cleared` 全仓=0(新名);轮末仲裁 owner=action_economy(架构归属),落点唯一 |
|
||||
|
||||
**复用面**:封印法阵渲染复用 `SealMarkLayer` 参数化绘制(零新美术);身份字形复用既有数字/「危」绘制与色牌件;轮末判定/溢价/完美封印/中立移除全复用既有实现。**唯一面**:清图口径只在 `_safe_remaining`/`_cleared_after` 两处同源换代(私有共享计数 helper),禁第三处重复实现;`target_sealed` 词串只在规则引擎定义一处、呈现文案映射一处。**分层与交互**:呈现读身份走既有 `_minesweeper` 引用通道(board_view 现行只读惯例),不经组合根新增接线;`notify_cleared` 只由 rules 在封印受理后调用(写调用经批次入口,Core 内部纵向调用,零 UI 依赖)。
|
||||
|
||||
## 13. 禁为机检文本保留无效成员
|
||||
|
||||
本批删径面(`was_sealed` 参数与分支、`dug_under_seal` 事实词/载荷键/提取面、`_reveal_chain` 第三参、作废行块、滑失注入段)必须删净;**禁止**为保 S 系扫描键、断言尾缀计数或任何机检消息文本而保留无效成员、空壳函数或别名。机检键与本卡契约互斥时一律停卡呈报,不自造第三条路。
|
||||
|
||||
## 14. 实现规范预算
|
||||
|
||||
**零新增文件**。新增公开方法 2 个(`sealed_identity`、`notify_cleared`)——两宿主现行公开方法数远低于 20 上限(T0 读数核对);新增类变量 0。**迁移函数**:无(删径不搬移)。**存量触面**:第 7 节全部修改文件在 T0 逐件读 S13 键,预期只降不升(删成员只减);`_reveal_chain` 签名变更属参数删除,分支数不升。**指标例外申报**:无。
|
||||
|
||||
## 15. 复核记录
|
||||
|
||||
| 轮次 | 复核者身份 | 发现 | 去向 | 处置结果 |
|
||||
|---|---|---|---|---|
|
||||
| 1 | 只读子代理(对抗复核,未参与本卡与文档撰写) | F1 教学引导.md:58 首遇提示句仍是「左键直接挖开」旧口径——本批 grep 词面(挖开封印/四情况等)扫不到「左键直接挖开」词形 | 退回上游 | 设计段(本批同区)已修:教学引导.md:58 提示句换代为受理即揭示口径;卡头闭合凭据与第 6 节同步面补列教学引导.md |
|
||||
| 1 | 同上 | F2 「标雷误挖」滑失注入退役前提失真——注入是封印意图提交前转同格挖意图,目标格当时未封未揭,新规则下该挖仍合法可执行;注入与被删路径无行为耦合 | 待裁 | **用户 2026-11-07 裁③退役+重标定补偿**:T6/R11/白名单 5 已改写——旧注入退役,新增等价补偿注入(推荐形态「错触直挖」),常量以改前锚普通档踩雷读数为标定目标 |
|
||||
| 1 | 同上 | F3 R5 行锚 :146 实为兑付形态表头行,不支撑判定批判据 | 自判 | R5 行锚改 战斗结算.md:139+:126(判定批行+溢价注记行) |
|
||||
| 1 | 同上 | F4 🔴 事件封闭条「消费方只有呈现层」与 T6 sim 消费 `sealed_identity` 自相矛盾 | 自判 | 🔴 句改为「消费方=呈现层+sim 策略域(测量侧镜像玩家可读信息),禁扩到兑付面」 |
|
||||
| 1 | 同上 | F5 估时上界实为 10.25 非 10(八卡上界合计);切分预案与三裁③及验收闭合红线打架 | 自判 | 头部估时上界改 10.25;切分预案改「超 10 停卡呈报用户改排」并写明 T4/T6 不可拆依据 |
|
||||
| 1 | 同上 | F6 能力行换代承诺未兑现(README 零改动,五锚点全旧文) | 自判 | 写卡段已实做:3 行换代(:88/:117/:120)、1 行删除(旧「封印不可逆与挖开封印格放行」行)、2 行新增(受理即揭示/清图口径)、覆盖域表排雷玩法行换代 |
|
||||
| 1 | 同上 | F7 「登记待办清单『封印格观感细化』」实际未登记,后置决定悬空 | 自判 | 已登记待办清单条目(封印格观感细化,2026-11-07,待美术设计〔备选〕);卡 §5 措辞改事实句 |
|
||||
| 1 | 同上 | F8 两处现状失准:board_view reveal_record 消费注释在 :494/:564 非 :80;断点键 28 个非 27 | 自判 | 卡 §12 与 §3 两处已改;「存档零改动」结论不变 |
|
||||
| 1 | 同上 | F9 V5/V11/V12 三尾缀无 grep 载体(保留断言旧尾缀/sim 不进扫描面/渲染闸无断言体) | 补写 | R5 补判据出处注记行载体;R11/R12 明写载体=实现报告对照表行+提交说明(独立审计按报告核对) |
|
||||
| 1 | 同上 | F10 R1「grant 批零新兑付行」与该行真实入口(rules 夹具无结算面)不匹配 | 补写 | R1 判据改注「受理零兑付的结算侧证据由 R6 行覆盖」 |
|
||||
| 1 | 同上 | F11 MC 锚数据件不入 git——worktree 冷检无锚、合并合回不携带、sim-data/README.md 指针换代面缺位 | 补写 | T0 加「自主区拷现行锚」步骤;T7 加「新锚携回主区+README 指针随批合回+旧锚迁历史节」;第 7 节补 sim-data/README.md 行 |
|
||||
| 1 | 同上 | F12 对照表注记缺口:board_view 行缺 R9 标注、rules 行缺 R6/R7 归属、R8 子件直查未申报受控例外 | 补写 | 三处已补(board_view 行标 R8 R9;rules 行标 R1-R4/R6/R7;R8 行随行申报受控例外理由) |
|
||||
| 1 | 同上 | F13 悬停说明文案(ux/battle.md:299)无断言载体 | 补写 | R9 收编「悬停说明在册可见」断言(措辞按白名单 2 润) |
|
||||
| 1 | 同上 | 核实通过面:九文档行锚逐一实核、15+ 处现状 file:line 全对、`sealed_identity`/`notify_cleared` 全仓零命中、引擎三查(NEVER list/Gotchas/性能预算)零触碰、MC 纪律与渲染闸 mac 缺件 SKIP 语义一致 | 自判 | 不改+依据:实核通过,记录在案供审计追溯 |
|
||||
|
||||
复核结论:待裁类 1 条(F2)已经用户裁决(2026-11-07 裁③退役+重标定补偿)并落卡;自判 5、补写 5、退回上游 1 全部处置——**卡片成立**。
|
||||
Reference in new issue
Block a user