fix(slice): 战斗阶段七项修复 + 顺手修七项 + 文档口径收编(含全仓语义命名清理)

代码修复(垂直切片,冒烟 193/193 · 三探针全绿):
- 遭遇流盐值修正(旧值超 int64 被截断,与 registry 黄金向量不符)+ 黄金向量断言入冒烟
- 完美排雷第二份按身份类型真实兑付;零兑付不发高光行;失败记"奖励未生效"行
- 轮内刷新图 provenance 守卫:刷新图清图不发清图奖励
- 可推理率求解器禁读雷位真值(no-peek)——L1/L2 实测 0.953/0.951、一次生成即达标
- 清图分类改传真实旗集(空旗集捷径会误判批次优先级)
- 达标判定回归单一判据(可推理率 ≥ 及格线)
- 等待期(Waiting)刷新通道整体拆除——非清图轮恒同图

顺手修:清图轮剩余 AP 当场清零 + 耗尽轮断言;degraded_product 降级标记;产物雷数 ≤N 断言;
明细流水"无来源即炸"及两层豁免成文;主角零值伤害行;窗口段三锚行(13→15 类行协议);
图标键 fail-fast + 补齐暴走/失衡两键。

文档:可选类注入递减基准改"按实际获取件数"、首件保证改"必注入"口径(+未挖到不补发待办);
教学位掷骰口径自洽;标错反噬三池收编(状态表四行→六行);行协议 13→15 与豁免清单回写
《战斗结算》与 registry,下游引用同步收敛。

另含:全仓旧代号→语义命名清理(注释/标识符,81 文件);CLAUDE.md 登记 Godot 路径与验证命令。
This commit is contained in:
DKChan committed 2026-09-15 20:46:21 +08:00
1 parent 9cca04c9af
commit cb548776e0
89 files changed
+2139 -2230

No files matched your search

+2 -2
View File
@@ -110,7 +110,7 @@
| 模块 | Owns | Exposes | Consumes | 引擎 API |
|---|---|---|---|---|
| **battle_orchestrator**(B1) | 段序骨架(七段结构冻结)、轮 facts 缓冲、可回放步骤流、明细行协议(13 类行 + 字段分层)、条款③⑤闭合对账、**战斗域全部跨系统调用权** | `begin_battle(encounter)`;窗口/刷新意图提交面(扮演 D1);`level_clear()`;步骤流(输出契约) | B2/B3/B4 全调用面(**唯一调用方**);A3 request_refresh 代理 + 回发;A2 install/retire + 三事件订阅;A1 generate(attempt 非 scope 事件);D2 SettlementTable + set_reload_gate | 无(零随机、禁 await——切片 88 冒烟实证可回放) |
| **battle_orchestrator**(B1) | 段序骨架(七段结构冻结)、轮 facts 缓冲、可回放步骤流、[明细行协议](../../design/gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)(15 类行 + 字段分层)、条款③⑤闭合对账、**战斗域全部跨系统调用权** | `begin_battle(encounter)`;窗口/刷新意图提交面(扮演 D1);`level_clear()`;步骤流(输出契约) | B2/B3/B4 全调用面(**唯一调用方**);A3 request_refresh 代理 + 回发;A2 install/retire + 三事件订阅;A1 generate(attempt 非 scope 事件);D2 SettlementTable + set_reload_gate | 无(零随机、禁 await——切片 88 冒烟实证可回放) |
| **level_runner**(C1-lite,切片已建) | 关卡域生命周期(节点链推进、共享 B4 + HP 携带、关卡末 level_clear) | 节点推进接口;LevelTable(`level.tres`——节点 enum {battle,reward,rest,boss}、末节点必须 Boss、ConfigDB 跨表校验⑧) | B1 begin_battle、B4 grant_node_active、ConfigDB LevelTable | 无 |
| **run_structure**(C2) | 冒险/关卡序列、失败重开、**master_seed 唯一接线方** | (未设计) | RngService.set_master_seed、C3/D2 | 无 |
| **difficulty**(C3) | DifficultyTable 回填、全部曲线数值调参所有权、战斗期望表(切片 monte_carlo 为工具原型) | 调参输出(经 D2 R1 解析/编排器传递,禁反向调用生成) | ConfigDB、B1 对账输出(调参约束清单)、A1 报告 C | 无 |
@@ -193,7 +193,7 @@ D1 ◀──呈现数据源:A2 事件流 / B1 步骤流 / A3 ap-rap / ConfigDB
| A1 → A2 | Board 产物 class_name 数据契约 | install 四不变式校验(violation = 拒绝 + 五类诊断枚举) | 生成期合法性闸(R₀≠S / clearable / min_safe) |
| A1 ↔ B1 | attempt 边界非 scope 事件;actuals p10 为对账输入(非 target 参数) | 编排不把重试当取号 | 八项指标输出(含 fog_burden_ratio) |
| B4 → B3 | buff 类经 B1 调 apply_effect(B4 零跨系统读、零直接接口) | 满层拒绝 = 零兑付 + 明细行(无折算) | 授予时数值快照(抗热重载) |
| B1 → D1 | 步骤流行协议(13 类封闭枚举 + 公共字段 type/source_class/origin_cell/round_index/display_name/value/highlight? + 特有字段 target/effect_id/pool_value) | 无来源行 = 断言失败;呈现侧禁按行序重演 B2 状态机 | 可回放步骤流(同种子逐行相同) |
| B1 → D1 | [步骤流行协议](../../design/gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)(15 类封闭枚举 + 公共字段 type/source_class/origin_cell/round_index/display_name/value/highlight? + 特有字段 target/effect_id/pool_value) | 无来源行 = 断言失败;呈现侧禁按行序重演 B2 状态机 | 可回放步骤流(同种子逐行相同) |
**引擎类型核验注记**:接口使用的引擎类型 = Resource / .tres(D2 全表)、RefCounted(容器类)、Signal/Callable(事件载体,ADR-0001)、Control/CanvasLayer/Drawing(D1)、SceneTree headless 协议(测试)——均属 4.x 基线稳定面;4.7 Control 域增量(offset_transform_* 等)已在 breaking-changes.md 登记,D1 采纳前对照核实。
-38
View File
@@ -1,38 +0,0 @@
# Consistency Failure Log
<!-- Auto-maintained by /consistency-check. Do not edit manually. -->
<!-- One entry per detected conflict, in chronological order. -->
| Date | GDD A | GDD B | Conflict Type | Status |
|------|-------|-------|---------------|--------|
| 2026-09-09 | b4-reward-item-economy | registry (rng_service) | 🔴 错引条目名 + 过期语义 | RESOLVED 同日 |
| 2026-09-09 | b4-reward-item-economy | registry (status_effect.b1_obligations) | 🔴 义务编号错引 | RESOLVED 同日 |
| 2026-09-12 | registry (reward_table/reward_config) | b4-reward-item-economy / d2-data-config | 🔴 09-11 批 fields 行漏网 ×2 | RESOLVED 同日 |
### 2026-09-09 — /consistency-check — 🔴 CONFLICT
**Domain**: 奖励经济 × 数据配置(RNG 流语义)
**Documents involved**: b4-reward-item-economy.md(Overview/Rule 2/Dependencies 三处)vs registry entities.yaml(rng_service.scope_event_binding)
**What happened**: B4 三处引用 "`board_gen.scope_event_binding`…每次奖励结算"——条目名错引(该属性属 rng_service)且为 Phase 5b 改写前旧语义;定稿批回写 registry 后 GDD 正文未同步。
**Resolution**: B4 三处改引 `rng_service.scope_event_binding` + 新语义(每次 board install 批)+ 回写义务标已兑现。EXECUTED 同日。
**Pattern**: 接口漂移回写 registry 后,**发起 GDD 自身正文中的旧写法必须同批清扫**——回写义务条款在兑现后要标记状态,否则留下"义务已尽但正文仍说待办"的自相矛盾;跨条目引用(scope_event_binding 属 rng_service 非 board_gen)写全条目名可避免。
### 2026-09-09 — /consistency-check — 🔴 CONFLICT
**Domain**: 奖励经济 × 状态系统(义务清单交叉引用)
**Documents involved**: b4-reward-item-economy.md(Rule 3)vs registry entities.yaml(status_effect.b1_obligations ⑥/⑧)
**What happened**: B4 Rule 3 引"(B1 义务⑥ 同款协议)"指代满层"奖励未生效"明细行协议——但 B3 清单⑥ = decay_round 恰一次、B4 自有清单⑥ = roll_board 恰一次;该协议实际落点是 B3 ⑧ / B4 B1×6 ②。项目内并存多套"B1 义务清单",裸编号"义务⑥"产生歧义引用。
**Resolution**: 改为"B1 义务②〔本 GDD 清单〕/ B3 义务⑧ 同款协议"。EXECUTED 同日。
**Pattern**: **义务清单编号引用必须带清单限定词**("B3 义务⑧"而非裸"义务⑥")——同一接收方(B1)已累积 4 套清单(B3×8/B2×6/A2×3+2/B4×6),裸编号在多清单语境下不可解析。
### 2026-09-10 — /consistency-check — 🔴 CONFLICT
**Domain**: 战斗结算(B1 内部 AC 交叉引用)
**Documents involved**: b1-settlement.md(AC 节内部——qa-lead 代理交付稿)
**What happened**: 9 处 AC 编号误引——AC-13×2/AC-28 引"AC-34"(应为 AC-35/AC-36)、AC-24/AC-27 引"AC-30"(应为 AC-31)、前言负空间引"AC-29/AC-14"(应为 AC-30 腿1/AC-15 腿1)、AC-12 腿4 引"AC-27"(应为 AC-28)、out-of-scope 调参重跑清单缺 AC-36/37/40。
**Resolution**: 9 处同日修正(定向 /consistency-check 抓获——写入后即查)。
**Pattern**: **专家代理交付的长 AC 稿必须做编号引用自洽扫描**(引用的 AC 号 vs 被引 AC 实际内容)——qa-lead 起草过程中 AC 编号重排后交叉引用未随批更新,与"义务清单编号引用必须带清单限定词"同族的编号可解析性问题;建议 /design-system 的 AC 节写入后固定跑一次 `grep "AC-\d+" 交叉核对`。
### 2026-09-12 — /consistency-check — 🔴 CONFLICT
**Domain**: 奖励经济 × 数据配置(2026-09-11 两级奖励批 registry 回写完整性)
**Documents involved**: registry entities.yaml(reward_table.fields.category / reward_config.fields.p_min)vs b4-reward-item-economy.md L56 / d2-data-config.md L42–43
**What happened**: 2026-09-11 两级奖励批回写时 registry 同条目"改了 mechanics/头注、漏了 fields 行"×2——① category fields 行仍三值(同条目 mechanics 行已五值,自相矛盾);② p_min fields 行仍默认 4(同文件头注已记"p_min 4→8"、D2 行已 8)。
**Resolution**: 已执行(2026-09-12 用户批准):registry 两行修正完成(category 五值 / p_min 默认 8),复查扫描旧值清零。
**Pattern**: **接口漂移批的高发漏网点 = "散文/注释行改了、YAML fields 行没改"**——registry 条目内 fields 与 mechanics/头注是三处独立文本,批量改写须逐处 grep 旧值;本例与 2026-09-09"错引条目名"教训同族(回写完整性核查),修复后应将"fields 行 vs mechanics 行一致性"纳入 /consistency-check 固定检查项。
-31
View File
@@ -1,31 +0,0 @@
# Consistency Check Report — 2026-09-08(B3 定稿后定向 · 第二次)
- **Scope**: full · Registry 条目: 9(config_db / rng_service / stream_seed_derivation / difficulty_row_resolution / schema_version / action_economy / variation_table / variant_pool_gate / **status_effect✨ 新增**)
- **GDDs scanned**: d2-data-config · a3-action-economy · a4-terrain-variation · **b3-status-effect✨**
- **触发**: /design-system B3 定稿同日回填后的漂移检查
## Conflicts Found
无 🔴 冲突。
## Stale / Pending Write-backs(2 项——均已同日执行)
⚠️ **D2 Tuning Knobs 占位未随 B3 定稿删除**(d2-data-config.md Tuning Knobs 节)
- D2 自家规则"占位参考值定稿时必须删除对应条目"(A3 三轮回填先例同款);"增伤 1.5× / 减伤 0.5× / 持续 2 次结算(B3)"已随 B3 四行定稿失效
- → Resolution: **已执行(2026-09-08 同日)**——三值删除(划线保留痕迹),事实登记归 registry `status_effect`;owner 行 B3 标 ✓
⚠️ **B3 Overview 内部口径滞后**(b3-status-effect.md Overview 第二段)
- "标中旗 debuff 档位归 B4、敌方增益归 B2"写于 Rule 10 收编决策之前,与 Rule 10"四行定稿权归 B3"存在读法张力
- → Resolution: **已执行(2026-09-08 同日)**——Overview 改写为"经济归属归各锚 owner(锚验收权 B4/B2/B1),四行 MVP 初值定稿权经 Rule 10 收编归本 GDD",与 Rule 10 / registry ownership_note / 索引门禁记录四方对齐
## Unverifiable / Informational
ℹ️ **A3 GDD"档位归 B4"表述 vs B3 Rule 10 收编**:已治理分叉——systems-index 门禁增补记录(2026-09-08 B3 块)明文"A3 GDD(Approved)不改,以索引条 + registry ownership_note 为准"。非冲突。
ℹ️ **A4 三条定价硬约束的"最低档安全格 buff 当量"**:B3 定稿后参照对象 = attack_up 行(+50%×d2);A4 未曾定值,零数值冲突;对照闭合归 B1(条款 1 对照表)。
ℹ️ **weaken 条款 2 锚红色预警**:已知项(B3 Formulas 预警 + registry status_effect.anchor_warning + 索引 B1 强制检查点输入登记),非本次新发现;B1 对照验收优先裁决。
## Clean Entries
✅ config_db · rng_service(流封闭清单一致,combat_var 无复现)· stream_seed_derivation · difficulty_row_resolution · schema_version · action_economy(AP 8 跨文档引用一致;referenced_by 已增 B3——F2 AP 界只读消费)· variation_table(fog 行 GDD/D2/registry 三方一致)· variant_pool_gate · status_effect(GDD/D2 Core Rules 行/registry 三方同日同步一致)
**Verdict: PASS**(0 冲突;2 项 drift——同日核销)
-25
View File
@@ -1,25 +0,0 @@
# Consistency Check Report — 2026-09-08
- **Scope**: 定向(A4 定稿回填后)· Registry 条目:8(config_db / rng_service / stream_seed_derivation / difficulty_row_resolution / schema_version / action_economy / variation_table✨ / variant_pool_gate✨)
- **GDDs scanned**: d2-data-config · a3-action-economy · a4-terrain-variation
## Conflicts Found
无 🔴 冲突。
## Stale / Pending Write-backs
⚠️ **D2 Core Rules 表 VariationTable 行(占位描述落后于 owner 回填)**
- D2 占位:`变异类型枚举 + biome/tag 数据字段(AD 门禁)| 按 variant_id(含 unlock_level 列)| A4`
- A4 已定稿:8 字段 schema + fog 行(D2 接口漂移规则的**预期演化**,非冲突);按漂移规则,owner 回填须回写 D2 Core Rules 表行 + Status 行——**待执行**(A3 三次回填同款义务)。
- → Resolution: ~~更新 D2 Core Rules 表行与 Status 行~~ **已执行(2026-09-08 同日核销)**:VariationTable 行已标注"已回填定稿(2026-09-08 A4)+ Rule 4 豁免注明",D2 Status 行已登记 A4 回填。
## Unverifiable / Informational
ℹ️ **A3 F1 条款 5 括注示例被 A4 定稿超越**:A3 原文"可推理率越低(迷雾/终局 50/50 越多)"——A4 承重规则(雾区无雷)下迷雾不再产生 50/50,不再作为可推理率减项。条款本体(B1 闭合对账)不变;A4 Interactions 与 registry `variation_table.fog_ap_note` 已登记 B1 对账注记,随 B1 GDD 消化。Approved 文档 A3 不改。
## Clean Entries
✅ rng_service/board_gen(scope 绑定口径一致)· config_db(单点访问)· action_economy(AP 8 / 旗 1 AP 引用一致)· variation_table / variant_pool_gate(源=A4,自洽)· difficulty_row_resolution / stream_seed_derivation(A4 显式不消费,文档化)· schema_version(间接承载)。
**Verdict: PASS**(0 冲突;1 项漂移规则回写——已执行)
-26
View File
@@ -1,26 +0,0 @@
# Consistency Check Report — 2026-09-09(A1 定稿后定向)
- **Scope**: full · Registry 条目: **10**(config_db / rng_service / stream_seed_derivation / difficulty_row_resolution / schema_version / action_economy / variation_table / variant_pool_gate / status_effect / **board_gen_table✨ 新增**)
- **GDDs scanned**: d2-data-config · a3-action-economy · a4-terrain-variation · b3-status-effect · **a1-board-generation✨**
- **触发**: /design-system A1 定稿同日回填后的漂移检查(本会话第二次收口检查)
## Conflicts Found
无 🔴 冲突。
## Stale / Pending Write-backs(1 项——已同日执行)
⚠️ **D2 Dependencies 表 A1 行滞后于回填**(汇总行未含 BoardGenTable 回填字样;权威的 Core Rules 表行已更新)
- → Resolution: **已执行(2026-09-09 同日)**——A1 行改为 "BoardGenTable 回填(首个进度键表)+ VariationTable schema + board_gen 流",与 A3/A4 行口径对齐
## Unverifiable / Informational
ℹ️ **rng_service 快照契约的 A1 具体化**:A1 F5 "attempt 边界 = 生成函数完整返回"是 D2 快照契约(消费方 D3)的 A1 侧操作定义——补充细化非冲突,registry `board_gen_table.mechanics` 已登记。
ℹ️ **combat_var 零复现**:仅存于 registry 历史注记与 `gdd/reviews/` 归档备份(非活文档)。
ℹ️ **B3 上轮核销项复核在位**:Overview 收编括注 ✓ · D2 Tuning Knobs 三值删除 ✓ · status_effect 三方一致 ✓。
## Clean Entries
✅ config_db · rng_service(board_gen scope 绑定与 A1"一图一取号"一致)· stream_seed_derivation · difficulty_row_resolution · schema_version · action_economy(referenced_by 含 A1,dig_ap_cost 只读引用一致)· variation_table(f≤8d/⑫ 与 A1 F2 一致)· variant_pool_gate · status_effect · **board_gen_table(GDD/D2/registry 三方同日同步)**——全部 GDD 零占位残留。
**Verdict: PASS**(0 冲突;1 项 drift——同日核销)
-60
View File
@@ -1,60 +0,0 @@
# Consistency Check Report(B4 定稿后定向)
Date: 2026-09-09
Registry entries checked: 17(services 2 · schema_data 8 · formulas 3 · constant_set 1 · glossary 1 · constant 1 · 其他 1)
GDDs scanned: 8(d2 / a3 / a4 / b3 / a1 / a2 / b2 / b4)+ game-concept(两处登记对齐项专查)
Scope: B4 定稿后定向(沿 B3/A1 定稿后定向检查先例)
---
## Conflicts Found
### 🔴 C1 — B4 引用错误条目名 + 过期语义(3 处)
- Registry(source: rng_service):`scope_event_binding.reward_roll = "每次 board install(格奖励批 + 清图奖励批)"`(2026-09-09 B4 定稿批改写)
- B4 GDD 三处(Overview / Rule 2 语义注记 / Dependencies ②)写作 "`board_gen.scope_event_binding` … '每次奖励结算'"——**条目名错引**(board_gen 无该属性)且为回写前旧语义
- Resolution(EXECUTED 同日):B4 三处改为 `rng_service.scope_event_binding` + 新语义;Rule 2/Dependencies 回写义务标"已兑现"。registry 为权威侧(owner 授权漂移),B4 文本系回写前写法,非设计分歧。
### 🔴 C2 — B4 Rule 3 义务编号错引
- B3 registry `status_effect.b1_obligations` ⑧ = "溢出未生效"行进结算明细协议;B4 自有 B1×6 之② = 满层零兑付 + "奖励未生效"行
- B4 Rule 3 原文"(B1 义务⑥ 同款协议)"——两套清单的⑥(decay_round / roll_board 恰一次)均非该协议
- Resolution(EXECUTED 同日):改为"B1 义务②〔本 GDD 清单〕/ B3 义务⑧ 同款协议"。同文件另两处"义务⑥"(资格格清单供给,AC 节/Dependencies)指向 roll_board 恰一次,**引用正确、未动**。
### ⚠️ S1 — game-concept 第 144 行过期(主动道具)
- game-concept(待定问题):"[ ] 主动道具——后续版本加入;B4 GDD 预留'使用时机'字段"
- B4 定稿(2026-09-09 用户拍板):MVP 激活(轮末结算前道具使用窗口;use_timing 单值 pre_settlement 承重)
- Resolution(EXECUTED 同日):game-concept 改为 [x] 定稿条目(沿第 145-147 行 A3 修订注记同款格式)。
### ⚠️ S2 — game-concept 第 3 行参照口径(Peglin 道具跨循环累积)
- game-concept 参考行:"道具跨循环累积"(Peglin 参照特性,无战斗域界定)
- B4 定稿:库存 = 战斗域(跨轮次跨图累积、battle_over 全清不跨战斗)
- Resolution(EXECUTED 同日):参考行加 B4 定稿口径括注(与 Peglin 跨战斗持有显式区分)。非锁值冲突——参照描述对齐。
### ℹ️ T1 — 术语登记补漏
- B4 首创术语"资格格"(GDD 内已有白话内联定义)未入 registry terminology——用语纪律(CLAUDE.md 2026-09-09)要求登记
- Resolution(EXECUTED 同日):terminology 增词条 + referenced_by 增 B4。
---
## 核实一致的关键声称(抽样)
✅ B3 source_class 四值枚举 `{safe_cell, flag_hit, mine_hit, clear_reward}`(B3 Rule 3 原文核对)——B4"已在枚举内"声称成立
✅ A2 `reward_eligible` 口径(initial false / chain·dig∧safe true 含雾格 / mine false)与 B4 F1 资格格集 = S∖R₀ 等价
✅ enemy hp=18 ×unit_count 3 = 54(B4 Tuning Knobs "3 单位 54 需求")与 registry enemy.hp 一致
✅ dig_ap_cost=1(B4 缺口预检 2 分母引用)与 registry action_economy 一致
✅ defense_up max_stack=2(B4 E3/F 预警④ "13 格链 × max_stack=2")与 registry status_effect 一致
✅ B4 AC-20① 断言的 registry 措辞与实际写入逐字一致
✅ D2 六处回写与 B4 Rule 9 字段清单/registry reward_table 八键一致
✅ A3 条款④⑤、A4 三约束的引用措辞与 registry action_economy.downstream_contract / variation_table.pricing_constraints 一致
---
## Verdict
**PASS(修正后)**——2 🔴 + 2 ⚠️ + 1 ℹ️ 全部同日修正落盘(drift write-back EXECUTED);无未决冲突。
修正涉及文件:`b4-reward-item-economy.md`(4 处)· `game-concept.md`(2 处)· `entities.yaml`(terminology 词条 + referenced_by)
-78
View File
@@ -1,78 +0,0 @@
# 一致性检查报告(2026-09-12,lore 换轴概念层增补后全量)
> Scope: full · 触发:世界观换轴(惩罚格类型化/控制/坍塌显形)落地后的例行检查 · 方法:grep-first + 疑点定点深查
> Registry: 23 登记项(实体 14 / 公式 6 / 常量与公式集、词汇表 27 词条)
> 扫描面:GDD ×10(a1–a4 / b1–b4 / c3 / d2)+ 专查 game-concept / game-pillars / design/ux/battle.md / design/ux/interaction-patterns.md / registry / production/session-state(33+ 条目)
## 结论
**CONFLICTS FOUND**——2 项 🔴(registry 2026-09-11 批行内字段漏网,文本级、修复分钟级)+ 2 项 ⚠️(概念层措辞/命名登记级)+ 4 项 ℹ️(核实为在案事项)。**零数值冲突、零结构冲突、零接口冲突、零阻断**;23 项登记项中 21 项跨文档零冲突。
---
## 🔴 冲突(须修,均已定位到行)
### 🔴-1 registry `reward_table.fields.category` 三值残留(2026-09-11 批漏网)
- registry fields 行:`enum {buff, damage_item, heal_pack}——MVP 恰三值`
- 事实源:B4 GDD L56 与 D2 L42 均为 **五值** `{buff, damage_item, heal_pack, instant_aoe, instant_heal}`(两类交付轴);**registry 同条目的 mechanics 行也已写"category 五值枚举"**——同条目内自相矛盾,fields 行漏改。
- 修复:registry fields 行改五值(owner=B4 口径代修)。
### 🔴-2 registry `reward_config.fields.p_min` 默认 4 残留(同批漏网)
- registry fields 行:`默认 4 = 默认根最低刀 power`
- 事实源:D2 L43 = `默认 8`(2026-09-11 批);**registry 本文件头部修订注释自己记了"reward_config p_min 4→8"**——注释改了、字段行没改。
- 修复:registry 默认 4→8(owner=B4 口径代修)。注:entry 21(可选类供给控制器)批将再度改写刀供给/K_dmg=0/active_p0 等(已登记"B4/registry 改写待文档批"),p_min 最终语义随该批走;4→8 这个中间态修正无争议可先行。
---
## ⚠️ 漂移(登记级,本检查新抓)
### ⚠️-1 概念层换轴措辞碰撞:B1 L29 / B3 L22 "雷是赌桌不是陷阱"
- 2026-09-12 lore 换轴后"陷阱"成为惩罚格类型词表一员(未来类型:直接扣血),该句字面可误读为"雷格不是陷阱类型的惩罚格"。句子本意(雷是争夺中的资源、非单向环境危险)在新正典下反而更成立——实际风险低。
- 处置:不动机制 GDD;登记进 lore 记录③;措辞更新归 B1/B3 各自下一批修订(候选替换:"雷是赌桌不是死局")。
### ⚠️-2 lore ② 敌种叙事行与切片 DND 命名错位
- session-state entry 91(2026-09-12 v3 批):切片 enemy_id 已更名 **goblin / bugbear / ogre_chief**(DND 命名批);registry / B2 / D2 / C3 GDD 仍为 grub / ambusher / boss_guardian(待文档批,与 entry 37 同族)。
- lore 记录②"敌种叙事身份轴"以 grub(蛆虫=腐巢爬虫)为锚——DND 名下"巢居虫群"意象需换皮(goblin/bugbear 仍可作"巢穴居民",蛆虫意象作废)。
- 处置:随 enemy 文档对账批一并处理;lore 侧届时按正式 enemy_id 重写叙事行。
---
## ℹ️ 核实为"已知/在案"(非新发现,列出以防重复登记)
1. **C3 L236/267 `refresh_max_per_round` vs registry/A3/B1 `refresh_cap_per_round`**——session-state entry 35 已登记:切片 provisional 名 vs GDD 正式名、语义一致,正式 D1 批统一命名。在案。
2. **B3 正文 weaken −25 ×4 处 + 🔴 预警两处(L195/237)未关**——2026-09-10 检查已裁定 documented-exception(registry F0 回执"正文不改以本条为准"收编先例覆盖),维持原判。建议 B3 下一批补一行 F0 关闭回执注记(两处红警读作已裁决),并顺带更正 B1 L422 回执措辞("B3 GDD 行表"实际未回写,按收编先例口径)。
3. **registry `reward_table.direction_precheck` 旧预检(40%×5=2|资格格|)**——B4 L219 已重算(19%×9.7≈1.8|资格格|),entry 21 供给控制器批再 supersede 且已登记"B4/registry 改写待文档批"。随批。
4. **D2 三处文本级残留**:L225"category 三值封闭/AOE 不入 MVP"(五值批前旧注);L44 SettlementTable 行"七字段/pool_clamp_lo_hi/p_perfect [100,999]"(clamp 部分已有收编注记,**p_perfect 域 {100,200} 无收编覆盖——D2 schema 层与 B1 载体域两层校验分歧,建议随批优先**);L42 RewardTable 默认根枚举小滑差(旧五行集并列残留 / 八行枚举漏 clear_knife / attack_up 缺 _basic 后缀)。→ 归入 entry 21/37 文档对账批。
---
## 已登记待办批(session-state 在案,本检查确认仍在册——对账批输入清单)
| 来源批 | 待回写面 |
|---|---|
| entry 21 可选类供给控制器 | clear_blast 40 / active_inject 60-30-10 / active_p0-decay / K_dmg=0 → B4 GDD F5 + registry reward_table/reward_config |
| entry 27/35 轮内刷新 | A3/B1/B4 GDD + game-concept 层级措辞 + registry;refresh 字段名统一归正式 D1 批 |
| entry 33 遭遇随机化 | EnemyTable.unit_count_max → registry enemy.fields + D2 EnemyTable 行;**D2 Rule 5 流清单缺 encounter 行**(registry rng_service 已登记) |
| entry 37 伤害×护甲批 | EnemyTable.armor_type / B1 三分量构成+armor_effectiveness / B3 六行状态表 / **A2 OQ1(标错惩罚三选一 + 重复性=每雷实例一次)** / registry enemy·settlement·status_effect / C3 数值接管 |
| entry 91 v3 数值批 | DND 命名(goblin/bugbear/ogre_chief)→ B2/registry/D2 enemy 行 |
| C3 SLICE-TUNED 转正 | C3 L42 自declare 回写责任 → registry enemy/hero + D2 行值(grub 24/伏击兽 36/守卫 130、hero 50 等) |
---
## 概念层专项(2026-09-12 lore 换轴 · 本会话范围核验)
1. game-concept 世界观与命名节 + 视觉锚原则 5:已带 2026-09-12 版本注记落地 ✓;机制节"雷/旗"用词为机制名、按设计不动 ✓
2. game-pillars P4:引用式写法(指向 game-concept)自动随流,零改动 ✓
3. registry terminology:概念层术语不入 registry(2026-09-09 概念层增补先例)✓
4. B1/B3"不是陷阱"措辞碰撞:⚠️-1 登记
5. battle.md 玩家可见文案"插旗"→"控制"采纳点:文案 pass / D1 批执行(battle.md L258 明载文案定稿权归实现期文案 pass)——登记
6. **A2 OQ1 重复性已被切片实现事实收口**(entry 37:每雷格实例一次去重,确定性派生三选一)→ lore ⑤-3(c) 措辞可定"**当轮反扑**",待 A2 GDD 修订批确认后回写 lore
7. game-concept 待定问题"标错惩罚"挂 Open:正确状态(机制落点走 A2 OQ1 修订批)——known-open
---
## 干净项
✅ 21/23 登记项跨 GDD 零冲突:config_db · rng_service(流语义/scope 绑定一致)· stream_seed_derivation · difficulty_row_resolution · schema_version · action_economy(AP 8/价目/RAP 规则全一致)· variation_table · variant_pool_gate · status_effect(D=1/+3/cap=4)· board_gen_table([0.85,1]/0.25/16384/min_safe)· a2_event_surface · a2_initial_expansion · terminology · enemy(cap=4/行集规则)· hero(atk=6/拒 0)· reward_table(mechanics/mvp_content 行)· settlement_table(registry↔B1 一致)· clause3_supply · clause5_dominance(C3 承接"非支配设计态"= 约束包②选择权行使 ✓)· difficulty_table · difficulty_expectation_table · boss_dmax_convention(Boss=Dmax+charge 拍 ✓)
**Verdict: CONFLICTS FOUND**(2 🔴 文本级 · 零阻断 · 修复清单见上)
+2 -1
View File
@@ -96,7 +96,7 @@
| 待拍板(可选) | 冲突、缺口、设计变更失义条目 |
| 版本历史 | 表格 |
**命名**:中文、见名知意(如"游戏概念""棋盘生成");禁止 a1_/b1_ 编号前缀;不留纯空目录。
**命名**:中文、见名知意(如"游戏概念""棋盘生成");禁止 a1_/b1_ 编号前缀;不留纯空目录。正文中指代子系统一律用中文规范名;英文代号(供代码标识符与工具链)对照表见 `design/gdd/02-系统清单.md`,旧代号(a1–d6)仅限解读归档时使用,不得写进现行文档。
## 7. 引用纪律(跨文档高内聚低耦合)
@@ -134,3 +134,4 @@
|---|---|---|
| v1 | 2026-09-14 | 首版成文:整合用语纪律、文档形态纪律、两件套与树形文档体系、新骨架过渡口径,新增可读性第一纪律与系统文档骨架 |
| v2 | 2026-09-14 | 新增第 7 节引用纪律(跨文档高内聚低耦合:单点定义 / 规范名唯一 / 引用不转述 / 反向边登记 / 删除概念 SOP),原 7/8 节顺延为 8/9 |
| v3 | 2026-09-15 | 命名纪律补充:现行文档代号清偿完毕,子系统统一以中文规范名指代;英文代号对照表落盘 `design/gdd/02-系统清单.md`,旧代号仅限解读归档 |
+1 -1
View File
@@ -1,6 +1,6 @@
# B1 战斗结算规则(lean 格式样例)
> **状态**:格式样例——用新格式重排现有 `b1-settlement.md` 的内容域,供评审,非生效文档
> **状态**:格式样例——用新格式重排现有 `b1-settlement.md` 的内容域,供评审,非生效文档(行协议计数等现行口径以 `design/gdd/systems/战斗循环/战斗结算.md` 为准)
> **版本**:lean-sample · 2026-09-13 · 作者:user + agents
> **一句话**:B1 把每轮扫雷的结果逐行兑现为战斗结果,并判定胜负。
+14
View File
@@ -0,0 +1,14 @@
# 试玩问题记录
## 垂直切片 v1
### 核心循环
1. 减伤太多;
- 不要固定值,换成百分比,需要有百分比上限;或者固定上限
2. 增伤也太多了;
- 考虑替换安全格的奖励占比,增加一种冒险内的累计资源(比如:金币,只能用于冒险内购买道具;)
3. 玩家攻击和怪物攻击不对等
- 考虑引入命中(AC like),但是造成伤害的方式要区分开;
4. 每次开图就是开了片面积;
- 是否有生成图计算如此?
+16 -15
View File
@@ -1,24 +1,25 @@
# Architecture Registry — Dungeon Sweeper
# 生成:2026-09-12(/architecture-decision solo 批:ADR-0001~0004;用户授权代决)
# 规则:只增不改;立场变更 = 旧条目标 status: superseded_by + 新增条目(永改既有条目)
# 命名注记(2026-09-15):A1–D6 系统代号已清偿为中文规范名(对照表见 design/gdd/02-系统清单.md);interfaces 两条目键名同批改领域命名(a2_event_surface→minesweeper_event_surface、b1_settlement_trigger→settlement_trigger)。
# 设计层立场(状态归属/接口契约/锚验收)登记在 design/registry/entities.yaml——本文件只登记实现级架构立场
interfaces:
- name: a2_event_surface
- name: minesweeper_event_surface
adr: ADR-0001
signals: [cell_revealed, flag_judged, round_end_board]
note: GDD 概念名 round_end 的 A2 实现实名 = round_end_board;A3 直发 = round_end_stopped(payload 同构)
- name: b1_settlement_trigger
note: GDD 概念名 round_end 的 排雷玩法 实现实名 = round_end_board;行动经济 直发 = round_end_stopped(payload 同构)
- name: settlement_trigger
adr: ADR-0001
contract: B1 订阅 A3 相位→Waiting 触发结算;只读 last_round_end + 相位观测量;不依赖事件到达序
contract: 战斗结算 订阅 行动经济 相位→Waiting 触发结算;只读 last_round_end + 相位观测量;不依赖事件到达序
- name: presentation_subscription_rule
adr: ADR-0001
contract: 呈现层永不直接订阅 A2/A3——只订 B1 步骤流 / level_runner(切片缺陷②教训固化)
contract: 呈现层永不直接订阅 排雷玩法/行动经济——只订 战斗结算 步骤流 / level_runner(切片缺陷②教训固化)
api_decisions:
- name: renderer
adr: ADR-0002
decision: gl_compatibility(Forward+ 否决——D3D12 新驱动线降险;B5 出现 HDR 2D 需求时复议)
decision: gl_compatibility(Forward+ 否决——D3D12 新驱动线降险;战斗表现 出现 HDR 2D 需求时复议)
- name: window_base
adr: ADR-0002
decision: 1280×800 基座 + stretch canvas_items + aspect expand(全部键显式落盘,防引擎默认漂移)
@@ -27,16 +28,16 @@ api_decisions:
decision: 仅 {ConfigDB, RngService}(定名锁定);战斗编排器等核心类由组合根按局实例化,非 autoload
- name: board_rendering
adr: ADR-0003
decision: MVP 沿用切片 GridContainer + 逐格控件形态(探针耦合事实);_draw() 迁移 = D1 正式化候选工作项(含三探针改造 + push_input 端到端探针 + 命中测试自建)
decision: MVP 沿用切片 GridContainer + 逐格控件形态(探针耦合事实);_draw() 迁移 = HUD框架 正式化候选工作项(含三探针改造 + push_input 端到端探针 + 命中测试自建)
- name: cjk_font
adr: ADR-0003
decision: CJK 字体随包发行并设 theme 默认字体(运行时默认字体无 CJK 字形)——D1 正式化硬性前置 + 导出 checklist 项
decision: CJK 字体随包发行并设 theme 默认字体(运行时默认字体无 CJK 字形)——HUD框架 正式化硬性前置 + 导出 checklist 项
- name: test_carrier
adr: ADR-0004
decision: 双载体(--headless --script 逻辑冒烟 + headless 场景探针)+ 静态扫描域 S1–S8 + CI 外部 wall-clock 超时;gdUnit4 deferred(D2 OQ1 关闭形态)
decision: 双载体(--headless --script 逻辑冒烟 + headless 场景探针)+ 静态扫描域 S1–S8 + CI 外部 wall-clock 超时;gdUnit4 deferred(数据配置 OQ1 关闭形态)
- name: save_contract
adr: ADR-0005
decision: SCHEMA_VERSION 比较逻辑归 D3(存档版本 > 当前 = 拒读);RNG 快照 = master_seed + 各流 scope 计数器 + 意图/窗口选择序列,切出须在 scope 事件边界外(无在飞 open_stream 实例——B1 编排保证)
decision: SCHEMA_VERSION 比较逻辑归 存档序列化(存档版本 > 当前 = 拒读);RNG 快照 = master_seed + 各流 scope 计数器 + 意图/窗口选择序列,切出须在 scope 事件边界外(无在飞 open_stream 实例——战斗结算 编排保证)
forbidden_patterns:
- pattern: autoload_global_event_bus
@@ -50,15 +51,15 @@ forbidden_patterns:
detail: core/ 禁裸引用 ConfigDB/RngService 全局标识符(--script 模式不注册——parse error;构造注入 only)
- pattern: global_rand_functions_in_gameplay
adr: ADR-0004
detail: randi()/randf()/randf_range() 与 randomize() 同禁(全局 RNG 绕开 RngService——D2 Rule 5 补全)
detail: randi()/randf()/randf_range() 与 randomize() 同禁(全局 RNG 绕开 RngService——数据配置 Rule 5 补全)
- pattern: core_extends_control_or_tscn_preload
adr: ADR-0004
detail: core/ 禁 extends Control/Node2D、禁 .tscn preload(D2 Rule 7)
detail: core/ 禁 extends Control/Node2D、禁 .tscn preload(数据配置 Rule 7)
- pattern: second_caller_of_battle_domain_apis
adr: ADR-0004
detail: B2/B3/B4 战斗域 API 唯一调用方 = B1;A2/B3/B4 零相互直调(静态扫描 S7——B1 AC-43)
detail: 敌人系统/增益状态/奖励道具经济 战斗域 API 唯一调用方 = 战斗结算;排雷玩法/增益状态/奖励道具经济 零相互直调(静态扫描 S7——战斗结算 AC-43)
- name: hero_override_parameter_passing
adr: ADR-0009(候选——切片机制正式化批)
decision: 主角加成值经 encounter 显式参数传入(begin_battle 增 hero_atk/hero_max_hp 字段;B2.spawn 增 atk_override/max_hp_override 参数,-1 = 表值兜底)——db.hero 表值运行期只读(切片原表写通道 _apply_hero_override/runner 写表废除)
note: 2026-09-13 E4 收口;接口漂移 = B2.spawn 签名 +2 参数、B1 encounter +2 字段(正式侧 B1/B2 GDD 修订随 ADR-0009 批);ui_tune_probe ⑦⑧ 为表不可变 + 单次加成的回归断言载体
decision: 主角加成值经 encounter 显式参数传入(begin_battle 增 hero_atk/hero_max_hp 字段;敌人系统.spawn 增 atk_override/max_hp_override 参数,-1 = 表值兜底)——db.hero 表值运行期只读(切片原表写通道 _apply_hero_override/runner 写表废除)
note: 2026-09-13 E4 收口;接口漂移 = 敌人系统.spawn 签名 +2 参数、战斗结算 encounter +2 字段(正式侧 战斗结算/敌人系统 GDD 修订随 ADR-0009 批);ui_tune_probe ⑦⑧ 为表不可变 + 单次加成的回归断言载体