From 929b74ac433c9d6e2feb5cbd60ddeb2463442ec3 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Sun, 18 Oct 2026 20:18:33 +0800 Subject: [PATCH] =?UTF-8?q?docs(=E8=BF=AD=E4=BB=A331):=20=E4=B8=A4?= =?UTF-8?q?=E5=8D=A1=E8=AE=B0=E8=BD=BD=E6=94=B9=E4=B8=BA=E5=8F=AF=E5=A4=8D?= =?UTF-8?q?=E7=8E=B0=E5=AE=9E=E6=B5=8B=E8=AF=BB=E6=95=B0=EF=BC=8B06=20?= =?UTF-8?q?=E5=87=AD=E8=AF=81=E4=BB=B6=E6=9D=A1=E7=8A=B6=E6=80=81=E4=B8=8E?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E9=9D=A2=E5=8F=A3=E5=BE=84=E9=97=AD=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户令:本会话不做开发,只把需求卡片与迭代 31 相关文档改对。逐条对现行代码复核后的订正: 卡① v1.4(代码术语刷新批) - §2 总量改为可复现实测:game/ 含 flag 的文件 57 个共 617 处,剔除 size_flags_* 70 处(19 个文件,v1.3 只记 ui_assembler 一个)与 _fatal_flag 4 处后净待改 543 处/42 个文件;原记 ~314 处/29 文件低估约一倍、文件数少记 24 个,并附复现命令 - §2 逐文件表按净命中重排 13 行;N2 中文表改实测(金币 39/插旗 62/雷格 75/惩罚格 1/旗含复合 376 处——原记 ~15 严重低估);插旗 top3 文件误记订正 - 补三处真实漏项:FACTS 两键全链(flags_count→seals_count 三处、dug_under_flag→dug_under_seal 十一处,含 effect_words_t1_test 断言)入 §3 新契约与 T3.1;ui_click_probe 净 21 处(原只记注释 3 处);T5.20–T5.24 补五个卡片完全未列的文件(screen_flow_probe 8 处等) - ui_assembler.gd:203 注释「min/flags」改判为须改写(非豁免项),否则 V1 零命中判据永远红一项;估时 ≈3.75d 未自改,标注按旧读数定、上调与否归编排段/用户 卡② v1.1 补订:EFFECT_KINDS 现 31 项(原记 30,本卡 T4 扩签后 32);其余 §2 全部行号与 rare 配额构成(ap3+rap2+battery1+时沙2+保险1=9→7)逐条实测核对无误 06-待办清单 - 「凭证件裁削批·代码侧迁移」:设计面 工程直入→文档轨;状态 待写卡→文档设计已闭合(奇物.md v3.18)+已写卡(卡片路径)+已编迭代 31;现状句「候选名 forgive_flag_miss,命名待用户定」改为已裁 forgive_seal_miss - 「代码术语刷新批」:现状句 game/ 读数改实测值,并注明审计报告读数属全库/代码域混记、两种口径均不可复现 验证:流水线闸 PASS(06 条目 60·总表 31 行·交叉核 1→2 链·卡片口径 21 张);文档域全闸与基线一致、无新增红。 --- design/gdd/06-待办清单.md | 8 +-- .../需求卡片-代码术语刷新批-2026-10-18.md | 68 ++++++++++++------- .../需求卡片-凭证件裁削批-2026-10-18.md | 2 +- 3 files changed, 47 insertions(+), 31 deletions(-) diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index 0539e727..226d5597 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -543,7 +543,7 @@ #### 代码术语刷新批——禁用词全库清扫+flag→seal 标识符重命名(2026-10-18 登记,来源=会话提及,设计面=工程直入) -**现状**:2026-10-18 用户裁定三组术语刷新(记忆 `project-terminology-rulings-20261018.md`):①GP 是唯一正式命名,「金币」系 AI 噪音全库禁用;②「插旗」全库禁用,正式动作名=封印,「旗」概念不存在;③代码英文标识符 flag_* 全换 seal_*。另「雷格」「惩罚格」2026-10-11 已裁退役→危险格,代码域尚未执行。审计报告(`design/qa/代码术语审计报告-2026-10-18.md`)实查:game/ 目录命中约 757 处(flag_ 标识符 314 处/29 个 .gd+4 个 .tres;中文禁用词 金币 116 处/插旗 210 处/雷格 109 处),涉及核心逻辑(minesweeper_rules.gd、battle_orchestrator.gd、grant_segment.gd)、数据表(feats.tres、settlement.tres、action_economy.tres、reward.tres)、呈现层(board_view.gd、shop_overlay_view.gd、legend_overlay.gd)与冒烟测试(smoke_all.gd 单文件 105 处 flag_)。文档面(design/)由另批处理,本条只覆盖 game/ 代码域。 +**现状**:2026-10-18 用户裁定三组术语刷新(记忆 `project-terminology-rulings-20261018.md`):①GP 是唯一正式命名,「金币」系 AI 噪音全库禁用;②「插旗」全库禁用,正式动作名=封印,「旗」概念不存在;③代码英文标识符 flag_* 全换 seal_*。另「雷格」「惩罚格」2026-10-11 已裁退役→危险格,代码域尚未执行。审计报告(`design/qa/代码术语审计报告-2026-10-18.md`)实查:game/ 代码域实测读数(2026-10-18 需求卡片 v1.4 复核;口径=区分大小写逐处计数,命令见卡片 §2):含 `flag` 的文件 57 个(.gd 53 + .tres 4)共 617 处,剔除 `size_flags_*` 70 处(19 个文件)与 `_fatal_flag` 4 处后**净待改 543 处/42 个文件**;中文禁用词 金币 39 处、插旗 62 处、雷格 75 处、惩罚格 1 处、「旗」含复合词共 376 处。涉及核心逻辑(minesweeper_rules.gd 净 59、battle_orchestrator.gd 33、grant_segment.gd 38)、数据表(feats.tres 15、settlement.tres、action_economy.tres、reward.tres、treasure_items.tres)、呈现层(board_view.gd 23、battle_end_overlay.gd 11、shop_overlay_view.gd、legend_overlay.gd)与冒烟测试(smoke_all.gd 单文件净 156 处=全集 29%)。订正说明:审计报告原记「game/ 约 757 处(flag_ 314 处/29 个 .gd;金币 116/插旗 210/雷格 109)」在现行代码上两种口径都复现不出:中文三词的读数属全库面(全库实测 金币 381/插旗 600/雷格 394 处),与本条的 game/ 范围混记;flag 侧则低估约一倍。逐文件读数以需求卡片 §2 为准。文档面(design/)由另批处理,本条只覆盖 game/ 代码域。 **归属**:全工程(排雷循环/战斗循环/冒险循环/呈现层/数据表/冒烟测试均触及;主责=术语表裁定执行) @@ -622,13 +622,13 @@ --- -#### 凭证件裁削批·代码侧迁移(2026-10-18 登记,来源=会话提及,设计面=工程直入) +#### 凭证件裁削批·代码侧迁移(2026-10-18 登记,来源=会话提及,设计面=文档轨) -**现状**:GDD 侧已随 2026-10-18 文档批定稿(见 `奇物.md` v3.18),**代码零改动**。待做五件事——①`CURIO_KINDS` 移除 attune_battery/perfect_insurance 两枚及配套配额字段、件值字段、分发表分支;②`TIER_QUOTAS` rare 9→7、总量 104→102(**结构锚须重裁**——用户已裁「净删」,不接受转给别件;连带 rare 档品种 5→3,仅剩 ap/rap/time_sand);③`adventure_runner.gd` 清 `_pending_insurance`/`_battery_pending`/`choose_battery_target`/`battery_pending()`/断点存档键(🔴 `run_ledger.attune_charges` 账本与 `_seed_attune_charges` **禁删**——迭代 11 秘宝基础设施);④`feats.tres` 增完美保险行(rarity 取 rare、desc=「本场首次封印落空,不计入完美封印判定」、triggers 走 on=flag_missed + 每战限次),前置依赖**效果引擎 `EFFECT_KINDS` 扩签一种**(该行将成为 feats.tres 首例 `domain=battle`;候选名 forgive_flag_miss,命名待用户定);⑤`grant_segment.gd` 硬编码 `_fx_insurance` 改订阅式——**按用户指定做法**:新增自有累加计数,判定时取「误标总数 − 豁免数」得有效数,**不改写既有 `_perfect_hit_false`、不拦截事件**(原方案的回退式与拦截式均已否决)。测试面 `feat_vouchers_test.gd` V9/V16 同步。玩家面术语统一用「完美封印」、不用「完美排雷」(命名纪律见奇物.md v3.15)。 +**现状**:GDD 侧已随 2026-10-18 文档批定稿(见 `奇物.md` v3.18),**代码零改动**。待做五件事——①`CURIO_KINDS` 移除 attune_battery/perfect_insurance 两枚及配套配额字段、件值字段、分发表分支;②`TIER_QUOTAS` rare 9→7、总量 104→102(**结构锚须重裁**——用户已裁「净删」,不接受转给别件;连带 rare 档品种 5→3,仅剩 ap/rap/time_sand);③`adventure_runner.gd` 清 `_pending_insurance`/`_battery_pending`/`choose_battery_target`/`battery_pending()`/断点存档键(🔴 `run_ledger.attune_charges` 账本与 `_seed_attune_charges` **禁删**——迭代 11 秘宝基础设施);④`feats.tres` 增完美保险行(rarity 取 rare、desc=「本场首次封印落空,不计入完美封印判定」、triggers 走 on=flag_missed + 每战限次),前置依赖**效果引擎 `EFFECT_KINDS` 扩签一种**(该行将成为 feats.tres 首例 `domain=battle`;候选名 forgive_flag_miss 已作废,2026-10-18 用户补裁效果类型名=**forgive_seal_miss**(随卡① flag→seal 命名接续,见需求卡片 v1.1 顶部通则);⑤`grant_segment.gd` 硬编码 `_fx_insurance` 改订阅式——**按用户指定做法**:新增自有累加计数,判定时取「误标总数 − 豁免数」得有效数,**不改写既有 `_perfect_hit_false`、不拦截事件**(原方案的回退式与拦截式均已否决)。测试面 `feat_vouchers_test.gd` V9/V16 同步。玩家面术语统一用「完美封印」、不用「完美排雷」(命名纪律见奇物.md v3.15)。 **归属**:game/ 代码与数据表(走独立 worktree 批) -**状态**:待写卡 +**状态**:文档设计已闭合(design/gdd/systems/冒险循环/奇物.md v3.18)+已写卡(design/research/需求卡片-凭证件裁削批-2026-10-18.md)+已编迭代 31 --- diff --git a/design/research/需求卡片-代码术语刷新批-2026-10-18.md b/design/research/需求卡片-代码术语刷新批-2026-10-18.md index 9aa64a98..c76d31cf 100644 --- a/design/research/需求卡片-代码术语刷新批-2026-10-18.md +++ b/design/research/需求卡片-代码术语刷新批-2026-10-18.md @@ -1,6 +1,6 @@ # 需求卡片:代码术语刷新批(flag→seal+中文禁用词清扫) -- 版本:**v1.3**(2026-10-18 卡片冲突修订批:补「设计事实源」声明;§5 同步义务由「机械面随批」改为反哺点清单(对齐 req-card §6/§7 2026-10-17 改口径);T3.1 补 `flag_missed`→`seal_missed` 全链;新增与卡② 的命名接续契约。历史:v1.2 grilling 复核 Q4–Q8 全裁;v1.1 Q1–Q3 全裁) +- 版本:**v1.4**(2026-10-18 卡片正确性复核批:§2 现状事实的命中数改为**可复现实测读数**——v1.x 沿用审计报告的计数在现行代码上无法复现,且总量低估约一倍、文件数少记 24 个;历史:v1.3 冲突修订批、v1.2 grilling Q4–Q8、v1.1 Q1–Q3) - 来源: - [06-待办清单](../gdd/06-待办清单.md)「代码术语刷新批——禁用词全库清扫+flag→seal 标识符重命名」(2026-10-18 登记,工程直入) - 用户裁定(2026-10-18,记忆 `project-terminology-rulings-20261018.md`) @@ -27,22 +27,29 @@ ### N1 · flag_* 标识符分布 -**总量**:~314 处(270 处 .gd + 22 处 .tres + 22 处独立 `flag` 词) +**总量(v1.4 实测,2026-10-18,口径见下)**:`game/` 内含 `flag` 的文件 **57 个**(.gd 53 个 595 处 + .tres 4 个 22 处,合计 617 处);剔除假阳性 `size_flags_*` 70 处(19 个文件)与 `_fatal_flag` 4 处(1 个文件)后,**净待改 543 处、42 个文件**。 +复现命令(在 `game/` 目录):`grep -ro 'flag' --include=*.gd --include=*.tres . | wc -l`(总处数);净处数=逐文件 `grep -o 'flag'` 减 `grep -o 'size_flags[a-z_]*'` 减 `grep -o '_fatal_flag'` 再求和。 +> **v1.x 读数不可复现的订正说明**:原记载「~314 处(270 处 .gd + 22 处 .tres + 22 独立 flag 词)/29 个 .gd 文件」来自审计报告,其计数口径(疑为 `flag_` 前缀且不含注释内英文词)在现行代码上两种口径都对不上——单文件抽样:`minesweeper_rules.gd` 原记 18、`flag_` 前缀口径 18、`flag` 全口径 59;`smoke_all.gd` 原记 105、两种口径分别 136/157。**低估面约为实测的 1.9 倍,文件数少记 24 个**。§6 估时 ≈3.75d 是按旧读数定的,是否上调归编排段/用户(本卡不改估时)。完成判据不受影响——V1 本来就是「grep 零命中」,与计数无关。 -**核心逻辑文件(改动密度前 10)**: +**核心逻辑文件(v1.4 实测:净命中=`flag` 处数 − `size_flags_*` − `_fatal_flag`;降序,2026-10-18)**: -| 文件 | flag_ 命中 | 关键标识符 | +| 文件 | 净命中 | 关键标识符 | |---|---|---| -| smoke/smoke_all.gd | 105 | flag_place, flag_hit, flag_miss, flag_placed, _flag_consumed | -| core/settlement/grant_segment.gd | 23 | flag_hit, flag_miss, _flag_consumed, flag_settle | -| smoke/ui_input_probe.gd | 23 | flag_place, flag_cell | -| core/minesweeper_rules.gd | 18 | flag_place, has_flag, flag_range_free, _flag_miss_seen | -| core/battle_orchestrator.gd | 17 | flag_hit, flag_hit_premium, _flag_consumed | -| smoke/level_autoplay.gd | 16 | flag_placed, flag_hit, flag_miss | -| data/tables/feats.tres | 15 | "flag_hit"(on 触发), "echo_flags", "smith_flags", "flag_burst"(feat_id) | -| core/effect_engine.gd | 9 | `EVENTS` 含 "flag_hit"(:13)、"flag_missed"(:15);`MINE_EVENTS` 含 "flag_hit"、"flag_settle"(:20);天赋树合成行 `_push_trigger("tree", …, {"on": "flag_missed"})` 2 处(:149、:152);头注 :9 含「flag_missed 标错判定」 | -| presentation/views/battle_end_overlay.gd | 9 | flag_hit, flag_miss 统计显示 | -| presentation/views/board_view.gd | 7 | tex_flag, has_flag, flag_cell | +| smoke/smoke_all.gd | 156 | flag_place, flag_hit, flag_miss, flag_placed, _flag_consumed + 注释断言文本 | +| core/minesweeper_rules.gd | 59 | flag_place, has_flag, flag_range_free, _flag_miss_seen, was_flagged, dug_under_flag 载荷键(:300/:306/:313/:348) | +| smoke/ui_input_probe.gd | 40 | flag_place, flag_cell | +| core/settlement/grant_segment.gd | 38 | flag_hit, flag_miss, _flag_consumed, flag_settle, dug_under_flag(:30/:93) | +| core/battle_orchestrator.gd | 33 | flag_hit, flag_hit_premium, _flag_consumed | +| smoke/level_autoplay.gd | 30 | flag_placed, flag_hit, flag_miss | +| presentation/views/board_view.gd | 23 | tex_flag, has_flag, flag_cell | +| smoke/ui_click_probe.gd | 21 | **_flags_placed**(:22 声明+:263/:279/:287/:309/:330 等清空点)——v1.3 的 T5.4 只记了「注释插旗 3 处」,漏了 18 处标识符 | +| data/tables/feats.tres | 15 | "flag_hit"(on 触发), "echo_flags", "smith_flags", "flag_burst"(feat_id), "dug_under_flag"(fact) | +| core/effect_engine.gd | 15 | `EVENTS` 含 flag_hit(:13)、flag_missed(:15);`MINE_EVENTS` 含 flag_hit、flag_settle(:20);**`FACTS` 含 flags_count(:51)与 dug_under_flag(:52)**——v1.3 的 T3.1 漏了 FACTS 两键;天赋树合成行 `{"on": "flag_missed"}`(:149、:152) | +| smoke/adventure_monte_carlo.gd | 14 | flag_placed, flag_hit, flag_miss(MC 输出键源) | +| smoke/auto_player.gd | 13 | flag_place 调用+注释「雷格」 | +| presentation/views/battle_end_overlay.gd | 11 | flag_hit, flag_miss 统计显示 | + +**净命中 >0 的文件共 42 个**(其余 15 个含 `flag` 的文件只有 `size_flags_*`/`_fatal_flag` 假阳性)。上表列 13 个,余 29 个净 1–8 处,其中 **v1.3 任务卡完全未列的 5 个**(v1.4 已补进 T5.20–T5.24):`smoke/screen_flow_probe.gd` 8(`_screen_flags`/`_flags_text`/`_expect_adventure_flag`)、`tests/unit/core/effect_words_t1_test.gd` 2(**断言 `FACTS.has("dug_under_flag")`——不改必红**)、`smoke/ui_probe.gd` 2、`smoke/type_glow_shot_probe.gd` 2(`kind == "flag"`/`op = "flag_place"`)、`smoke/fx_probe.gd` 2(`flag_dots` 键)。 **数据表字段(.tres 键名,改动必须与 schema .gd 同步)**: @@ -80,8 +87,9 @@ | 文件 | 标识符 | 原因 | |---|---|---| -| presentation/views/ui_assembler.gd | `size_flags_vertical` / `size_flags_horizontal` / `size_flags_stretch_ratio` | Godot 引擎 Control 内置属性 | -| core/config_db.gd | `_fatal_flag` | 无关变量(致命错误标记) | +| **`game/` 内 19 个 .gd 文件全体**(v1.4 订正:v1.3 只写了 ui_assembler.gd 一个,漏 18 个) | `size_flags_*`(含 `size_flags_vertical`/`size_flags_horizontal`/`size_flags_stretch_ratio`,共 70 处) | Godot 引擎 Control 内置属性与布局写法,禁改 | +| core/config_db.gd | `_fatal_flag`(4 处) | 无关变量(致命错误标记),禁改 | +| presentation/views/ui_assembler.gd:203 | 注释里的「min/flags」字样 1 处 | **不是豁免项,须改写注释**(v1.4 订正)——V1 判据是「grep `flag` 零命中减两类假阳性」,这处注释既非 `size_flags_*` 也非 `_fatal_flag`,不改写则 V1 永远红一项。改法:把「0=不设 min/flags」写成「0=不设最小宽度」 | **存档影响面(Alpha 阶段可接受作废,不做迁移)**: @@ -89,15 +97,15 @@ |---|---|---| | save.json → breakpoint.adventure_counters | `"echo_flags"`, `"smith_flags"` | 旧档计数器失效,Alpha 阶段可接受(2026-10-18 用户裁定) | -### N2 · 中文禁用词分布(.gd 文件) +### N2 · 中文禁用词分布(v1.4 实测,`game/` 内 .gd+.tres,2026-10-18) -| 禁用词 | 命中 | 主要落点 | +| 禁用词 | 实测处数/行数/文件数 | 主要落点(实测 top 3 文件) | |---|---|---| -| 金币 | ~35 处 | UI 字符串(shop_overlay_view 5、camp_shop_presenter 3、battle_narrator 2、curio_pick_overlay 2、legend_overlay 1)+注释(smoke_all 10、battle_orchestrator 1 等) | -| 插旗 | ~100 处 | 注释为主(grant_segment 6、minesweeper_rules 4、board_view 4、smoke_all 14)+UI 字符串(hud_presenter 1、main.gd 1、legend_overlay 1) | -| 雷格 | ~80 处 | 注释(battle_orchestrator 11、smoke_all 31、minesweeper_rules 5、grant_segment 3、board_generator 1)+测试断言文本 | -| 惩罚格 | ~2 处 | treasure_items.gd 注释 | -| 旗(游戏概念) | ~15 处 | UI 字符串(legend_overlay "旗"、hud_presenter "已有旗")+注释("标中旗""标错旗""拔旗"等) | +| 金币 | 39 / 36 / 16 | smoke_all 10、shop_overlay_view 5、camp_shop_presenter 3(+battle_narrator 2、curio_pick_overlay 2、legend_overlay 1 等 UI 字符串) | +| 插旗 | 62 / 60 / 23 | smoke_all 14、grant_segment 6、**tests/unit/core/minesweeper_rules_test.gd 4**(v1.3 误记为 minesweeper_rules.gd 4) | +| 雷格 | 75 / 70 / 19 | smoke_all 31、battle_orchestrator 11、minesweeper_rules 5(+grant_segment、board_generator、测试断言文本) | +| 惩罚格 | 1 / 1 / 1 | treasure_items.gd 注释(v1.3 记 ~2 处,实为 1) | +| 旗(含复合词) | **376 / 285 / 50** | 内已含 插旗 62、标中旗 21、标旗 20;其余为注释里的「旗格/旗判定/旗溢价/旧板旗/无旗/拔旗/旗经济」等散句,v1.3 记 ~15 处严重低估——但落点几乎全是注释与断言描述文本,按 §9 代拍板白名单第 1、3 条语义等价改写即可,不需逐条请示 | ### N3 · .tres 中文禁用词 @@ -133,6 +141,7 @@ - 🔴 **本批不保证旧存档兼容**:`echo_flags` / `smith_flags` 等 counter_id 持久化在 save.json 的 `breakpoint.adventure_counters` 中,重命名后旧档该键失效。Alpha 阶段可接受存档作废,不做迁移逻辑(2026-10-18 用户裁定)。 - 🔴 **不改 design/ 目录**:实现批禁写 design/(process-conventions §3 第 13 条)。 - 🔴 **不改 tools/*.py**:工具脚本归文档批。 +- 🔴 **FACTS 两键全链同步(v1.4 补,v1.3 完全漏列)**:`flags_count`→`seals_count` 三处落点(`core/effect_engine.gd:51` 词表、`core/battle_orchestrator.gd:180` 载荷、`core/settlement/grant_segment.gd:179` 发射);`dug_under_flag`→`dug_under_seal` 十一处落点(`effect_engine.gd:47/:52`、`minesweeper_rules.gd:300/:306/:313/:348`、`grant_segment.gd:30/:88/:93`、`data/tables/feats.tres:615`、`smoke/smoke_all.gd:1559/:1560`、`tests/unit/core/effect_words_t1_test.gd:18/:21`)。改词表不改消费者=运行期取不到事实值;改消费者不改词表=加载期四词表校验致命。两名现行代码零占用(实测 `seals_count`/`dug_under_seal` 各 0 命中),无重名风险。 - 🔴 **非游戏语境的 flag 不动**:如 `git flag`、编译标志等(实查 game/ 内无此情况,但作为纪律登记)。 - 🔴 **与卡② 的命名接续(2026-10-18 用户补裁,v1.3 新增)**:本卡合回后,卡②(凭证件裁削批)新写的标识符一律 `seal_` 族——其效果类型名 `forgive_flag_miss` 已由同日补裁换代为 **`forgive_seal_miss`**,事件订阅写 `on: "seal_missed"`。故本卡的 V1「`flag` 零命中」在迭代 31 出口仍成立,不需要为卡② 打排除补丁。本卡执行时 `flag_missed` 必须一并改名为 `seal_missed`(原 v1.2 映射表漏列,v1.3 补入 T3.1)。 @@ -199,7 +208,7 @@ 按依赖序改(底层→上层): -1. core/effect_engine.gd:EVENTS/MINE_EVENTS 常量 "flag_hit"→"seal_hit", "flag_settle"→"seal_settle", **"flag_missed"→"seal_missed"**;天赋树合成行 :149/:152 的 `{"on": "flag_missed"}` 同步改名;头注 :9 文本随批(处数不写死,以 V1 grep 零命中为准) +1. core/effect_engine.gd:EVENTS/MINE_EVENTS 常量 "flag_hit"→"seal_hit", "flag_settle"→"seal_settle", **"flag_missed"→"seal_missed"**;**FACTS 两键:"flags_count"→"seals_count"(:51)、"dug_under_flag"→"dug_under_seal"(:52)**(v1.4 补——v1.3 的 T3.1 漏了 FACTS,改了 .tres 的 fact 值而词表不放行=加载期校验致命);天赋树合成行 :149/:152 的 `{"on": "flag_missed"}` 同步改名;头注 :9 文本随批(净 15 处,以 V1 grep 零命中为准) 2. core/minesweeper_rules.gd:flag_place→seal_place, has_flag→has_seal, flag_range_free→seal_range_free, _flag_miss_seen→_seal_miss_seen(18 处)+注释中「插旗」「雷格」替换 3. core/action_economy.gd:"flag_place"→"seal_place"(2 处) 4. core/battle_orchestrator.gd:flag_hit→seal_hit, flag_hit_premium→seal_hit_premium, _flag_consumed→_seal_consumed(17 处)+注释替换 @@ -235,7 +244,7 @@ 1. smoke/smoke_all.gd:105 处 flag_ 替换+注释/断言文本中「金币」「插旗」「雷格」替换(~50 处) 2. smoke/level_autoplay.gd:16 处 flag_ +注释「插旗」 3. smoke/ui_input_probe.gd:23 处 flag_ +注释「插旗」 -4. smoke/ui_click_probe.gd:注释「插旗」(3 处) +4. smoke/ui_click_probe.gd:净 21 处——`_flags_placed` 声明(:22)+各清空点(:263/:279/:287/:309/:330 等)改名 `_seals_placed` +注释「插旗」3 处(v1.4 订正:v1.3 只记了注释,漏 18 处标识符) 5. smoke/adventure_monte_carlo.gd:5 处 flag_ +注释 6. smoke/auto_player.gd:注释「雷格」(4 处) 7. smoke/fx_shot_probe.gd:注释「插旗」(1 处) @@ -251,6 +260,13 @@ 17. tests/unit/core/treasure_items_test.gd:flag 相关(1 处) 18. tests/run_all.gd:注释「插旗」(1 处) 19. tests/smoke/critical-paths.md:「雷格」「插旗」(2 处) +20. **smoke/screen_flow_probe.gd:净 8 处(v1.4 补列,v1.3 全漏)**——`_screen_flags()`(:50)、`_flags_text()`(:59)、`_expect_adventure_flag()`(:68)三函数改名 + 调用点(:75/:83/:91 等)。注意:本件是 L3 屏壳探针,受 `user://save.json` 断点污染的在册已知项,跑红先按该条排查再判归因 +21. **tests/unit/core/effect_words_t1_test.gd:净 2 处(v1.4 补列)**——断言 `FACTS.has("dug_under_flag")`(:18)与描述文本(:21)须随 FACTS 词表改 `dug_under_seal`,**不改即红**(与 §3 FACTS 全链契约同批) +22. **smoke/ui_probe.gd:净 2 处(v1.4 补列)**——数据行里的 flag 族键/字符串(:179 附近),逐处改名 +23. **smoke/type_glow_shot_probe.gd:净 2 处(v1.4 补列)**——`kind == "flag"`(:60)与 `op = "flag_place"`(:61) +24. **smoke/fx_probe.gd:净 2 处(v1.4 补列)**——`flag_dots` 键(:64/:65)须与发射端同名改 + +**余下 29 个净 1–8 处的文件不逐列**(净处数总和 543,V1 的 grep 零命中判据即兜网):施工期每轮以「净命中文件数递减、终态 42→0」为进度读数,发现卡片未列的落点属正常,按 §3 契约同步即可,不属卡片缺陷。 ### T6 · game/README.md+anchor.json+全量验证(≈0.5d) @@ -261,7 +277,7 @@ 5. 全局搜索验证:game/ 内 `flag`(排除 size_flags_* 和 _fatal_flag)零命中;「金币」「插旗」「雷格」「惩罚格」零命中 6. **产出物落位卡**(req-card §7:末卡必含):`reports/` 三份写齐——`iter31-实现报告-<日期>.md`(含 V1–V7 读数+改前改后同种子读数对照+实机目检总清单)、`iter31-代拍板-<日期>.md`、`iter31-反哺点-<日期>.md`(§5 每条反哺点都要有落点:06 推进句/术语表/entities.yaml/07 目检项)。**禁改 `design/` 与 `roadmap.md`** -**估时合计 ≈3.75d**。 +**估时合计 ≈3.75d**(v1.4 注:该估时按 v1.3 的旧读数定;实测面约为其 1.9 倍(净 543 处/42 文件 vs 原记 ~314 处/29 文件),但因落点高度集中在 `smoke_all.gd`(净 156 处=全集 29%)且改动是机械替换+grep 兜网,估时是否上调**归编排段/用户裁**,本卡不自改——若上调,roadmap 迭代 31 行「≈1–1.5 周」同步改)。 ## 7. 验证闸(逐需求点验收清单) diff --git a/design/research/需求卡片-凭证件裁削批-2026-10-18.md b/design/research/需求卡片-凭证件裁削批-2026-10-18.md index 01c09aef..f3f29641 100644 --- a/design/research/需求卡片-凭证件裁削批-2026-10-18.md +++ b/design/research/需求卡片-凭证件裁削批-2026-10-18.md @@ -79,7 +79,7 @@ ### 2.4 效果引擎词表 -`game/core/effect_engine.gd`:`EVENTS`(:13-16,已含 `flag_missed`,迭代 21 T3 扩签)/`EFFECT_KINDS`(:25-41,现 30 项,**无**豁免型)/`FACTS`(:50-54,含 `counter`)/`OPS`(:61-62,含 `lt`)/`DO_KEYS`(:72-75,含 `domain`=battle/adventure)。四词表出域=加载期校验致命。 +`game/core/effect_engine.gd`:`EVENTS`(:13-16,已含 `flag_missed`,迭代 21 T3 扩签)/`EFFECT_KINDS`(:25-41,**现 31 项**,v1.1 订正——原记 30 项,无豁免型;本卡 T4 加 `forgive_seal_miss` 后为 32)/`FACTS`(:50-54,含 `counter`)/`OPS`(:61-62,含 `lt`)/`DO_KEYS`(:72-75,含 `domain`=battle/adventure)。四词表出域=加载期校验致命。 ---