秘宝代码词族对齐批任务书 v1.1(C3 消解 + 事实表复核 + 编入 roadmap 迭代15③)

前提:奇物批(迭代15②)已于 2026-10-05 收口落库(合并 c571af2),
本会话前一轮的 UU 冲突态解除,可安全编辑迭代序列。

任务书修订(v1.0 → v1.1):
- §7 C3 撞批面**已消解**:② 已落库,本批为迭代 15 唯一在途需求,可独立开工。
  残留义务三条:T0 重取基线(判式换代 T5 读数 750/0、②又动数据层,§1.2 的 747
  为②前旧数禁沿用)/ T0 复核全部事实表 / 查清②"存档键正式迁移"待裁点状态。
- §2 事实表按②落库后复核修订三处:
  F1 文件数 35→**36**(`hero_info_panel_view.gd` 被②带入引用),处数 358 不变
  F3 玩家可见文案 3→**5 处**——**补入两处初查遗漏的真实玩家可见字符串**:
    `hero_info_panel_view.gd:56` `UiKit.label("魔法道具", 16, true)` 槽位标题
    `hero_info_panel_view.gd:178` `slot.tooltip_text = "魔法道具槽(空)"` tooltip
    (教训:`grep "魔法道具"` 命中 60+ 行但绝大多数是注释,字符串字面量需逐行核)
  F5 存档键引用 28→**34 处**(增量来自②带入的调用点;**②未迁移任何键名**,
    已核 `git show c571af2 -- game/core/adventure_runner.gd` 无键名改动)
- §3 组 A 补入上述两处 UI 文案,并加目检提示(C 区槽位标题与 tooltip 是玩家
  唯一会看到的「秘宝」二字)
- §1.2 判定 2 判据同步为 5 处基线

roadmap 新增迭代 15 需求③ 行(①调试整合已落籍 / ②奇物已落籍 / ③本批待开工),
标注 T0 重取基线义务与两个待用户裁点(C1 `"aux_item"` 域串是否随全族改 /
C2 `aux_items` 一名两义拆分)。

待用户裁点由 3 项降为 2 项(C3 已消解)。C1/C2 未决前不开工。
This commit is contained in:
DKChan committed 2026-10-05 07:31:56 +08:00
1 parent c571af226f
commit cde68006b2
2 files changed
+19 -20

No files matched your search

@@ -6,7 +6,9 @@
> 满足 loop engineering 八件(见 §9 逐条对照);本任务书 = 计划书八节的前五节落地,§6 任务卡为执行单元。
> **用户三项拍板(2026-10-05)**:①编入迭代 15(追加)②**全族彻底改(含数据表)** ③**断点存档键一律保留**。
> 🔴 **撞批警示(与同迭代 ② 奇物批)**:本批与 `任务书-奇物词族对齐与渠道分离批-2026-10-05.md` **撞同一批文件**(`core/level_runner.gd` · `data/tables/adventure.tres` · `core/adventure_runner.gd` 断点区),且**双方都动断点存档键**(本批禁改、②批内有"存档键正式迁移"待裁点)。**两批不得并行开工**,须串行或用户明示插队——详见 §7 C3。
> 🔴 **撞批警示(与同迭代 ② 奇物批)**:本批与 `任务书-奇物词族对齐与渠道分离批-2026-10-05.md` 撞同一批文件(`core/level_runner.gd` · `data/tables/adventure.tres` · `core/adventure_runner.gd` 断点区),且**双方都动断点存档键**(本批禁改、②批内有"存档键正式迁移"待裁点)。
> **2026-10-05 07:29 复核:② 奇物批已收口落库**(合并提交 `c571af2`,"merge: 奇物概念收口与词族对齐(迭代15②号卡·文档与数据层)")——**并行撞批风险已解除,本批可独立开工**。但 ② 已改动 `adventure_runner.gd`(46 行) / `config_db.gd` / `level_runner.gd`(10 行) / `adventure_table.gd`(113 行) / `adventure.tres`(42 行) / `relic_table.gd` / `shop_table.gd`,**本批事实表须按 T0 重新复核**(已做首轮复核,见 §2 F1/F3 修订)。
---
@@ -22,7 +24,7 @@
| # | 判定项 | 量化标准 |
|---|---|---|
| 1 | 词族换尽 | `game/` 下 `aux_*`/`AuxItem*`/`AUX_ITEM*` 出现处**仅剩 §4 白名单**(存档键 + 🔴 冲突面 + 历史留痕注释),其余全数换词 |
| 2 | 玩家可见清零 | `grep -rn "魔法道具" game/` **零命中**(现状 3 处:`battle_narrator.gd:117-118`、`bonus_interact_controller.gd:76`) |
| 2 | 玩家可见清零 | `grep -rn "魔法道具" game/` **零命中**(2026-10-05 收口后复核现基线 = **5 处玩家可见字符串**,见 §3 组 A;其余 60+ 命中均为注释,由组 D 清) |
| 3 | 重闸全绿 | 冒烟 **747/0**(现基线,迭代 15 前实测值)· 十一探针全绿 · MC 逐位对拍**零漂移** · doc 三闸**对基线零新增** · 熵增闸 PASS |
| 4 | 人闸完成 | 目检清单过 + 代拍板追认清单过 + §8 白名单外无代拍板 |
| 5 | 收口五步 | active.md 快照 / 台账条目 / roadmap 里程碑行 / stage.txt(如变)/ 闸序列留痕 |
@@ -33,11 +35,11 @@
| # | 事实 | 读数 |
|---|---|---|
| F1 | `aux_*` / `AuxItem*` 词族规模 | **358 处 / 35 文件**(`game/` 下 `.gd` + `.tres`) |
| F1 | `aux_*` / `AuxItem*` 词族规模 | **358 处 / 36 文件**(`game/` 下 `.gd` + `.tres`)——⚠️ **2026-10-05 收口后复核:文件数 35→36**(`presentation/views/hero_info_panel_view.gd`,奇物批带入引用),处数不变 |
| F2 | 重灾文件 | `core/adventure_runner.gd`(79) · `core/level_runner.gd`(27) · `presentation/bonus_interact_controller.gd`(19) · `core/battle_orchestrator.gd`(18) · `smoke/smoke_all.gd`(14) · `presentation/aux_interact_controller.gd`(14) · `core/config_db.gd`(14) · `presentation/main.gd`(13) |
| F3 | 玩家可见「魔法道具」文案 | **3 处**:`battle_narrator.gd:117` `battle_narrator.gd:118` `bonus_interact_controller.gd:76` |
| F3 | 玩家可见「魔法道具」文案 | **⚠️ 2026-10-05 收口后复核 = 5 处**(初查 3 处,漏 2 处 UI 文案):`battle_narrator.gd:117` · `battle_narrator.gd:118` · `bonus_interact_controller.gd:76` · **`hero_info_panel_view.gd:56`**(`UiKit.label("魔法道具", 16, true)` 槽位标题)· **`hero_info_panel_view.gd:178`**(`slot.tooltip_text = "魔法道具槽(空)"` 悬停提示) |
| F4 | 🔴 **`battle_narrator.gd` 同屏两义共现** | 117-118 行输出"魔法道具" ‖ 同文件 **139 行** `arch_names := {"magic": "魔法", ...}` = 敌方伤害语汇——同一 narrator 内两义并存,是歧义的**唯一真实暴露点** |
| F5 | 断点存档键(**禁改**) | `bonus_aux_carry` · `aux_detail` · `aux_cleared` · `aux_cleared_last` · `aux_items`(断点快照数组)· `attunement_charges` —— **28 处引用**(读 28 / 内部变量 26) |
| F5 | 断点存档键(**禁改**) | `bonus_aux_carry` · `aux_detail` · `aux_cleared` · `aux_cleared_last` · `aux_items`(断点快照数组)· `attunement_charges` —— **2026-10-05 收口后复核 = 34 处引用**(初查 28 处,增量来自②奇物批带入的调用点;**②未迁移任何键名**,diff 核实无键名改动) |
| F6 | 🔴 **冲突面:`aux_items` 一名两义** | 既是**断点存档键**(`adventure_runner.gd:976` 写入 / `:951-953` 读取,跨局持久,改名即破档)**又是** registry 条目键与 ConfigDB 持有变量名(`config_db.gd:50` `var aux_items: AuxItemTable`)——**同一字符串,语义不同层** |
| F7 | 🔴 **冲突面:`"aux_item"` 是加载期校验域串** | `reward_table.gd:15` `CELL_TYPES` 封闭枚举含 `"aux_item"`(十型之一)· `:16` `AUX_ITEM_TYPE` 常量 · `smoke_all.gd:3932-3933` **断言 `CELL_TYPES.size() == 10` 且 `has("aux_item")`** —— 改此串 = 改 schema 契约 + 改 .tres 数据行 + 改冒烟断言,**三重连锁** |
| F8 | Godot 类名/文件名 | `AuxItemTable`(schema) · `aux_items.gd` · `aux_item_table.gd` · `aux_interact_controller.gd` —— 改名须同步 `.uid` + `.tscn` 引用(迭代 14.5 有实证先例:主区跑前须 `--import` 重刷类名缓存) |
@@ -53,8 +55,12 @@
| `presentation/battle_narrator.gd:117` | `return "魔法道具\n%s" % aux_line` | `return "秘宝\n%s" % aux_line` |
| `presentation/battle_narrator.gd:118` | `return "魔法道具\n随机获得一件"` | `return "秘宝\n随机获得一件"` |
| `presentation/bonus_interact_controller.gd:76` | `toast.show_toast("上关剩余 %d 件魔法道具已随关卡结束清空" ...)` | `"上关剩余 %d 件秘宝已随关卡结束清空"` |
| **`presentation/views/hero_info_panel_view.gd:56`** | `col.add_child(UiKit.label("魔法道具", 16, true))` | `UiKit.label("秘宝", 16, true)` |
| **`presentation/views/hero_info_panel_view.gd:178`** | `slot.tooltip_text = "魔法道具槽(空)"` | `slot.tooltip_text = "秘宝槽(空)"` |
> **后两处是 2026-10-05 收口后补入的**(初查仅命中 3 处,漏了 UI 标签与 tooltip 两处——`grep "魔法道具"` 命中 60+ 行但绝大多数是注释,**这两处是真实玩家可见字符串**)。
> **组 A 独立成一个提交**——它是本批唯一有玩家可见效果的部分,先行落地上游台账可独立验收。**F4 两义共现随本组一并消解**(117-118 改后同屏不再出现两个"魔法")。
> **目检提示**:组 A 落地后须实机确认 C 区槽位标题与悬停提示——这是玩家唯一会看到的「秘宝」二字。
### 组 B · schema 与数据表文件(类名 + 文件名 + @export)
@@ -180,24 +186,16 @@
> **我方倾向:甲 + 强制注释标记**——变量改词,存档键在代码旁加显式注释 `// 🔴 存档键,历史名,禁改(2026-10-05 用户拍板)`。**须用户拍板**。
### C3 · 与同迭代 ② 奇物批的串行次序(🔴 **开工前必须定**)
### C3 · 与同迭代 ② 奇物批的串行次序(✅ **2026-10-05 已消解**)
**事实冲突**:两批同属迭代 15、**撞同一批文件**、**双方都动断点存档键**。
**原事实冲突**:两批同属迭代 15、**撞同一批文件**、**双方都动断点存档键**。
| 撞点 | 本批(③秘宝) | ② 奇物批 | 冲突性质 |
|---|---|---|---|
| `core/level_runner.gd` | 改 `restore_aux_items` / `grant_aux_item` / `aux_inventory` 等 | 动 `feature_*` / `relic_*` / `bonus_*` 词族 | 🔴 **同文件不同词族**,机械替换易误伤 |
| `data/tables/adventure.tres` | 只改注释(`aux_item` 池种退役注记) | 改数据行(`feature_*` → `curio_*` 键) | 🔴 同文件,数据 vs 注释混层 |
| `core/adventure_runner.gd` 断点区 | **禁改**(`bonus_aux_carry` / `aux_items` 键) | 有"存档键正式迁移"待裁点 | 🔴 **若 ② 先迁移键名,本批的禁改清单失效** |
| 冒烟基线 | 待 T0 取实际值 | 同样待取 | 🟡 两批先后跑,基线数字不同 |
**✅ 消解结论(2026-10-05 07:29 复核)**:② 奇物批**已收口落库**(合并提交 `c571af2`),**并行撞批风险解除**。本批现为迭代 15 唯一在途需求,可独立开工。
| 方案 | 做法 | 风险 |
|---|---|---|
| **甲** | ② 先走完(其 T3 出口 = 切分点),③ 开工时**重新取基线**并复核本批事实表 F1–F10 | 🟢 串行无冲突;代价 = ③ 起点后移 |
| **乙** | ③ 先走,② 延后 | 🟡 ③ 改动面小(5 组),先跑代价低;但 ② 的"存档键迁移"待裁点会因 ③ 的"禁改"约束而需重议 |
| **丙** | 两批并行 | 🔴 **禁止**——同文件同区域机械替换,必生不可定位的冲突 |
> **我方倾向:甲(② 先走)**——② 的 T8 涉及"存档键正式迁移"这一未裁事项,若 ③ 先动完代码再由 ② 迁移键,等于让 ③ 的禁改清单被单方面作废。**须用户拍板并定次序**。
**⚠️ 残留义务**:
1. **T0 须重新取基线**——② 已把冒烟推进(判式换代批 T5 出口读数 **750/0**、奇物批又动数据层),§1.2 的 747 是②之前的旧数,**禁止沿用**。
2. **T0 须复核 §2 全部事实表**——② 改动面覆盖 `adventure_runner.gd` / `config_db.gd` / `level_runner.gd` / `adventure_table.gd` / `adventure.tres` / `relic_table.gd` / `shop_table.gd`,其中 `adventure_runner.gd` 是本批 F2 第一重灾文件(79 处)。
3. **② 的"存档键正式迁移"待裁点状态须查清**——若 ② 已迁移了 `bonus_aux_carry` / `aux_items` 等键名,本批 §4 的禁改清单须同步更新(**这是本批唯一仍需向用户确认的残留项**)。
## 8. 代拍板白名单