From 8b14632190eae53521287e2ef02a199e3ecc5015 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Tue, 27 Oct 2026 00:06:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=E8=AE=BE=E8=AE=A1(gdstyle?= =?UTF-8?q?=E5=AD=98=E9=87=8F=E5=80=BA=E6=B8=85=E5=81=BF=C2=B7=E6=B3=A21?= =?UTF-8?q?=E5=AE=A1=E6=9F=A5=E6=8A=98=E5=85=A5):=20=E5=8F=8C=E5=AD=90?= =?UTF-8?q?=E4=BB=A3=E7=90=86=E7=8B=AC=E7=AB=8B=E5=AE=A1=E6=9F=A5=E5=9B=9E?= =?UTF-8?q?=E7=82=89=E8=A1=A5=E8=A3=81=E5=85=A8=E6=95=B0=E6=8A=98=E5=85=A5?= =?UTF-8?q?=20architecture.md=20v1.17=E2=86=92v1.18=E2=80=94=E2=80=94grill?= =?UTF-8?q?ing(=E9=98=BB=E6=96=AD5+=E5=BB=BA=E8=AE=AE3)=E4=B8=8Egodot-mast?= =?UTF-8?q?er(=E9=98=BB=E6=96=AD3+=E5=BB=BA=E8=AE=AE3)=E5=B9=B6=E8=A1=8C?= =?UTF-8?q?=E7=8B=AC=E7=AB=8B=E5=8F=96=E8=AF=81=E3=80=81=E7=BB=93=E8=AE=BA?= =?UTF-8?q?=E6=94=B6=E6=95=9B=E3=80=8C=E9=AA=A8=E6=9E=B6=E6=88=90=E7=AB=8B?= =?UTF-8?q?=E6=8E=A5=E7=BA=BF=E6=9C=AA=E9=97=AD=E5=90=88=E3=80=8D;?= =?UTF-8?q?=E9=98=BB=E6=96=AD8=E6=9D=A1=E5=8E=BB=E9=87=8D6=E7=BB=84?= =?UTF-8?q?=E6=8A=98=E5=85=A5=3D=E2=91=A0S13=E9=94=AE=E8=B4=A612=E9=9A=8F?= =?UTF-8?q?=E8=BF=81=E9=94=AE(use=5Ftreasure=C3=974/=5Fgrant=5Frouted?= =?UTF-8?q?=E5=8F=82=E6=95=B08/=5Fapply=5Fflat=5Frow=E5=8F=82=E6=95=B0+?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E7=AD=89)=E9=9A=8F=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E5=85=A5=E6=96=B0=E6=96=87=E4=BB=B6=3D=E5=9F=BA=E7=BA=BF?= =?UTF-8?q?=E5=A4=96NEW,=E5=8D=A1=E5=86=85=E5=90=8C=E6=AD=A5=E6=94=B6?= =?UTF-8?q?=E6=95=9B=E5=AE=9A=E4=B8=BA=E6=9C=AC=E6=B3=A2=E4=B9=89=E5=8A=A1?= =?UTF-8?q?=E7=A6=81=E6=B3=A20refresh=E5=90=B8=E6=94=B6(=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=8E=9F=E7=AE=97=E6=9C=AF=E6=BC=8F=E9=A1=B9=E2=80=94=E2=80=94?= =?UTF-8?q?=E5=8F=AA=E7=AE=97=E5=AE=BF=E4=B8=BB=E6=AE=8B=E7=95=998-10?= =?UTF-8?q?=E9=94=AE=E6=BC=8F=E9=9A=8F=E8=BF=81=E9=94=AE)=E2=91=A1?= =?UTF-8?q?=E8=B7=A8=E4=BB=B6=E5=8D=95=E5=90=91=E6=8E=A5=E7=BA=BF=E8=A3=81?= =?UTF-8?q?=E6=AD=BB:RewardGrant=E6=8C=81BattleFxHost=E5=BC=95=E7=94=A8(tr?= =?UTF-8?q?easure=5Fused=E5=8F=91=E5=B0=84/=E8=AE=A1=E6=95=B0=E5=99=A8?= =?UTF-8?q?=E6=B6=88=E8=80=97)+fx=E4=BB=B6=E5=AF=B9=E6=8E=88=E4=BA=88?= =?UTF-8?q?=E9=9D=A2=E8=B5=B0=E6=B3=A8=E5=85=A5=E5=85=91=E4=BB=98Callable,?= =?UTF-8?q?=E7=A6=81RefCounted=E5=8F=8C=E5=90=91=E7=8E=AF=E2=91=A2settleme?= =?UTF-8?q?nt/=E6=AE=B5=E7=B1=BB=E9=9A=8F=E5=8A=A8:=E6=AE=B5=E7=B1=BB?= =?UTF-8?q?=E6=9E=84=E9=80=A0=E6=B3=A8=E5=85=A5=E7=9B=B4=E6=8C=81=E5=AE=BF?= =?UTF-8?q?=E4=B8=BB+=E4=B8=A4=E6=96=B0=E4=BB=B6=E4=B8=89=E5=BC=95?= =?UTF-8?q?=E7=94=A8(Middle=20Man=E7=A6=81=E5=A3=B3),grant=E6=AE=B511?= =?UTF-8?q?=E8=AF=BB=E5=86=99=E9=9D=A2+combat=E6=AE=B5=E6=A1=88C=E9=97=B8?= =?UTF-8?q?=E6=94=B9=E6=8C=87,=E5=9B=9Bhelper=E4=B8=8E=5Fpool=5Feffective/?= =?UTF-8?q?perfect=5Fsweep=5Fearned=E7=95=99=E5=AE=BF=E4=B8=BB=E2=91=A3?= =?UTF-8?q?=E4=B8=A4=E6=96=B0=E4=BB=B6=E6=B6=88=E8=B4=B9=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E5=88=97=E8=A1=A5=E5=85=A8(fx=E4=BB=B6=E5=AE=9E=E9=9C=809?= =?UTF-8?q?=E7=B1=BB=E5=90=ABRngServiceCore=20fx=5Freveal=E6=B5=81?= =?UTF-8?q?=E2=80=94=E2=80=94=E5=8E=9F=E3=80=8C=E9=9B=B6=E9=9A=8F=E6=9C=BA?= =?UTF-8?q?=E3=80=8D=E8=87=AA=E8=BF=B0=E7=9F=9B=E7=9B=BE=E8=AE=A2=E6=AD=A3?= =?UTF-8?q?;grant=E4=BB=B6=E5=AE=9E=E9=9C=8012=E7=B1=BB=E5=90=AB=E5=AE=BF?= =?UTF-8?q?=E4=B8=BBattune=E8=AF=BB=E6=8A=95=E5=BD=B1/fatal=E9=80=9A?= =?UTF-8?q?=E9=81=93),=E5=BC=95=E7=94=A8=E6=9D=9F=E6=B3=A8=E5=85=A5?= =?UTF-8?q?=E9=98=B2=5Finit=20max-parameters=E6=96=B0=E9=94=AE,TreasureIte?= =?UTF-8?q?ms=E7=BB=8F=E5=AE=BF=E4=B8=BBsetter=E8=BD=AC=E5=8F=91(=E6=B3=A8?= =?UTF-8?q?=E5=85=A5=E6=97=B6=E5=BA=8F)=E2=91=A4treasure=5Finteract=5Fcont?= =?UTF-8?q?roller=E4=B8=89=E8=A7=A6=E7=82=B9=E5=88=86=E5=AE=B6:use=5Ftreas?= =?UTF-8?q?ure=E7=BB=8F=E7=8E=B0=E5=80=BC=E5=9B=9E=E8=B0=83=E6=94=B9?= =?UTF-8?q?=E6=B3=A8RewardGrant(=E6=AF=8F=E6=88=98=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E7=A6=81=E4=B8=80=E6=AC=A1=E6=80=A7=E7=9B=B4=E5=BC=95),mineswe?= =?UTF-8?q?eper=E8=AF=BB=E4=B8=8Eattune=5Fconvert=5Fstate=E4=BB=8D?= =?UTF-8?q?=E8=B5=B0=E5=AE=BF=E4=B8=BB=E5=8F=8C=E5=8F=96=E5=80=BC=E9=9D=A2?= =?UTF-8?q?=E2=91=A5=5Ffx=5Frevealing=E5=86=8D=E5=85=A5=E9=97=B8=E5=BD=92f?= =?UTF-8?q?x=E4=BB=B6,=E6=8F=AD=E7=A4=BA=E6=80=81=E6=8A=95=E5=BD=B1?= =?UTF-8?q?=E6=B6=88=E8=B4=B9=E6=96=B9=E8=AE=A2=E6=AD=A3=3D=E5=AE=BF?= =?UTF-8?q?=E4=B8=BBA2=E8=AE=A2=E9=98=85=E6=97=81=E8=B7=AF=E5=88=A4?= =?UTF-8?q?=E5=AE=9A(=E5=8E=9F=E3=80=8C=E5=91=88=E7=8E=B0=E5=BF=AB?= =?UTF-8?q?=E7=85=A7=E6=B6=88=E8=B4=B9=E3=80=8D=E4=B8=A4=E5=BF=AB=E7=85=A7?= =?UTF-8?q?=E5=AE=9E=E4=B8=8D=E8=AF=BB=E6=8F=AD=E7=A4=BA=E6=80=81);?= =?UTF-8?q?=E5=BB=BA=E8=AE=AE5=E6=9D=A1=E5=85=A8=E6=8A=98=E5=85=A5=3DS8=5F?= =?UTF-8?q?FILES=E4=B8=8ES7=5FB1=5FSET=E5=90=8C=E6=89=B9=E9=9A=8F=E5=8A=A8?= =?UTF-8?q?/battle=5Forchestrator=E8=A1=8C=E6=97=A7=E8=BF=B0=E8=BF=87?= =?UTF-8?q?=E6=B8=A1=E6=8C=87=E8=B7=AF/=E5=A4=B4=E6=B3=A8=E5=8F=91?= =?UTF-8?q?=E5=B0=84=E7=82=B9=E6=8C=87=E5=9D=80=E9=9A=8F=E5=8A=A8=E8=AE=B8?= =?UTF-8?q?=E5=8F=AF=E8=AF=8D=E8=A1=A8=E4=B8=8D=E5=8A=A8/nest=5Fpreview=5F?= =?UTF-8?q?count=E7=95=99=E5=AE=BF=E4=B8=BB+=E4=B8=A4=E5=A4=96=E9=83=A8?= =?UTF-8?q?=E7=9B=B4=E8=AF=BB=E9=9D=A2=E5=86=BB=E7=BB=93/fx=5Freveal?= =?UTF-8?q?=E6=B5=81=E9=9A=8F=E4=BB=B6=E8=BF=81=E7=A7=BB=E5=8F=96=E5=8F=B7?= =?UTF-8?q?=E5=BA=8F=E4=B8=8D=E5=8F=98;=E6=B8=85=E7=82=B9=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=C2=A7=E5=85=AD=E8=A1=A5=E7=AC=AC6=E6=9D=A1=E5=AE=A1?= =?UTF-8?q?=E6=9F=A5=E8=AE=B0=E5=BD=95;=E6=9D=A1=E7=9B=AE=E5=AE=9E?= =?UTF-8?q?=E5=86=B5=E4=B8=8E=E5=87=AD=E6=8D=AE=E9=9A=8F=E5=8A=A8v1.18;pip?= =?UTF-8?q?eline=5Fgate=E7=BB=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engineering/architecture/architecture.md | 26 ++++++++++--------- ...®¡-gdstyle存量债清点与清偿方案-2026-10-26.md | 1 + 待办清单.md | 4 +-- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/design/engineering/architecture/architecture.md b/design/engineering/architecture/architecture.md index 91975adc..747ffcb8 100644 --- a/design/engineering/architecture/architecture.md +++ b/design/engineering/architecture/architecture.md @@ -2,8 +2,8 @@ ## 文档状态 -- 版本:1.17 -- 最近更新:2026-10-26(战斗编排域拆件设计定稿——功能层两新件行(BattleFxHost/RewardGrant)+「战斗编排域拆件定稿」节) +- 版本:1.18 +- 最近更新:2026-10-26(战斗编排域拆件定稿审查折入——两新件行消费依赖补全+跨件单向接线+段类随动+键账收敛义务,v1.17→v1.18) - 引擎:Godot 4.7.2-stable(GDScript 单语言;2026-09-07 锁定) - 评审模式:solo(`review-mode.txt`,2026-09-12 用户拍板——TD/LP 门禁按 solo 跳过,用户授权架构产出自主推进、迭代期回调) - 覆盖 GDD:现行全集(根索引=`design/gdd/02-系统清单.md`,文档树构成以根索引为准) @@ -113,9 +113,9 @@ | 模块 | 独占职责 | 对外暴露 | 消费依赖 | 引擎 API | |---|---|---|---|---| -| **battle_orchestrator**(B1) | 段序骨架(七段结构冻结)、轮 facts 缓冲、可回放步骤流、[明细行协议](../../gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)(基础行型+扩展行两层 + 字段分层,词表以 owner「明细流水」节为准)、条款③⑤闭合对账、**战斗域全部跨系统调用权**、效果引擎宿主(每战 rebuild;round/battle 桶为编排器自有字典、经 EffectContext 引用挂载)+ 树规则挂点施加面(posture 窗/sense 限次/守侧 seal_missed 发射/聚乘算入账前) | `begin_battle(encounter)`;窗口/刷新意图提交面(扮演 D1);`level_clear()`;步骤流(输出契约) | B2/B3/B4 全调用面(**唯一调用方=B1 域文件集:battle_orchestrator.gd + settlement/ 五段段类 + damage_controller**);A3 request_refresh 代理 + 回发;A2 install/retire + 三事件订阅;A1 generate(attempt 非 scope 事件);D2 SettlementTable + set_reload_gate | 无(零随机、禁 await——切片 88 冒烟实证可回放) | -| **BattleFxHost**(`core/battle_fx_host.gd`,B1 域·效果引擎宿主件,2026-10-26 编排域拆件设计定稿——实现批建件) | 效果引擎挂点施加面唯一承载(自 battle_orchestrator 收编 fx 族):事件发射与事实判定(_fx_emit/_fx_fact)、主角 AC 基线与本轮/本战 AC 累积、bonus_delta 四轴累积、揭示待兑队列与兑付(_flush_pending_reveals)、树规则合成订阅的 round/battle 桶计数器持有(桶随编排器生灭语义不变) | 构造注入;bind 时注入 emit Callable(行发射经宿主协议面单点——CurioDeck bind_handlers 同款先例);只读投影族(AC 累积/bonus_delta/揭示态——宿主呈现快照消费) | EffectEngine(dispatch/four 桶经 EffectContext 引用束);emit Callable(宿主注入) | 无(零随机、零 await——效果引擎全同步解释器) | -| **RewardGrant**(`core/reward_grant.gd`,B1 域·奖励授予件,2026-10-26 编排域拆件设计定稿——实现批建件) | 奖励授予唯一兑付管线(自 battle_orchestrator 收编 grant 族):极性字典路由与封印溢价兑付(_grant_routed)、三种行应用(flat/percent/gp)、伤害单据提交面(_submit 族)、清图奖励与身份授予、秘宝使用编排(use_treasure 四步)、战斗域 GP 缓冲 escrow 与授予段暂存伤害闸 | use_treasure 编排入口(treasure_interact_controller 经注入直连——呈现零变化);授予入口(宿主结算段调用);只读投影(escrow/GP 掉落合计——呈现快照消费) | B4 RewardEconomy(polarity_row/grant——S7 B1 域文件集随动登记);B1 域 DamageController(伤害类兑付开单);注入 emit Callable、encounter 账本引用、TreasureItems 库存 | 无(零随机零 await——授予期零随机口径,roll 值授予前已定) | +| **battle_orchestrator**(B1) | 段序骨架(七段结构冻结)、轮 facts 缓冲、可回放步骤流、[明细行协议](../../gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)(基础行型+扩展行两层 + 字段分层,词表以 owner「明细流水」节为准)、条款③⑤闭合对账、**战斗域全部跨系统调用权**、效果引擎宿主面与树规则挂点施加面(**已定稿拆出 BattleFxHost——本行此段实现批后改写为现状,过渡期以「战斗编排域拆件定稿」节为准**) | `begin_battle(encounter)`;窗口/刷新意图提交面(扮演 D1);`level_clear()`;步骤流(输出契约) | B2/B3/B4 全调用面(**唯一调用方=B1 域文件集:battle_orchestrator.gd + settlement/ 五段段类 + damage_controller + 拆件后两新件**);A3 request_refresh 代理 + 回发;A2 install/retire + 三事件订阅;A1 generate(attempt 非 scope 事件);D2 SettlementTable + set_reload_gate | 无(零随机、禁 await——切片 88 冒烟实证可回放) | +| **BattleFxHost**(`core/battle_fx_host.gd`,B1 域·效果引擎宿主件,2026-10-26 编排域拆件设计定稿——实现批建件) | 效果引擎挂点施加面唯一承载(自 battle_orchestrator 收编 fx 族):事件发射与事实判定(_fx_emit/_fx_fact)、主角 AC 基线与本轮/本战 AC 累积、bonus_delta 四轴累积(战末宿主 drain 汇入账本)、揭示待兑队列与兑付(含 _fx_revealing 再入闸——同步信号回环防二次缓冲二次兑付)、树规则合成订阅的 round/battle 桶计数器持有(桶随编排器生灭语义不变) | 构造=引用束注入(防 _init max-parameters 新键);bind 时注入 emit Callable(行发射经宿主协议面单点)与兑付 Callable(RewardGrant 授予面——揭示队列 flush 回调);只读投影分两类消费方:AC 累积/bonus_delta 供宿主呈现快照与战末 drain,揭示态供宿主 A2 订阅旁路判定 | EffectEngine(EffectContext 引用束);RngServiceCore(fx_reveal 封闭流——除该流外零随机);A2 minesweeper(板读与 fx_reveal 调用);A3 action_economy(queue_ap_delta/charge_layers 读);B3 status_container 读;B2 unit_container 读(hp_ratio);DamageController(set_hero_ac_override);ConfigDB;encounter 引用 | 无(零 await——效果引擎全同步解释器) | +| **RewardGrant**(`core/reward_grant.gd`,B1 域·奖励授予件,2026-10-26 编排域拆件设计定稿——实现批建件) | 奖励授予唯一兑付管线(自 battle_orchestrator 收编 grant 族):极性字典路由与封印溢价兑付(_grant_routed)、三种行应用(flat/percent/gp)、伤害单据提交面(_submit 族)、清图奖励与身份授予、秘宝使用编排(use_treasure 四步)、战斗域 GP 缓冲 escrow 与授予段暂存伤害闸(_defer_board_damage/_deferred_board) | use_treasure 编排入口(treasure_interact_controller 经组合根现值回调直连);授予入口(结算段类直调);只读投影(escrow 读与 GP 掉落合计——宿主呈现快照与 _roll_gp_drop 消费) | B4 RewardEconomy(polarity_row/grant);B1 域 DamageController(开单);BattleFxHost 引用(treasure_used 事件发射与计数器消耗);A2 minesweeper(校验回调/fx_reveal/remove_mines_in);A3 action_economy(相位闸/grant_ap/queue_ap_delta);B3 status_container(apply_effect/池读);B2 unit_container(hero_unit/heal);ConfigDB;注入 emit Callable、宿主 fatal Callable(battle_result 状态机唯一写点留宿主)、宿主 attune 读投影(_attune_safe_seen)、encounter 账本引用;TreasureItems 经宿主 setter 转发注入(库存注入时序在宿主构造之后) | 无(零随机零 await——授予期零随机口径,roll 值授予前已定) | | **damage_controller**(B1 域·伤害单据管线) | 伤害单据唯一兑现管线(单据九栏目声明→分量掷点/克制修正/伤害下限归一→明细行发射;双方同规) | 兑付入口(编排侧开单)+ fx 揭示回调注入位 | B2 单位实例(单据目标传入);B1 注入(EffectContext 引用束与编排回调) | 无 | | **settlement/ 五段段类**(B1 域·结算段件) | B1 每轮结算序列的五段逻辑件(授予/增益减益/战斗/衰减/判定——细则见下「战斗域装配现状」节) | 段处理入口(B1 接线调用);可直接 `new()` 单测 | B2/B3/B4 兑付面与 B1 轮 facts 缓冲(各段按职责) | 无 | | **level_runner**(C1-lite,切片已建) | 关卡域生命周期(节点链推进、共享 B4 + HP 携带、关卡末 level_clear) | 节点推进接口;LevelTable(`level.tres`——节点 enum {battle,reward,rest,boss}、末节点必须 Boss、ConfigDB 跨表校验⑧) | B1(直构 BattleOrchestrator 接线战斗)、ConfigDB LevelTable | 无 | @@ -128,14 +128,16 @@ - **结算五段**:B1 编排器的每轮结算序列拆为 `game/core/settlement/` 五个段类——GrantSegment(①授予段,含封印判定与 counter/grant 助手单点)→ AuraSegment(②增益/减益段)→ CombatSegment(③战斗段)→ DecaySegment(④衰减段)→ VerdictSegment(⑤判定段,返回裁定,终局早退语义留 B1)。段序骨架冻结于 `SettlementTable.segment_order` 语义,B1 退为段序编排+接线;段类可直接 `new()` 单测(`settle_segments_test` 在役)。 - **RunLedger 四账**:`game/core/run_ledger.gd` 单类持四本共享账——同调充能账/真视使用计数/冒险域计数器/统一冒险加算区。所有权:AdventureRunner 开局构造、全程唯一宿主;LevelRunner 经 `set_run_ledger` 下传装配 encounter;战斗侧(B1)经 `encounter["ledger"]` 拿引用、只走 read/append 原语族。审计 P1-4「共享可变字典跨三层三处可写」由「函数签名上不可见的共享引用」换成签名可见的显式类。冒险桶计数器无导出/灌入时点:EffectContext 持 `run_ledger.adventure_counters` 的同一字典引用,引擎静态计数口就地直写,跨战持久随 RunLedger 生灭(2026-10-21 迭代 32 卡②无状态化写入)。 -### 战斗编排域拆件定稿(2026-10-26 用户裁写入——gdstyle 存量债波 1 设计闭合;实现批完成后本节改写为现状登记) +### 战斗编排域拆件定稿(2026-10-26 用户裁写入——gdstyle 存量债波 1 设计闭合;同日独立审查(grilling+godot-master 双子代理)阻断 8 条去重 6 组全折入本节,v1.18;实现批完成后改写为现状登记) -- **轴甲两件**:battle_orchestrator(1313 行/50 成员,S13 全库单文件最大户)按变化原因拆出 BattleFxHost(效果引擎宿主域)与 RewardGrant(奖励授予域)两协作件;宿主保留架构在册职责全部——战斗状态机与生命周期、轮 facts 缓冲(_facts_reveals/seals/path)、A2 三事件订阅、结算五段驱动、attune 族原位、行发射基建(_emit_row/_assert_row_source/_fatal)、呈现投影(presentation/diagnostic_snapshot 唯一出口不变)、刷新面。拆件动机与残留债口径见待办清单「gdstyle 存量债全量清偿」条目。 -- **跨件接线**:两新件经 bind 时注入的 emit Callable 发明细行(行发射协议面单点留宿主——CurioDeck bind_handlers 同款先例,禁件回调宿主私有族);轮 facts 缓冲留宿主、fx 件经注入取值;_seal_consumed 留宿主(与 A2 seal_judged 订阅同域)。 -- **attune 族原位保留**:同调配装 8 成员不进新件——迭代 39 副卡(AttuneLoadout 充能单源化)语义领地,两批零冲突;本波残留债归尾波。 -- **呈现零变化**:两快照出口签名与载荷逐字不变,内部改读两件只读投影;treasure_interact_controller 的 use_treasure 直连改注 RewardGrant(组合根装配面随动,呈现侧调用形态零变化)。 -- **验收红线**:游戏行为零变化(RNG 三流消费序零漂移、信号顺序契约冻结、明细行协议词表零触碰、同种子逐位一致);行数恶化债清偿义务(迭代 38 特批带红合并挂账 c4c69701——本波还债归绿);PARITY 触面(battle_orchestrator.gd 被改)实跑对拍须经用户批准、不得借机重锚;S13 改善非清零口径(宿主预计残留 8–10 键,begin_battle/_place_variants 族随卡内函数级拆分再清一部分)。 -- **S7 随动**:RewardGrant 调 B4 API,与 BattleFxHost 一并登记进 S7 B1 域文件集(工具面,实现批随动)。 +- **轴甲两件**:battle_orchestrator(1313 行/50 成员,S13 全库单文件最大户)按变化原因拆出 BattleFxHost(效果引擎宿主域)与 RewardGrant(奖励授予域)两协作件;宿主保留架构在册职责全部——战斗状态机与生命周期、轮 facts 缓冲(_facts_reveals/seals/path)、A2 三事件订阅、结算五段驱动、attune 族原位、行发射基建(_emit_row/_assert_row_source/_fatal)、呈现投影(presentation/diagnostic_snapshot 唯一出口不变)、刷新面、nest_preview_count(巢穴预告读数口——外部直读面 main.gd 与 treasure_effects_test 随批点名冻结)。拆件动机与残留债口径见待办清单「gdstyle 存量债全量清偿」条目。 +- **跨件单向接线**:RewardGrant 持 BattleFxHost 引用(treasure_used 事件发射与计数器消耗);BattleFxHost 对授予面走 bind 时注入的兑付 Callable(揭示队列 flush 回调)——禁双向强引用(两件均 RefCounted,环引用随每战新建泄漏)。行发射经 bind 时注入的 emit Callable(协议面单点留宿主——CurioDeck bind_handlers 同款先例,禁件回调宿主私有族);轮 facts 缓冲留宿主、fx 件经注入取值;_seal_consumed 留宿主(与 A2 seal_judged 订阅同域);fatal 经注入 Callable 转宿主 _fatal(battle_result 状态机唯一写点不变)。 +- **settlement/ 段类随动**:段类构造注入直持宿主+两新件三引用(Middle Man 禁令封转发壳——调用点改指),授予段读写面点名:_grant_routed×5/_submit×6/escrow 写/_fx_new_resource_types/_feat_first_dig_used/_fx_bonus_delta 写/_apply_ac_bonus/_fx_enqueue_reveal/_flush_pending_reveals/_grant_clear_reward/counters_ctx;战斗段 _defer_board_damage 复位与 _deferred_board 结账改指 RewardGrant。四个授予段 helper(_feat_yield_adjust/_harmful_variants/_harmful_adjacent/_hits_of)与 _pool_effective/perfect_sweep_earned 留宿主(段类经宿主引用直调,现状形态)。 +- **attune 族原位保留**:同调配装 8 成员不进新件——迭代 39 副卡(AttuneLoadout 充能单源化)语义领地,两批零冲突;本波残留债归尾波。RewardGrant 经宿主 attune 读投影取 _attune_safe_seen。 +- **呈现零变化**:两快照出口签名与载荷逐字不变,内部改读两件只读投影(快照本体不读揭示态——揭示态投影消费方=宿主 A2 订阅旁路判定);treasure_interact_controller 三触点分家——use_treasure 经组合根现值回调改注 RewardGrant(每战新建编排器,禁一次性直引防悬挂),minesweeper 读与 attune_convert_state 仍走宿主取值回调(双取值面);nest_preview_count 直读面零变化。 +- **S13 键账收敛义务**:12 个超标键随函数迁入新文件=基线外 NEW(use_treasure 长度/分支/局部/返回×4、_grant_routed 参数 8、_dispatch_row 参数 6、_apply_percent_row 参数 6、_apply_gp_row 参数 6、_apply_flat_row 参数 7+返回 9、_submit_flat_hero 参数 7、_fx_fact 返回 7)——卡内同步收敛为本波义务(_grant_routed 等签名随引用束注入改形、use_treasure 体拆分),禁波 0 合并 refresh 吸收新文件未还键;新件 _init 引用束注入防 max-parameters 新键。 +- **验收红线**:游戏行为零变化(RNG 消费序零漂移——fx_reveal 封闭流随件迁移取号序不变、信号顺序契约冻结、明细行协议词表零触碰、同种子逐位一致);battle_orchestrator 头注发射点指址随拆件改写(词表不动,指址须真);行数恶化债清偿义务(迭代 38 特批带红合并挂账 c4c69701——本波还债归绿);PARITY 触面(battle_orchestrator.gd 被改)实跑对拍须经用户批准、不得借机重锚;S13 改善非清零口径(宿主残留 8–10 键+随迁键卡内收敛后新件零残留为达标线)。 +- **S7/S8 随动**:RewardGrant 调 B4 API,两新件一并登记进 S7 B1 域文件集与 S8 结算路径 await 文件集(static_scan.sh 两清单独立、同批更新——防 await 面漏闸)。 ### 冒险域拆分定稿(2026-10-26 用户裁写入——AdventureRunner 真拆分设计闭合;实现批完成后本节改写为现状登记) diff --git a/reports/审计-gdstyle存量债清点与清偿方案-2026-10-26.md b/reports/审计-gdstyle存量债清点与清偿方案-2026-10-26.md index 154cccc5..edeadcef 100644 --- a/reports/审计-gdstyle存量债清点与清偿方案-2026-10-26.md +++ b/reports/审计-gdstyle存量债清点与清偿方案-2026-10-26.md @@ -411,4 +411,5 @@ S13 闸=「当前扫描 vs 基线对账」:判红仅两种——基线外新 3. **波 6 形态=视图内部拆私有函数**,不拆构建步件(main_ui_build 先例的动机是组合根超限,普通视图不类比)。 4. **波 8 config_db 公开方法收敛=纯代码**(删冗余、私有化内部方法,不动对外语义;架构表「对外暴露」列属现状登记,实现批后随动改写)。 5. **判定口径**:全部波不改游戏规则与玩家可见行为——design/gdd/systems/ 零修订预期;唯一设计改动面=波 1 的 architecture.md;owner 契约若被触碰走迭代批反哺点通道(正常机制)。波 5 已实查落定:open_ticket 12 参全是单据声明形态,「九栏目」只在架构模块描述层、GDD 无此契约,参数收束不改单据栏目与明细行发射协议,纯代码。 +6. **2026-10-26 独立审查折入(grilling+godot-master 双子代理并行审查,双判「回炉补裁级」——骨架成立、接线未闭合)**:阻断 8 条去重 6 组全折入 architecture.md v1.18——①S13 键账:12 随迁键(use_treasure×4/_grant_routed 参数 8/_dispatch_row/_apply_percent_row/_apply_gp_row/_apply_flat_row 参数+返回/_submit_flat_hero/_fx_fact 返回)随函数入新文件=基线外 NEW,卡内同步收敛定为本波义务、禁波 0 合并 refresh 吸收;②跨件单向接线裁死(RewardGrant 持 fx 件引用、fx 件对授予面走注入兑付 Callable——禁 RefCounted 双向环);③settlement/ 段类随动(段类直持三引用,Middle Man 禁壳,读写面点名);④两新件消费依赖列补全+引用束注入防 _init 参数新键+TreasureItems 经宿主 setter 转发(注入时序);⑤treasure_interact_controller 三触点分家(现值回调+双取值面,防每战新建悬挂);⑥_fx_revealing 再入闸归 fx 件、揭示态投影消费方订正为宿主订阅旁路判定。建议 5 条全折入:S8_FILES 与 S7_B1_SET 同批随动、battle_orchestrator 行旧述过渡指路、头注发射点指址随动许可、nest_preview_count 留宿主+两外部直读面冻结、fx_reveal 流随件迁移取号序不变。 diff --git a/待办清单.md b/待办清单.md index dc04f850..3b3ed1f6 100644 --- a/待办清单.md +++ b/待办清单.md @@ -4,11 +4,11 @@ #### gdstyle 存量债全量清偿——216 键按病根分波整改(2026-10-26 登记,来源=会话提及,优先级=P0) -**实况**:S13 闸实测存量债 216 键/60 文件(2026-10-26,master f3b148ce,gdstyle v0.4.0 默认阈值;基线登记 234 键=实存 216+陈旧 18)。全量清单、波次方案与纪律见清点报告(本条目裁决源)。2026-10-26 用户裁:撤销「一条总账」与「按病根拆多条」两案,并为本条单账(存量债全部清除,紧急优先级);原「gdstyle 基线陈旧键待人工清理」条目并入波 0(基线对账刷新),原「结构审查未立项小件候审」条目并入波 7(卡已写、停卡待裁)。**2026-10-26 设计段闭合(逐波裁定全数落定)**:①段组织=逐波开设计段,纯代码波(波 0/2/3/4/5/6/8)写卡前确认零设计改动+按当时 master 重测读数即可写卡;②波 2 各文件内部拆、波 6 视图内部拆私有函数、波 8 config_db 纯代码收敛(三处零设计改动);③波 1 拆件定稿=轴甲两件——battle_orchestrator 拆出 BattleFxHost(效果引擎宿主域)+RewardGrant(奖励授予域),宿主保留状态机/facts 缓冲/订阅/段驱动/行发射基建/呈现投影,attune 族原位保留(迭代 39 副卡语义领地),emit 经 bind 注入 Callable,行数恶化债(c4c69701 挂账)本波还债归绿,残留债「改善非清零」口径预计 8–10 键;定稿落文 architecture.md v1.17(功能层两新件行+「战斗编排域拆件定稿」节);④全部波不改游戏规则与玩家可见行为,design/gdd/systems/ 零修订预期;波 5 已实查落定纯代码(open_ticket 12 参=单据声明形态)。波 7 的 wr5/wr6 验收载体重裁为写卡段用户裁点(卡 v1.2 在册,写卡补呈报)。裁定全文见清点报告 §六。 +**实况**:S13 闸实测存量债 216 键/60 文件(2026-10-26,master f3b148ce,gdstyle v0.4.0 默认阈值;基线登记 234 键=实存 216+陈旧 18)。全量清单、波次方案与纪律见清点报告(本条目裁决源)。2026-10-26 用户裁:撤销「一条总账」与「按病根拆多条」两案,并为本条单账(存量债全部清除,紧急优先级);原「gdstyle 基线陈旧键待人工清理」条目并入波 0(基线对账刷新),原「结构审查未立项小件候审」条目并入波 7(卡已写、停卡待裁)。**2026-10-26 设计段闭合(逐波裁定全数落定)**:①段组织=逐波开设计段,纯代码波(波 0/2/3/4/5/6/8)写卡前确认零设计改动+按当时 master 重测读数即可写卡;②波 2 各文件内部拆、波 6 视图内部拆私有函数、波 8 config_db 纯代码收敛(三处零设计改动);③波 1 拆件定稿=轴甲两件——battle_orchestrator 拆出 BattleFxHost(效果引擎宿主域)+RewardGrant(奖励授予域),宿主保留状态机/facts 缓冲/订阅/段驱动/行发射基建/呈现投影,attune 族原位保留(迭代 39 副卡语义领地),emit 经 bind 注入 Callable,行数恶化债(c4c69701 挂账)本波还债归绿,残留债「改善非清零」口径预计 8–10 键;定稿落文 architecture.md v1.18(功能层两新件行+「战斗编排域拆件定稿」节);**同日独立审查折入**(grilling+godot-master 双子代理并行、双判回炉补裁级——骨架成立、接线未闭合):阻断 8 条去重 6 组+建议 5 条全数折入 v1.18——跨件单向接线裁死(RewardGrant 持 fx 件引用/fx 兑付走注入 Callable,禁 RefCounted 环)、settlement/ 段类随动(直持三引用封转发壳)、12 随迁键卡内收敛义务(禁波 0 refresh 吸收)、两新件消费依赖列补全+引用束注入、treasure_interact_controller 三触点分家(现值回调双取值面)、_fx_revealing 再入闸归 fx 件(裁定全文见清点报告 §六第 6 条);④全部波不改游戏规则与玩家可见行为,design/gdd/systems/ 零修订预期;波 5 已实查落定纯代码(open_ticket 12 参=单据声明形态)。波 7 的 wr5/wr6 验收载体重裁为写卡段用户裁点(卡 v1.2 在册,写卡补呈报)。裁定全文见清点报告 §六。 关联文档清单: - 清点报告 reports/审计-gdstyle存量债清点与清偿方案-2026-10-26.md(2026-10-26,216 键全量清单+波次方案+纪律+设计段裁定记录 §六) -- 设计定稿 design/engineering/architecture/architecture.md v1.17(2026-10-26,波 1 两新件行+「战斗编排域拆件定稿」节) +- 设计定稿 design/engineering/architecture/architecture.md v1.18(2026-10-26,波 1 两新件行+「战斗编排域拆件定稿」节含审查折入) - 需求卡片 reports/需求卡片-冒险域拆件与账本实体化批-2026-10-26.md v1.2(规避指向:三宿主债归此卡与姊妹副卡,本事项禁触,残留归尾波) - 需求卡片 reports/需求卡片-同调配装充能域封装批-2026-10-26.md v1.2(同上规避指向) - 需求卡片 reports/需求卡片-结构小件定点修批-2026-10-26.md v1.2(波 7 现成卡:iter38 卡②停卡退回上游,随本事项重裁验收载体)