From 60c1a962ab9548f6cf3af3c7bface04e8cda1195 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Thu, 29 Oct 2026 05:05:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E8=AE=B0(=E5=B0=BE=E6=B3=A2=E6=B8=85?= =?UTF-8?q?=E5=81=BF=E6=89=B9=C2=B7v2.0=E5=AE=9A=E7=A8=BF):=20=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E6=AE=B5=E8=A3=81=E5=86=B3=E9=97=AD=E5=90=88D1-D6?= =?UTF-8?q?=E2=80=94=E2=80=94D1=E8=A3=85=E6=9D=BF=E5=9F=9F=E6=8B=86?= =?UTF-8?q?=E6=96=B0=E4=BB=B6BoardInstaller=E4=B8=A4=E4=BF=AE=E6=AD=A3(?= =?UTF-8?q?=E5=A4=8D=E4=BD=8D=E5=9D=97=E7=95=99=E5=AE=BF=E4=B8=BB=E8=96=84?= =?UTF-8?q?=E5=A3=B3/=5Fboard=5Fgenerator=E9=9A=8F=E4=BB=B6=E9=80=80?= =?UTF-8?q?=E5=BD=B9,architecture=20v1.24=E8=BD=B4=E4=B8=99=E4=B8=8E?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=B1=82=E8=A1=8C=E8=90=BD=E6=96=87)=C2=B7D2?= =?UTF-8?q?=E6=82=AC=E5=81=9C=E5=9F=9F=E4=B8=8D=E6=8B=86=C2=B7D4=E6=96=AD?= =?UTF-8?q?=E7=82=B9=E5=9F=9F=E4=B8=8D=E6=8B=86=C2=B7D5=E4=BA=94=E9=99=8D?= =?UTF-8?q?=E5=80=BC=E9=94=AE=E8=B1=81=E5=85=8D=E7=BB=88=E5=B1=80=C2=B7D6?= =?UTF-8?q?=E5=86=99=E5=8D=A1=E6=9C=9F=E4=BF=AE=E6=AD=A3=E6=94=B9=E5=88=A4?= =?UTF-8?q?=E5=B9=B6=E6=8E=92=E7=BC=96=E9=98=9F(=E5=8E=9F=E5=90=B8?= =?UTF-8?q?=E6=94=B6=E6=A1=88=E5=90=A6=E5=86=B3:=E8=90=BD=E7=AC=94?= =?UTF-8?q?=E5=8F=91=E7=8E=B0=E8=AF=A5=E5=9F=9F=E5=B7=B2=E6=9C=89=E5=AE=9A?= =?UTF-8?q?=E7=A8=BF=E5=8D=A1v1.1=E9=9B=B6=E5=BE=85=E8=A3=81=E7=82=B9?= =?UTF-8?q?=E4=B8=94=E5=A5=91=E7=BA=A6=E7=B2=BE=E5=BA=A6=E6=9B=B4=E9=AB=98?= =?UTF-8?q?,=E9=94=80=E4=B9=8B=E9=87=8D=E5=86=99=E5=B1=9E=E6=8D=9F?= =?UTF-8?q?=E8=80=97;=E4=B8=A4=E5=8D=A1=E5=90=8C=E8=BF=AD=E4=BB=A3?= =?UTF-8?q?=E5=90=84=E6=89=A7=E5=90=84=E5=90=88=E5=90=8C,level=5Frunner?= =?UTF-8?q?=E4=BA=A4=E5=8F=A0=E4=B8=BA=E4=B8=8D=E7=9B=B8=E9=82=BB=E5=8C=BA?= =?UTF-8?q?=E6=AE=B5);=E5=8D=A1v2.0=E5=88=A0T6/V6,=E4=BC=B0=E6=97=B63?= =?UTF-8?q?=E2=80=934.25=E5=B7=A5=E4=BD=9C=E6=97=A5,=E5=BD=92=E7=BB=BF6?= =?UTF-8?q?=E8=B1=81=E5=85=8D5,=E9=9B=B6=E5=BE=85=E8=A3=81=E7=82=B9?= =?UTF-8?q?=E5=8F=AF=E7=BC=96=E6=8E=92;=E5=BE=85=E5=8A=9E=E6=9D=A1?= =?UTF-8?q?=E7=9B=AE=E7=8A=B6=E6=80=81=3D=E6=96=87=E6=A1=A3=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=B7=B2=E9=97=AD=E5=90=88=EF=BC=8B=E5=B7=B2=E5=86=99?= =?UTF-8?q?=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engineering/architecture/architecture.md | 10 +- .../需求卡片-gdstyle尾波清偿批-2026-10-29.md | 206 ++++++------------ 待办清单.md | 6 +- 3 files changed, 72 insertions(+), 150 deletions(-) diff --git a/design/engineering/architecture/architecture.md b/design/engineering/architecture/architecture.md index 0449bbb4..28be41d5 100644 --- a/design/engineering/architecture/architecture.md +++ b/design/engineering/architecture/architecture.md @@ -2,8 +2,8 @@ ## 文档状态 -- 版本:1.23 -- 最近更新:2026-10-29(迭代 41 反哺落文——ConfigDB/SlotStore/MetaStateStore/meta_progression 四行全清定稿注记转现状登记+minesweeper_rules 消费依赖补 last_round_end 方法形态注记;action_economy/variation/status_container/board_generator/unit_container/reward_economy 六行公开面零语义变化未动) +- 版本:1.24 +- 最近更新:2026-10-29(尾波清偿批设计闭合落文——「战斗编排域拆件定稿」节增补轴丙 BoardInstaller(`core/board_installer.gd`,实现批建件):装板域六函数迁出、宿主复位留薄壳、BoardGenerator 实例随件;battle_orchestrator 行 B1 域文件集句两新件→三新件随动;迭代 41 反哺注记转正文现状,沿革查 git) - 引擎:Godot 4.7.2-stable(GDScript 单语言;2026-09-07 锁定) - 评审模式:solo(`review-mode.txt`,2026-09-12 用户拍板——TD/LP 门禁按 solo 跳过,用户授权架构产出自主推进、迭代期回调) - 覆盖 GDD:现行全集(根索引=`design/gdd/02-系统清单.md`,文档树构成以根索引为准) @@ -115,10 +115,11 @@ | 模块 | 独占职责 | 对外暴露 | 消费依赖 | 引擎 API | |---|---|---|---|---| -| **battle_orchestrator**(B1) | 段序骨架(七段结构冻结)、轮 facts 缓冲、可回放步骤流、[明细行协议](../../gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)(基础行型+扩展行两层 + 字段分层,词表以 owner「明细流水」节为准)、条款③⑤闭合对账、**战斗域全部跨系统调用权**、效果引擎宿主面与树规则挂点施加面(**已拆出 BattleFxHost 并实装(2026-10-28 迭代 40——battle_fx_host.gd/reward_grant.gd 两件在库,效果引擎宿主面归 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 冒烟实证可回放) | +| **battle_orchestrator**(B1) | 段序骨架(七段结构冻结)、轮 facts 缓冲、可回放步骤流、[明细行协议](../../gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)(基础行型+扩展行两层 + 字段分层,词表以 owner「明细流水」节为准)、条款③⑤闭合对账、**战斗域全部跨系统调用权**、效果引擎宿主面与树规则挂点施加面(**已拆出 BattleFxHost 并实装(2026-10-28 迭代 40——battle_fx_host.gd/reward_grant.gd 两件在库,效果引擎宿主面归 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 订阅旁路判定;`luck_bias_for(cell_count) -> int` 偏运合计查询口(体内三参形 dispatch——reward_roll 发射与 bias_rewards 求和自 RewardEconomy 收回本件,RewardEconomy 经注入 Callable 消费) | 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 引用束与编排回调) | 无 | +| **BoardInstaller**(`core/board_installer.gd`,B1 域·装板域件,2026-10-29 尾波清偿批设计闭合——实现批建件,细则见「战斗编排域拆件定稿」节轴丙) | 棋盘安装与变异布置域唯一承载(自 battle_orchestrator 收编装板族六函数):生成受理、全局作用域变异决议、资源摇号资格域组装(roll_board 恰一次)、region 变异决议与连通片布置;BoardGenerator 实例随件自建自接线(宿主成员退役)——宿主侧装板后状态复位(封印/完美计数清零、板序推进、board_changed 发射、秘宝叠加层退役)留宿主薄壳,时序逐字保持 | `install(during_round) -> bool` 单入口;构造=引用束注入(rng/db/minesweeper/reward_economy/encounter 只读引用+宿主 fatal Callable——防 _init max-parameters 新键) | A1 board_generator(件内持有);A2 install_board;B4 roll_board/board_skew 写;A4 变异决议行集经 ConfigDB;board_gen/variant_place 两封闭流随件、流名与开流时点零漂移 | 无(零 await——装板全同步) | | **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 | 无 | | **run_structure**(C2) | 冒险/关卡序列、失败重开、**master_seed 唯一接线方** | (契约规范源:`../../gdd/systems/冒险循环/冒险结构.md`) | RngService.set_master_seed、C3/D2 | 无 | @@ -132,6 +133,7 @@ ### 战斗编排域拆件定稿(2026-10-26 用户裁写入——gdstyle 存量债波 1 设计闭合;同日独立审查(grilling+godot-master 双子代理)阻断 8 条去重 6 组全折入本节,v1.18;2026-10-28 迭代 40 实现批合回(合并提交 514457d1),本节为现状登记) - **轴甲两件**: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 存量债全量清偿」条目。 +- **轴丙一件(2026-10-29 尾波清偿批设计闭合——实现批建件)**:battle_orchestrator 装板域六函数(`_install_new_board`/`_resolve_global_variant`/`_place_variants`/`_place_variants_apply`/`_variants_fringe`/`_adjacent_to_packs`,约 140 行;全仓仅宿主三调用点——begin_battle/中途刷新受理/player_request_refresh,实查零外部调用)按变化原因拆出 BoardInstaller,职责语句「棋盘安装与变异布置域」(生成→全局变异决议→装板受理→资源摇号→变异布置;单一变化原因=棋盘设置顺序与变异布置算法)。形态两修正(实测裁,与初案「逐字搬运」之差):①宿主复位块不随件——`_install_new_board` 体内五处计数清零、板序推进、board_changed 发射与秘宝叠加层退役留宿主薄壳 `_install_and_reset`,三调用点改调薄壳、时序逐字;②`_board_generator` 全文件仅装板族使用——实例随件自建自接线(fatal 经注入 Callable),宿主成员退役(类变量 38→37,禁无效成员义务)。encounter(23 处跨宿主)与 _reward_economy(18 处)确认留宿主、经引用束注入。文件长键(1035/1000)随本件迁出归绿;attune 族与 begin_battle 受理段序禁动不变。 - **跨件单向接线**: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 状态机唯一写点不变)。注入 Callable 亦属接线面、同单向纪律——禁为省参数改持对象引用。授予件对账本零强引用:战斗期消费经 `battle_hooks` 三键回调束(attune_consume/vision_add/negative_blast,bind_battle 缺键 assert),宿主侧三单点记账(2026-10-28 迭代 40 合并适配实装——RunLedger 类已随迭代 39 退役,直持对象引用无处可指)。 - **战斗域读面(RunLedger 退役后)**:账本读经编排器 `_journal()`/`_attune_loadout()` 现值派生(GainJournal/AttuneLoadout,enc 派生、无成员接收);冒险桶经 `enc["adv_bucket"]` 下传 `battle_fx_host.mount_buckets`;战末 bonus 四轴经 `GainJournal.gain_bonus` 汇入(2026-10-27 迭代 39 主角账三件落地、迭代 40 合并适配承接)。 - **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 留宿主(段类经宿主引用直调,现状形态)。 @@ -139,7 +141,7 @@ - **呈现零变化**:两快照出口签名与载荷逐字不变,内部改读两件只读投影(快照本体不读揭示态——揭示态投影消费方=宿主 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 面漏闸)。 +- **S7/S8 随动**:RewardGrant 调 B4 API,两新件一并登记进 S7 B1 域文件集与 S8 结算路径 await 文件集(static_scan.sh 两清单独立、同批更新——防 await 面漏闸);轴丙 BoardInstaller 同规(调 B4 roll_board,实现批随批增行)。 ### 冒险域拆分(现状登记——2026-10-26 设计闭合,2026-10-27 迭代 39 拆件批实装,本节各条即现行形态) diff --git a/reports/需求卡片-gdstyle尾波清偿批-2026-10-29.md b/reports/需求卡片-gdstyle尾波清偿批-2026-10-29.md index 44568da2..9115ade9 100644 --- a/reports/需求卡片-gdstyle尾波清偿批-2026-10-29.md +++ b/reports/需求卡片-gdstyle尾波清偿批-2026-10-29.md @@ -1,27 +1,28 @@ # 需求卡片——gdstyle 尾波清偿批 -> **版本状态**:v1.0 草稿——设计段待裁点未清(第 6 节四个拆件项待用户裁决;裁决清零前本卡不得编入迭代)。 +> **版本状态**:v2.0 定稿——设计段裁决已闭合(D1–D6 裁决记录见第 6 节,2026-10-29 用户裁),零待裁点,可编排。 > **接收方**:待办清单条目「gdstyle 尾波清偿批——基线余量 11 键定向整改(2026-10-29 登记)」。 > **来源**:gdstyle 尾波清偿分析(2026-10-29 基线重锚后余量清点)。**唯一事实源**:`tools/gdstyle_baseline.txt`(2026-10-29 重锚版,余量 16 键)+ `reports/审计-gdstyle存量债清点与清偿方案-2026-10-26.md`(§三波次方案、§六文档设计段裁定记录——裁定全部继续有效)。 ## 1. 目标与完成定义 -这批做什么:把 gdstyle 静态质量闸(S13)基线余量 16 键中的 11 键定向清偿——6 键降到阈值内(闸不再记它,下称归绿),5 键经拆件降值后按设计段裁决走豁免登记或基线留债。手段只有两类:存量文件内部拆私有函数(呈现层先例)、按职责拆协作件(核心层先例)。 +这批做什么:把 gdstyle 静态质量闸(S13)基线余量 16 键中的 11 键定向清偿——6 键降到阈值内(闸不再记它,下称归绿),5 键按第 6 节裁决维持或降值后走 architecture 豁免登记(批末随实测值落文)。手段只有两类:存量文件内部拆私有函数(呈现层先例)、按职责拆协作件(核心层先例)。 什么状态算完: -1. 11 键逐键达到第 7 节写明的预期结果(归绿或降值后的实测值)。 +1. 11 键逐键达到第 7 节写明的预期结果(归绿 6/豁免 5——豁免键实测值落 architecture 豁免登记段)。 2. 游戏行为零变化:同种子下事件流、步骤流、断点快照、棋盘渲染逐位一致(第 4 节红线)。 3. 批末代码域闸全绿(冒烟+单元+集成+探针+渲染 golden+静态扫描),键账对账完成(第 13 节)。 4. 实现报告与反哺点清单落 `reports/`(末卡产出物落位卡)。 ## 2. 设计事实源 -本卡属需求性工程条目(结构整改、改游戏代码面),按五段流水线凭工程债证据直接写卡、无 GDD 设计前置。证据指认: +本卡属需求性工程条目(结构整改、改游戏代码面),按五段流水线凭工程债证据写卡;四个拆件项的设计段裁决于 2026-10-29 经用户裁闭合(记录见第 6 节)。证据指认: - `tools/gdstyle_baseline.txt`——2026-10-29 人工重锚后的现行基线,16 键;本卡 11 键逐条列于第 3 节,键名与本卡逐字一致。 - `reports/审计-gdstyle存量债清点与清偿方案-2026-10-26.md` §六裁定记录 7 条(段组织、波 2/波 6 形态、config_db 定性、判定口径、独立审查折入、2026-10-27 三卡归并)——继续有效,本卡沿用其中对呈现层「内部拆私有函数、不拆构建步件」与「全部波不改游戏规则与玩家可见行为」的裁定。 -- 前置设计段:四个拆件项(第 6 节)未过设计段裁决。本卡只提供职责语句、拟拆清单与耦合边界供裁决,不代替裁决;裁决产物(architecture.md 模块归属表登记行、S13 豁免登记条)经反哺点通道由文档批落文。 +- `design/engineering/architecture/architecture.md` v1.24——轴丙 BoardInstaller(装板域拆件)已随本卡设计闭合落文(模块归属功能层新行+拆件定稿节增补),实现照册施工。 +- 并排执行卡:`reports/需求卡片-level_runner商店委托层拆除-2026-10-29.md` v1.1(键 7 拆除执行合同——D6 并排编队,见第 6 节)。 ## 3. 现状事实(代码级,开工自行复核;行号为 2026-10-29 实查) @@ -39,16 +40,17 @@ | 8 | `level_runner.gd\|quality/max-class-variables = 30` | 30/15 | `level_runner.gd` 类成员区(含 `hero_hp`/`gp` 两属性) | | 9 | `level_runner.gd\|quality/max-returns\|_enter_node = 7` | 7/6 | `level_runner.gd:486-513`——shop 分支 pool/legacy 双 return(:509、:511) | | 10 | `battle_orchestrator.gd\|quality/max-file-length = 1035` | 1035/1000 | `game/core/battle_orchestrator.gd`——装板与变异布置域六函数合计约 140 行(:414-549) | -| 11 | `adventure_runner.gd\|quality/max-class-variables = 28` | 28/15 | `game/core/adventure_runner.gd:13-45`——其中断点恢复域成员 6 个(:30-37 区段) | +| 11 | `adventure_runner.gd\|quality/max-class-variables = 28` | 28/15 | `game/core/adventure_runner.gd:13-45` | 支撑事实: - board_view 公开方法 27 个全是契约面:setter 是组合根注入面(依赖单向纪律),探针出口(cells_probe/diggable_probe/hover_probe/fog_params_probe/type_glow_probe/cell_rect_probe)是探针断言面,几何出口与入站事件是演出与输入契约。可降空间极小。 - battle_orchestrator 装板域六函数全仓零外部调用,仅本文件三处调用(:271 begin_battle、:801 _exit_distribution、:835 player_request_refresh)——拆件不触任何外部调用面。 -- 六函数现行均无超标键(基线无其函数级键),函数体逐字搬运即计数不变,新文件零新增键。 -- level_runner 商店委托面被呈现层 5 文件(camp_shop_presenter/main_adventure_flow/main_overlay_flow/main_ui_build/shop_overlay_view)、`game/sim/level_autoplay.gd`、测试 4 套件(level_shop_economy/pool_case_d/tree_rules_v11/hero_ledger)引用——委托面处置是跨文件改址。 -- `game/tests/unit/core/breakpoint_resume_test.gd:185` 直读 `AdventureRunnerScript.BREAKPOINT_FIELDS`——断点域若拆件,此处须随迁改址。 +- 六函数现行均无超标键(基线无其函数级键);`_install_new_board` 体内 442-451 行为宿主态复位块(五处计数清零+板序推进+board_changed 发射+秘宝叠加层退役)——按第 6 节 D1 裁决留宿主薄壳。 +- `_board_generator` 全文件仅四处使用(:42 声明、:233 创建、:239 fatal 接线、:416 装板消费)——装板族独占,随件迁移后宿主成员退役(38→37)。 +- level_runner 商店委托面被呈现层 5 文件(camp_shop_presenter/main_adventure_flow/main_overlay_flow/main_ui_build/shop_overlay_view)、`game/sim/level_autoplay.gd`、测试 4 套件(level_shop_economy/pool_case_d/tree_rules_v11/hero_ledger)引用——shop_overlay_view 三处命中均为注释投影引用(:15/:88/:152 实查),代码调用面在 presenter/组合根拆件/sim 侧。 - `tools/run_all_gates.sh` PARITY_TOUCH_FACES 含 `game/core/battle_orchestrator.gd`——本批必触面。 +- level_runner 商店委托面的完整行级调用点清单(19 壳含 2 死壳、跨类同名陷阱、呈现/sim/测试逐点行号)以并排卡 v1.1 §3 为准——本卡不重复罗列。 ## 4. 设计契约(违反即返工的红线条款) @@ -57,84 +59,37 @@ - 🔴 **PARITY 触面**:battle_orchestrator.gd 触 PARITY_TOUCH_FACES——实跑对拍须经用户批准、不得借机重锚。 - 🔴 **呈现零变化**:board_view 改动的画面判据=`game/tests/golden/` 既有三张棋盘基线(L1 dungeon/L2 underdark/L3 deep_underdark),对拍差异非零即红;重建基线只许用户批准,实现批禁自行换锚。 - 🔴 **拆分边界纪律**(判据权威=code-conventions §1.1,此处立卡内执行条款):①每个拆出单元须有可陈述的职责语句与单一变化原因(实现报告逐件一行承载);②拆出单元须有集体身份——命不出名字、只能说「剩下的成员」的打包=凑计数袋,禁;③「过阈值」只许作为发现信号,作为拆分或收拢的动机即违规;④按纪律拆不出内聚单元 → 停卡呈报走豁免/还债通道,禁硬拆凑绿;⑤拆分沿职责轴不沿阈值轴。 -- 🔴 **禁为机检文本保留无效成员**:禁止为迎合机检消息文本(含计数)而保留或新增无效成员/别名;机检键与卡片契约互斥时,实现段一律停卡呈报,不得自造第三条路。 -- 🔴 **残留处置不承诺清零**:5 个降值键拆件后的终局处置(架构豁免登记或基线留债)=设计段裁决(第 6 节 D5);实现段不得为凑阈值自造豁免或改阈值。 +- 🔴 **禁为机检文本保留无效成员**:禁止为迎合机检消息文本(含计数)而保留或新增无效成员/别名——装板域拆件后宿主 `_board_generator` 成员随之退役(38→37);机检键与卡片契约互斥时,实现段一律停卡呈报,不得自造第三条路。 - 🔴 **基线纪律**:禁为过闸 refresh 换绿;还债=数值下降自然绿;出现恶化=停卡呈报(细则第 13 节)。 - 🔴 **attune 族与 begin_battle 序列禁动**:battle_orchestrator 的 attune 族原位保留(迭代 39 副卡语义领地);begin_battle 受理段序与五段驱动逻辑禁动——装板域拆件只改 `_install_new_board()` 调用点的取件改址。 -- 🔴 **断点键集冻结**:`BREAKPOINT_FIELDS` 27 键逐键冻结(键名、策略标签、键序零变化);随件迁移只换承载文件,不换键面。 ## 5. 范围边界 -做什么:第 3 节 11 键对应的六项改动(第 7 节逐键方案、第 11 节任务卡)。 +做什么:第 3 节 11 键中本卡直接执行的三项改动(第 7 节逐键方案、第 12 节任务卡)——board_view 拆分(键 1–4)、_enter_node 载荷合并(键 9)、装板域拆件(键 10);键 7 的拆除执行合同=并排卡「level_runner 商店委托层拆除」v1.1(D6 裁定并排编队,见第 6 节)。 不做什么: -- 5 个豁免讨论键(main.gd/tune_sim_controller/board_cell_unit/standee_body/battle_orchestrator 类变量)——去向:主会话另行讨论豁免通道,本卡不收件、不落反哺点。 +- 商店委托壳拆除的执行——D6 裁并排编队:执行合同=在册定稿卡 v1.1(零待裁点),本卡不重复执行、只承接键账与豁免登记。 +- 悬停域拆件与断点域拆件——D2/D4 裁不拆(第 6 节),键 5/6/11 直送豁免终局。 +- 5 个豁免讨论键(main.gd/tune_sim_controller/board_cell_unit/standee_body/battle_orchestrator 类变量)——去向:豁免通道批末与本批 5 键合并一次落文,本卡不落文、不落反哺点。 - 波次方案其余文件(审计报告 §三波 1–8)——已由迭代 39/40/41 清偿,不在本卡。 -- `game/tests/README.md` 能力清单——实现批禁写;受影响行(若有)由写卡段在形态裁决后的卡修订版同批更新(第 12 节对照表注记)。 +- `game/tests/README.md`——实现批禁写;GP 钱包行真实入口列已随本卡 v2.0 改为 ShopSession 直连(计划入口,闸双通道认卡),批末核对表上名字与实际落地一致。 - 数值表、RNG 流词表、信号载荷 schema——零触碰。 -- level_runner 商店域若设计段裁「剔除」(D3),该域整项退回在册条目「level_runner 商店委托层拆除」单独立卡,本卡该两键留债。 -## 6. 前置设计段待裁点(四个拆件项——本卡编入迭代前置=待裁点经设计段由用户裁决清零) +## 6. 设计段裁决记录(2026-10-29 用户裁——D1–D6 全部闭合) -四项均未过设计段裁决。每项给出职责语句、单一变化原因、拟拆清单、耦合边界与备选案(推荐案在前、淘汰依据随后);**卡片不代替用户裁决**。 - -### D1 battle_orchestrator 装板域拆件 - -- **职责语句**:棋盘安装与地形变异布置域——生成棋盘、装板受理、资源摇号资格域组装、变异决议与布置。 -- **单一变化原因**:棋盘设置顺序(生成→装板→资源→变异)或变异布置算法变化时只改此件。 -- **拟拆清单**(六函数逐字搬运,约 140 行):`_install_new_board`(:414-452)、`_resolve_global_variant`(:460-468)、`_place_variants`(:480-500)、`_place_variants_apply`(:504-530)、`_variants_fringe`(:534-541)、`_adjacent_to_packs`(:545-549)。 -- **耦合边界**:新件经引用束注入取 db、rng(两封闭流同序取号)、minesweeper、reward_economy、board_generator、encounter 现值;`_fatal` 与 `board_changed` 经注入回调(协议面单点留宿主——BattleFxHost/RewardGrant 先例);宿主侧装板后状态复位(_seal_consumed/_seal_miss_seen/_perfect_* 三计数/_board_seq/_board_from_midround_refresh)保留宿主,件内不持宿主状态。静态随动:static_scan.sh 的 S7 B1 域文件集与 S8 await 文件集同批增行(工程红线防漏闸——迭代 40 两新件先例)。 -- **备选案**:推荐=新件 `game/core/board_installer.gd`(B1 域件,三调用点取件改址)。淘汰「函数留宿主只拆 _place_variants 内层」——治不了文件长键;淘汰「六函数搬入既有 BattleFxHost」——效果引擎宿主域与装板域是两个变化原因,混装违单一变化原因。 - -### D2 board_view 悬停域拆件 - -- **职责语句**:悬停预承诺呈现域——三语义光标、目标格边框、BFS 路径预览、chord 双击首遇锚。 -- **单一变化原因**:悬停反馈形态(光标语义/边框/路径预览画法)变化时只改此件。 -- **拟拆清单**:成员 `_hover`(:70)、`_last_click`(:71);函数族 11 个=`_hover_at`(:442)、`_on_shell_mouse_exited`(:453)、`_detect_chord`(:475)、`_on_cell_hover`(:486)、`_on_cell_unhover`(:491)、`_refresh_hover_after_paint`(:497)、`_apply_hover_visuals`(:503)、`_clear_hover_visuals`(:531)、`_set_cursor_shape`(:538)、`_show_path_preview`(:542)、`_hide_path_preview`(:552)。**`_r0` 不随迁**——它是出生展开区资格域成员(徽章/微光/涟漪三消费方共用,:238/:296/:563),与悬停无职责交集,划入悬停件即凑计数袋。 -- **耦合边界**:件经引用束注入取 cells 容器引用、minesweeper 只读引用、diggable 集合引用;壳层光标写入与 `hover_forbidden` 信号经注入回调;`_gui_input`/`_on_cell_input`/`click_cell` 三个入站口留宿主(Control 虚回调与探针契约面不可迁),悬停计算委托件。`hover_probe()` 留宿主读件投影。 -- **备选案**:推荐=新件 `game/presentation/views/board_hover.gd`。淘汰「悬停函数留宿主只迁两成员」——计数降 2 意义微小且函数族与成员本是一个内聚单元;淘汰「并进 hero_sprite 件」——英雄演出与悬停预承诺是两个变化原因。 -- **预期注记**:类变量 32→约 30;公开方法 27 个全为契约承载、预期持平(详见第 7 节键 5/6)。残留处置归 D5。 - -### D3 level_runner 商店域处置 - -- **职责语句**:关卡商店货架与 GP 支出(域件 ShopSession 已存在——迭代 37 建件,宿主现留同签名委托面)。 -- **单一变化原因**:商店货架与定价规则变化时只改 ShopSession。 -- **拟拆清单**:删除宿主同签名委托 17 个公开方法(shop_products/current_price/purchased_tier/buy_product/player_request_refresh/set_shop_pool/pool_stock/pool_price/shop_shelf/shop_refresh_free_left/shop_refresh_cost/shop_refresh/spend_gp/buy_pool_item/is_shop_pool/shop_bp_shelf/shop_bp_visit_buys,:751-829)+3 个私有转发(_bind_shop/_spend_discounted/_shop_draw_shelf);外部调用点改直连 ShopSession(宿主新增取件出口)。涉案调用点:呈现层 5 文件+`game/sim/level_autoplay.gd`+测试 4 套件(断言判据零变化、仅调用面改址)。 -- **耦合边界**:ShopSession 的共享引用(wallet/journal/level_row/attunement/tree_rules)绑定逻辑留宿主 `_init`(`_bind_shop` 内容内联);`_enter_node` shop 分支与 `breakpoint_fragment` 经取件出口访问件。`_shop` 成员去留随形态(见备选案)。 -- **备选案**:推荐=候选 A 删委托壳(Middle Man 清偿——2026-10-26 真拆分设计会话已裁「纯转传委托=反模式」先例;公开方法 50→33)。候选 B=委托面保留(现状登记为过渡件)、本卡该两键留债——淘汰依据:委托面已在册单独立项(「level_runner 商店委托层拆除」条),两批重复开工浪费;但若设计段裁本卡剔除该项(见 D6),候选 B 生效。 -- **并案裁决**:本项与在册条目「level_runner 商店委托层拆除——迭代 37 冻结契约期过渡件(2026-10-26 登记)」同面——并案(本卡吸收该条目)或剔除(该条目单独立卡)由设计段裁(D6)。 - -### D4 adventure_runner 断点恢复域拆件 - -- **职责语句**:存档断点组装与回放——断点快照拼盘、回放回填、读侧策略分发。 -- **单一变化原因**:断点键集或回放策略变化时只改此件。 -- **拟拆清单**:成员 6 个=`_save_manager`(:35)、`_resume_bp`(:36)、`_pending_next_level`(:30)、`_last_level_payload`(:31)、`_last_treasure_cleared`(:32)、`_loadout_seeded`(:37);常量 `BREAKPOINT_FIELDS`(:539-568,27 键冻结);函数族=`_snapshot_breakpoint`(:571)、`_bp_parts`(:583)、`_bp_read`(:636)、`_bp_strategy`(:646)、`_bp_read_int`(:651)、`_resume_ledger`(:182)、`_resume_curio_state`(:193)、`_resume_params`(:218)、`_resume_counters`(:237),公开入口 `resume_adventure` 留宿主薄壳。**成员归属注记**:`_pending_next_level`(冒险推进态,continue_to_next_level/_on_level_finished 消费)与 `_loadout_seeded`(同调投行标记)是否随域收编须裁——不随则类变量降幅收窄(28→约 24–26,随 6 成员全迁为约 22)。 -- **耦合边界**:件经引用束注入取 db、rng(restore_adventure 同序)、主角账三件、curio/stop/bank/loadout 四件引用;level_index/master_seed/summary 等宿主冒险态经注入引用或件返回值写回(形态随裁决);`set_save_manager` 转发件。测试侧改址:`breakpoint_resume_test.gd:185` 的 `BREAKPOINT_FIELDS` 直读随迁改址。 -- **备选案**:推荐=新件 `game/core/breakpoint_store.gd`(D3 域件命名族——SlotStore/MetaStateStore 同族)。淘汰「只迁 _bp_* 读侧函数」——写侧拼盘与读侧策略是一个登记单源表的两半,拆开违登记单源;淘汰「断点域并入 save_manager」——存档 IO 原语与冒险断点语义是两个变化原因(SlotStore 拆分已立此界)。 - -### D5 降值键残留处置(横切) - -5 个不可达阈值键(第 7 节键 5–8、11)拆件后的终局处置二选一,由设计段统一裁:**架构豁免登记**(键永久基线内、禁再恶化,理由在册 architecture「测试与质量域」豁免登记段——main.gd 探针契约面先例)或**基线留债**(键留基线随批对账,禁恶化)。淘汰「继续硬拆凑阈值」——拆不出内聚单元,违拆分边界纪律④。 - -### D6 level_runner 商店域并案归属 - -见 D3 末条:并案(本卡吸收在册条目「level_runner 商店委托层拆除」,批完删条)或剔除(本卡该两键留债,在册条目维持待写卡)。 - -### 待裁点汇总 - -| 编号 | 待裁点 | 推荐案 | +| 编号 | 裁决 | 依据(推导链摘要) | |---|---|---| -| D1 | 装板域新件形态与引用束构成;宿主侧复位行归属 | 新件 board_installer.gd;复位留宿主 | -| D2 | 悬停域新件形态;_r0 不随迁认定 | 新件 board_hover.gd;_r0 留宿主 | -| D3 | 商店域候选 A(删委托壳)/候选 B(留债);_shop 去留 | 候选 A | -| D4 | 断点域新件形态;_pending_next_level/_loadout_seeded 归属 | 新件 breakpoint_store.gd;六成员全迁 | -| D5 | 5 个降值键终局处置(豁免登记/基线留债) | 逐键裁决 | -| D6 | 商店域与本卡并案或剔除 | 并案 | +| D1 | ✅ 装板域拆新件 BoardInstaller,两修正 | 六函数构成可命名内聚单元(生成→决议→装板→摇号→布置,单一变化原因=棋盘设置顺序与变异布置算法);三调用点全宿主内实查零外泄;不在 v1.22 保留面;文件长键唯一归绿路径。**修正一**:复位块(442-451 行)留宿主薄壳 `_install_and_reset`,非逐字搬运;**修正二**:`_board_generator` 装板族独占(四处实查)随件迁移,宿主成员退役 38→37。已落 architecture v1.24 轴丙。 | +| D2 | ❌ 悬停域不拆 | 键 5/6 无一可由此归绿(类变量 32→30 仍红、公开方法持平 27);波 6 既定裁=普通视图内部拆私有函数、不立周边件;悬停 11 函数全部低于阈值(无 S13 标的),拆分仅剩计数动机、踩 §1.1-③ 灰区;新件+束注入+入站口委托的代价不成比例。键 5/6 直送豁免;`_r0` 归属认定随之作废。 | +| D3 | ✅ 商店域候选 A(删委托壳),`_shop` 公开化留宿主 | ShopSession 迭代 37 已建(33 公开方法实查),委托面=纯 Middle Man(2026-10-26 真拆分设计会话已裁「纯转传委托=反模式」);拆除方向 2026-10-26 已在册登记,本卡系执行既定发令;公开方法 50→33。`_shop` 公开化留宿主——`_enter_node` shop 分支与断点片段仍需持引用,非无效成员;类变量 30 不降,归豁免。执行合同=并排卡「level_runner 商店委托层拆除」v1.1(零待裁点)——其契约精度高于本卡初案(19 壳含 2 死壳行级清单、`_shop`→公开成员更名形态、两段式中间态、跨类同名判别),按其施工。 | +| D4 | ❌ 断点域不拆 | 键 11 无键可绿(28→22 仍红);现位置不违反任何已立边界——SlotStore 拆分立的界约束的是 save_manager 不吞断点逻辑,非要求断点逻辑离宿主,断点协议住在冒险生命周期 owner 内本身内聚;`_save_manager` 非断点独占(:371 boss 首杀读、:521 abandon 清断点写盘实查),件化须双持引用、束复杂度超收益;27 键冻结契约扰动收益为零。若未来断点协议自身扩展,届时按职责轴立件。键 11 直送豁免。 | +| D5 | ✅ 五个降值键豁免登记终局 | board_view 类变量 32/公开方法 27、level_runner 公开方法 33(删壳后)/类变量 30、adventure_runner 类变量 28——可降途径已按代价裁完,残留面全为契约承载或运行本态;无偿还计划的债=未注记豁免,不如把理由落权威文档。批末按实测值落 architecture「测试与质量域」S13 豁免登记段(先例=battle_orchestrator 第三条形态:键永久基线内、禁再恶化、豁免不等于了结)。 | +| D6 | ✅ 商店域并排编队(写卡期修正:原「吸收」案否决) | v2.0 初稿裁「本卡吸收在册条目、删除其卡」;落笔时发现该域已有定稿执行卡——「level_runner 商店委托层拆除」v1.1(2026-10-29,复核门通过零待裁点),契约精度高于本卡 T6 粗案,销定稿卡重写粗案=无收益损耗。改判:**两卡同迭代并排编队**(编排段并列排入、执行顺序先后皆可——level_runner 交叠为不相邻区段零冲突),本卡承接键账与豁免登记、不重复执行拆除;在册条目与其卡维持,随其自身批完成删除。 | ## 7. 逐键方案(11 键:现状值/阈值/方案方向/预期结果) -预期分两档:**归绿**(拆后实测低于阈值,下批重锚后键消失)与**降值不可达**(拆件后实测重锚降值,残留=设计段裁决豁免或留债,卡内禁承诺清零)。 +预期分两档:**归绿**(拆后实测低于阈值,下批重锚后键消失)与**豁免终局**(维持或降值,批末随实测落 architecture 豁免登记段)。 | 键 | 现状/阈值 | 方案方向 | 预期结果(档位) | |---|---|---|---| @@ -142,66 +97,56 @@ | 2 board_view _paint_cell 分支 | 24/8 | 同上 | ≤8,**归绿** | | 3 board_view _paint_cell 局部变量 | 22/10 | 同上 | ≤10,**归绿** | | 4 board_view allocation-in-loop | 命中 | `.new()` 移入逐项构建私有函数 `_build_cell_unit(c, stride)`,循环体只调构建器(先例=battle_end_overlay._seal_img/_ledger_row 族) | 消除,**归绿** | -| 5 board_view 类变量 | 32/15 | D2 悬停域拆件迁出 `_hover`/`_last_click` | 约 30,**降值不可达**——残留=D5 | -| 6 board_view 公开方法 | 27/20 | 无拆分动作(27 个逐类核对全为探针契约面与依赖单向纪律承载面,可降空间极小;随 D2 若有微降以实测为准) | 27(持平或微降),**降值不可达**——残留=D5 | -| 7 level_runner 公开方法 | 50/20 | D3 候选 A 删商店委托面 17 个公开方法(外部直连 ShopSession);候选 B 无动作留债 | 候选 A 约 33/候选 B 50,**降值不可达**——残留=D5 | -| 8 level_runner 类变量 | 30/15 | D3 随形态(_shop 收编则 −1,否则持平);无其他收编面 | 约 29–30,**降值不可达**——残留=D5 | -| 9 level_runner _enter_node 返回数 | 7/6 | shop 分支 if/else 双 return 合并为载荷变量单 return;两个 payload 字典逐字保持(pool 分支 `{"gp": gp, "shelf": true}`、legacy 分支 `{"gp": gp}`),零契约风险。备选(code-conventions §1.1-③ 红线):若设计段认定合并无内聚收益则留债——本卡按「合并属同一停点语义的两条发射路径归一」认定有内聚收益,推荐合并 | 6,**归绿** | -| 10 battle_orchestrator 文件长 | 1035/1000 | D1 装板域六函数约 140 行迁出 | 约 890–900(拆后实测),**归绿** | -| 11 adventure_runner 类变量 | 28/15 | D4 断点域拆件(六成员全迁约 22;两成员留宿则约 24–26) | 约 22–26,**降值不可达**——残留=D5 | +| 5 board_view 类变量 | 32/15 | 无拆分动作(D2 裁不拆——第 6 节) | 32 维持,**豁免终局** | +| 6 board_view 公开方法 | 27/20 | 无动作(27 个逐类核对全为探针契约面与依赖单向纪律承载面) | 27 维持,**豁免终局** | +| 7 level_runner 公开方法 | 50/20 | 执行合同=并排卡「level_runner 商店委托层拆除」v1.1(19 委托壳删除+`_shop` 公开化;本卡不重复执行——D6) | 约 33,**降值后豁免终局**(豁免登记随本卡批末落文) | +| 8 level_runner 类变量 | 30/15 | 无动作(`_shop` 留宿主——D3 裁,非无效成员) | 30 维持,**豁免终局** | +| 9 level_runner _enter_node 返回数 | 7/6 | shop 分支 if/else 双 return 合并为载荷变量单 return;两个 payload 字典逐字保持(pool 分支 `{"gp": gp, "shelf": true}`、legacy 分支 `{"gp": gp}`),零契约风险。备选(code-conventions §1.1-③ 红线):若实现期发现合并构成纯计数扭曲则留债呈报——本卡按「合并属同一停点语义的两条发射路径归一」认定有内聚收益 | 6,**归绿** | +| 10 battle_orchestrator 文件长 | 1035/1000 | D1 装板域拆件:六函数迁出+宿主薄壳承接复位块+`_board_generator` 成员退役 | 约 910–920(拆后实测),**归绿** | +| 11 adventure_runner 类变量 | 28/15 | 无动作(D4 裁不拆——第 6 节) | 28 维持,**豁免终局** | ## 8. 关联文档同步面 | 文档 | 关联点(本批实现会改变它的哪条陈述) | 同步义务 | |---|---|---| -| design/engineering/architecture/architecture.md | 「战斗编排域拆件定稿」节与功能层模块归属表(D1 新件行登记、battle_orchestrator 行职责句随动);冒险域/功能层表(D4 新件行登记、adventure_runner 行随动);呈现层表 board_view 行(D2 悬停域件随动);level_runner 行「外部调用面由同签名委托承载」句(D3 候选 A 时换代);「测试与质量域」S13 豁免登记段(D5 若裁豁免) | 设计权威文档——实现批禁直改;逐条列进 `reports/iter-反哺点-<日期>.md`,用户裁决后归文档批落文 | -| game/tests/README.md | 能力清单「棋盘悬停反馈」能力行(已随本卡 v1.0 同批入表——写卡同批义务);「GP 钱包/escrow/商店收口/共享池」行真实入口列(D3 候选 A 时入口改经 ShopSession 直连);代表用例列(本卡新增断言落名后) | 机械面文档——实现批禁写;受影响行由写卡段在形态裁决后的卡修订版同批更新,实现期零改动 | +| design/engineering/architecture/architecture.md | 「战斗编排域拆件定稿」节轴丙与功能层 BoardInstaller 行——**已随本卡 v2.0 设计闭合落文(v1.24)**,实现照册施工;level_runner 行「外部调用面由同签名委托承载」句(D3 候选 A 实现后失真);「测试与质量域」S13 豁免登记段(D5 五键——批末按实测值落文) | 设计权威文档——实现批禁直改;level_runner 句与豁免登记逐条列进 `reports/iter-反哺点-<日期>.md`,用户裁决后归文档批落文 | +| game/tests/README.md | 「GP 钱包/escrow/商店收口/共享池」行真实入口列——已随本卡 v2.0 改为 ShopSession 直连(计划入口,闸双通道认卡);「棋盘悬停反馈」行已随 v1.0 入表(能力独立成立,不随 D2 裁定变化) | 机械面文档——实现批禁写;批末收尾核对表上名字与实际落地一致(改名则回表) | | design/gdd/systems/(全树) | 无关联文档——结构整改不改游戏规则与玩家可见行为(审计报告 §六.5 判定口径沿用) | 无修订预期;若实现中发现契约句被触碰,停卡呈报走反哺点通道 | ## 9. 卡前文件结构图 | 文件 | 职责 | 改动性质 | |---|---|---| -| game/presentation/views/board_view.gd | 棋盘视图壳层(格态渲染入口、入站事件、探针出口) | 修改(非行为改动——_paint_cell 拆分层函数族、rebuild 构建器、悬停域迁出;验收=对照表行 V1/V2) | -| game/presentation/views/board_hover.gd | 悬停预承诺呈现域件(D2,新增) | 新增(非行为改动;验收=对照表行 V2) | -| game/core/level_runner.gd | 关卡域生命周期编排者 | 修改(非行为改动——_enter_node 载荷合并〔载荷逐字保持〕+D3 商店域形态随裁决;验收=对照表行 V3/V6) | -| game/core/battle_orchestrator.gd | 战斗结算编排中枢 | 修改(非行为改动——装板域六函数迁出、三调用点取件改址;验收=对照表行 V4) | -| game/core/board_installer.gd | 棋盘安装与变异布置域件(D1,新增) | 新增(非行为改动;验收=对照表行 V4) | -| game/core/adventure_runner.gd | 冒险结构编排器 | 修改(非行为改动——断点域迁出、resume_adventure 薄壳化;验收=对照表行 V5) | -| game/core/breakpoint_store.gd | 存档断点组装与回放域件(D4,新增) | 新增(非行为改动;验收=对照表行 V5) | -| game/tests/unit/core/level_shop_economy_test.gd | 关卡图与商店宿主套件 | 修改(新增断言 _test_shop_node_entered_payload;D3 候选 A 时调用面改址——测试侧改址申报见第 17 节) | -| game/tests/unit/core/breakpoint_resume_test.gd | 断点往返套件 | 修改(:185 BREAKPOINT_FIELDS 直读随迁改址——测试侧改址申报见第 17 节) | -| game/tests/unit/core/pool_case_d_test.gd、tree_rules_v11_test.gd、hero_ledger_test.gd | 引用商店委托面的三套件 | 修改(仅 D3 候选 A 时调用面改址) | -| game/tests/static_scan.sh | 静态扫描域承载 | 修改(D1 落地时 S7 B1 域文件集与 S8 await 文件集增行——工程随动) | -| game/presentation/camp_shop_presenter.gd、main_adventure_flow.gd、main_overlay_flow.gd、main_ui_build.gd、game/presentation/views/shop_overlay_view.gd、game/sim/level_autoplay.gd | 商店委托面调用方 | 修改(仅 D3 候选 A 时调用面改址——非行为改动) | +| game/presentation/views/board_view.gd | 棋盘视图壳层(格态渲染入口、入站事件、探针出口) | 修改(非行为改动——_paint_cell 拆分层函数族、rebuild 构建器;验收=对照表行 V1) | +| game/core/level_runner.gd | 关卡域生命周期编排者 | 修改(非行为改动——仅 _enter_node 载荷合并〔载荷逐字保持〕;商店委托壳区段归并排卡,本卡不触——验收=对照表行 V3) | +| game/core/battle_orchestrator.gd | 战斗结算编排中枢 | 修改(非行为改动——装板域六函数迁出、宿主薄壳承接复位块、`_board_generator` 成员退役、三调用点改址;验收=对照表行 V4) | +| game/core/board_installer.gd | 棋盘安装与变异布置域件(新增,architecture v1.24 功能层在册) | 新增(非行为改动;验收=对照表行 V4) | +| game/tests/unit/core/level_shop_economy_test.gd | 关卡图与商店宿主套件 | 修改(仅新增断言 _test_shop_node_entered_payload〔尾波 V1〕;委托面调用点改址归并排卡) | +| game/tests/static_scan.sh | 静态扫描域承载 | 修改(S7 B1 域文件集与 S8 await 文件集增行 board_installer——工程随动,architecture 拆件定稿节 S7/S8 随动条在册) | -每个新增件标「新增」者,其「为什么不能复用」理由与唯一落点核查见第 10 节;两处对不上即卡片不成立。 +新增件「为什么不能复用」理由与唯一落点核查见第 10 节;对不上即卡片不成立。 ## 10. 落位与可复用性预检 -- **board_installer.gd(新增)**:复用面核查——装板与变异布置逻辑现行只存在于 battle_orchestrator(全仓 grep 六函数名仅本文件三处调用,无第二实现),无既有件可复用;不能并入 BattleFxHost(效果引擎宿主域,变化原因不同)也不能并入 RewardGrant(授予管线域)。落点唯一:B1 域新文件,`game/core/`。分层:core 层 RefCounted,零 UI、零 await,经引用束注入取协作对象,禁裸引用 autoload(S5)。 -- **breakpoint_store.gd(新增)**:复用面核查——断点拼盘与读侧策略现行在 adventure_runner 内(`BREAKPOINT_FIELDS` 登记单源表唯一);save_manager 是存档 IO 原语层(SlotStore 拆分已立界:IO 与冒险断点语义分工),meta_state_store 是元进度数据件——都不承载冒险断点组装。落点唯一:`game/core/` 新件。 -- **board_hover.gd(新增)**:复用面核查——悬停预承诺逻辑现行全在 board_view(11 函数族 grep 无外部引用);TilePalette/HeroSprite/CellUnit 各管瓦片/精灵/格件绘制,无一承载悬停交互态。落点唯一:`game/presentation/views/` 新件,由 board_view `_init` 建为子件(HeroSprite 同款挂载先例)。 -- **新增函数**:_build_cell_unit、_paint_cell_* 段函数族——全部是既有函数体的逐字搬运或循环体内联体出函,无新增逻辑;迁移函数对账见第 11 节。**零新增数据件、零新增常量表**(BREAKPOINT_FIELDS 为迁移非新增)。 -- **调用路径显式声明**:board_hover 只被 board_view 持有与调用(输入经宿主入站口委托);board_installer 只被 battle_orchestrator 三调用点取件调用;breakpoint_store 只被 adventure_runner 调用——三件均禁反向持有宿主引用(注入回调单向,先例=BattleFxHost 兑付回调)。 +- **board_installer.gd(新增)**:复用面核查——装板与变异布置逻辑现行只存在于 battle_orchestrator(全仓 grep 六函数名仅本文件三处调用,无第二实现),无既有件可复用;不能并入 BattleFxHost(效果引擎宿主域,变化原因不同)也不能并入 RewardGrant(授予管线域)。落点唯一:B1 域新文件,`game/core/`。分层:core 层 RefCounted,零 UI、零 await,经引用束注入取协作对象,禁裸引用 autoload(S5);BoardGenerator 实例件内自建并接线 fatal 回调。 +- **新增函数**:_build_cell_unit、_paint_cell_* 段函数族、宿主薄壳 `_install_and_reset`——全部是既有函数体的逐字搬运或循环体内联体出函,无新增逻辑;迁移函数对账见第 11 节。**零新增数据件、零新增常量表**。 +- **调用路径显式声明**:board_installer 只被 battle_orchestrator 三调用点(经宿主薄壳)调用——禁反向持有宿主引用(注入回调单向,先例=BattleFxHost 兑付回调)。 ## 11. 实现规范预算(新件对照 gdstyle 默认阈值;写码前对账,超预算面=停卡退回写卡段) | 新件 | 公开方法 ≤20 | 类变量 ≤15 | 迁移函数对账(基线源函数键) | |---|---|---|---| -| board_installer.gd | 预算 3(install_new_board+组件出口) | 预算 9(引用束成员) | 六函数现行均无超标键(基线无其函数级键),函数体逐字搬运=计数不变=新文件零新增键 | -| breakpoint_store.gd | 预算 8(快照/回填/读侧入口族) | 预算 6(拟拆成员)+引用束 | _bp_parts 现行 49 行/9 局部(实测 :583-630)均在默认阈值内;_resume_* 四函数均无超标键 | -| board_hover.gd | 预算 6(悬停驱动入口) | 预算 2(_hover/_last_click)+引用束 | 11 函数现行均无超标键(基线无键);_apply_hover_visuals 分支 5 | -| 新增私有函数(board_view 内) | —(私有不计数) | 零新增成员(类变量只降不升) | _paint_cell 三键随拆分消除;段函数逐个低于默认阈值(超 8 分支的段沿绘制层轴下钻,见第 7 节键 1) | +| board_installer.gd | 预算 1(install) | 预算 7(引用束成员 rng/db/minesweeper/reward_economy/encounter 引用/fatal Callable+自建 BoardGenerator) | 六函数现行均无超标键(基线无其函数级键);`_install_new_board` 拆件体与宿主薄壳两段合计行数逐字=计数不变=新文件零新增键 | +| 新增私有函数(board_view/level_runner 内) | —(私有不计数) | 零新增成员(类变量只降不升) | _paint_cell 三键随拆分消除;段函数逐个低于默认阈值(超 8 分支的段沿绘制层轴下钻,见第 7 节键 1) | -存量触面一查:四个涉案存量文件 T0 读数写明「S13 键较登记值只降不升」预期——board_view 6 键(3 归绿+2 降值+1 持平不升)、level_runner 3 键、battle_orchestrator 文件长归绿(类变量 38 为豁免键禁恶化)、adventure_runner 1 键。`_init` 一律引用束注入(字典束),防 max-parameters 新键(先例=迭代 40 卡①)。 +存量触面一查:涉案存量文件 T0 读数写明「S13 键较登记值只降不升」预期——board_view 6 键(3 归绿+1 消除+2 维持不升)、level_runner `_enter_node` 键归绿(键 7/8 归并排卡与豁免通道,本卡不触)、battle_orchestrator 文件长归绿(类变量 38→37 只降);adventure_runner 本批零触碰(键 11 维持)。`_init` 一律引用束注入(字典束),防 max-parameters 新键(先例=迭代 40 卡①)。 ## 12. 任务卡 T0..T7(估时为区间;工作量限制只属迭代层) **T0 读数复核与对账(0.25–0.5 工作日)** - [ ] 以当轮 master 重测 11 键实测值,与基线登记值逐键对账(审计报告 §四.6 纪律:禁按本卡行号直接施工);对不上即停卡呈报 -- [ ] 复核四个文件行数、第 3/7/9/11 节全部 file:line 引用;漂移处就地改卡并记录 +- [ ] 复核涉案文件行数与第 3/7/9/11 节全部 file:line 引用;漂移处就地改卡并记录 **T1 board_view 拆分——4 键归绿(1–1.5 工作日)**(取用:T0 读数;产出:归绿键 1–4) @@ -216,39 +161,21 @@ - [ ] 新增断言 `level_shop_economy_test.gd:_test_shop_node_entered_payload`(规格见对照表 V3) - [ ] 孤立验证:`-- --only=level_shop_economy` 全绿 -**T3 battle_orchestrator 装板域拆件——键 10 归绿(1–1.5 工作日)**(前置:D1 裁决落定) +**T3 battle_orchestrator 装板域拆件——键 10 归绿(1–1.5 工作日)**(前置:architecture v1.24 轴丙在册) -- [ ] 建 `game/core/board_installer.gd`(引用束注入,第 6 节 D1 耦合边界),六函数逐字迁移,宿主三调用点(:271/:801/:835)取件改址;begin_battle 段序与 attune 族零触碰 +- [ ] 建 `game/core/board_installer.gd`(引用束注入,第 10 节落位预检),装板逻辑六函数迁件;`_install_new_board` 拆件体=生成→决议→装板→摇号→布置(415-441 行段),宿主薄壳 `_install_and_reset` 承载复位块(442-451 行段:五处计数清零+板序推进+board_changed 发射+秘宝叠加层退役),时序逐字 +- [ ] 宿主三调用点(:271/:801/:835)改调薄壳;删宿主 `_board_generator` 成员(38→37,禁无效成员) - [ ] static_scan.sh S7 B1 域文件集与 S8 await 文件集增行 - [ ] 孤立验证:`-- --only=variant_placement,round_flow,seal_polarity` 全绿+`python tools/run_smoke.py` -- [ ] 文件长实测 ≤1000(键归绿) +- [ ] 文件长实测 ≤1000(键归绿);类变量实测 37 -**T4 adventure_runner 断点域拆件——键 11 降值(1–1.5 工作日)**(前置:D4 裁决落定) - -- [ ] 建 `game/core/breakpoint_store.gd`(引用束注入,D4 耦合边界),`BREAKPOINT_FIELDS` 与函数族随裁决清单迁移;`resume_adventure` 留宿主薄壳 -- [ ] `breakpoint_resume_test.gd:185` 改址(判据零变化) -- [ ] 孤立验证:`-- --only=breakpoint_resume,save_rng_roundtrip,cross_system_flow,adventure_feats` 全绿 -- [ ] 类变量实测落第 7 节键 11 预期区间 - -**T5 board_view 悬停域拆件——键 5 降值(0.75–1 工作日)**(前置:D2 裁决落定;取用:T1 已合段) - -- [ ] 建 `game/presentation/views/board_hover.gd`,拟拆清单 2 成员+11 函数逐字迁移;三入站口留宿主委托;`hover_probe()` 改读件投影(返回语义零变化) -- [ ] 孤立验证:`tools/probe_gate.sh --click`+`--full` 全绿+render_gate 三张 golden 差异 0.00% -- [ ] 类变量实测 30 - -**T6 level_runner 商店域处置——键 7/8 降值(候选 A 1–1.5 工作日/候选 B 0.25 工作日)**(前置:D3/D6 裁决落定) - -- [ ] 候选 A:删委托面 17 公开+3 私有转发,宿主新增 `shop() -> ShopSession` 取件出口;呈现 5 文件+sim 1 件+测试 4 套件调用面改址(判据零变化);能力清单受影响行由写卡段卡修订版同批更新 -- [ ] 候选 B:零改动,两键留债记录进实现报告 -- [ ] 孤立验证:`-- --only=level_shop_economy,pool_case_d,tree_rules_v11,hero_ledger` 全绿+冒烟 - -**T7 批末对账与收口(0.5 工作日)** +**T6 批末对账与收口(0.5 工作日)** - [ ] 全量闸:`bash tools/run_all_gates.sh --code`(改动全为代码面)全绿;闸 11 触面按第 4 节 PARITY 条款由用户裁决 -- [ ] 键账对账:11 键终值对照第 7 节预期逐键核(归绿 6/降值 5);重锚由用户发令人工 `--refresh`(第 13 节) +- [ ] 键账对账:11 键终值对照第 7 节预期逐键核(归绿 6/豁免 5;键 7 终值视并排卡落地时序——同批编队即见 33);重锚由用户发令人工 `--refresh`(第 13 节);豁免登记 5 条+既有讨论 5 键按实测值落 architecture(反哺点通道) - [ ] 产出物落位卡:`reports/iter-实现报告-<日期>.md`(各卡状态+实机目检总清单+实现决定记录+逐拆出单元职责语句一行)与 `reports/iter-反哺点-<日期>.md`(第 8 节同步面逐条落点)写齐方算收口 -合计估时约 5.25–7.75 工作日(切分预案:D3 裁候选 B 时 −1;T3/T4 任一拆件裁决否决时按留债口径 −1~1.5 并回写第 7 节预期)。 +合计估时约 3–4.25 工作日(切分预案:T3 拆件裁决被证伪时按留债口径 −1~1.5 并回写第 7 节预期;并排卡 v1.1 的 ≈1.5 工作日不占本卡估时,编队总量由编排段合并计)。 ## 13. 验证闸——改动—验收对照表 @@ -257,11 +184,8 @@ | 行 | 需求点(键) | 改动(文件:行) | 验收测试(名称+落点+尾缀) | 层级 | 真实入口 | 判据绑定面 | 能力行 | |---|---|---|---|---|---|---|---| | V1 | 键 1/2/3/4——_paint_cell 拆分层函数族+rebuild 构建器 | board_view.gd:601-739 拆五段、:246-262 抽 _build_cell_unit | 复用 theme_projection_test.gd:_smoke_type_glow、type_glow_test.gd、player_copy_sweep_test.gd:_sweep_board_glyph(既有断言零改动);新增断言零条;render_gate 棋盘 golden 三张 | 单元+探针+golden | BoardView.rebuild()→refresh()→type_glow_probe();board_shot_probe 真实场景帧 | 既有套件断言面+golden 逐像素(差 ≤16/changed ≤2%)——**既有三张基线即改前基线,对拍差异非零即红;重建基线须用户批准** | 既有:未开格类型微光(8 邻作用集/五组色相/零玩法写入);既有:玩家面文案与危险格格面字形 | -| V2 | 键 5——悬停域拆件 | board_hover.gd 新建;board_view.gd:442-552 函数族与 :70-71 成员迁出 | 复用 ui_input_probe(悬停到达/光标语义/路径预览——合成输入路径)+ui_click_probe+type_glow_shot_probe;新增断言零条 | 探针 | 合成 InputEventMouseMotion/MouseButton 经 _gui_input 入站口;hover_probe() 读面 | 探针可见性断言面(hover_probe 返回值、光标形状、格件 st 边框/点迹字段)+golden 三张零差异 | 新增:棋盘悬停反馈(三语义光标/目标格边框/路径预览点迹) | | V3 | 键 9——_enter_node 载荷合并 | level_runner.gd:503-511 双 return 并单 return | 新增 level_shop_economy_test.gd:_test_shop_node_entered_payload〔尾波 V1〕:pool 态 node_entered 载荷含 `shelf: true` 且 gp 等于进店时钱包现值;legacy 态载荷无 `shelf` 键。复用该套件商店房段既有断言 | 单元 | LevelRunner.start_level_external→pick_next_node 进 shop 节点 | node_entered 信号载荷(两 payload 字典逐字保持是本改动判据本体) | 既有:GP 钱包/escrow/商店收口/共享池 | -| V4 | 键 10——装板域拆件 | board_installer.gd 新建;battle_orchestrator.gd:414-549 迁出、:271/:801/:835 改址 | 复用 variant_placement_test.gd:_smoke_variant_placement/_smoke_global_variant、round_flow_skill_pool_test.gd:_smoke_full_battle、seal_polarity_test.gd 全套;新增断言零条;PARITY 对拍按第 4 节条款 | 单元+集成+MC 对拍(须批准) | BattleOrchestrator.begin_battle()/player_request_refresh() | 同种子变异布置逐位断言面+全战斗步骤流逐行回放断言;board_gen/variant_place 取号序零漂移由同种子断言钉住 | 既有:变异布置门控;既有:轮内流与结算五段全序 | -| V5 | 键 11——断点域拆件 | breakpoint_store.gd 新建;adventure_runner.gd 断点函数族与成员迁出 | 复用 breakpoint_resume_test.gd 全套、save_rng_roundtrip_test.gd、cross_system_flow_test.gd:_feats_breakpoint_roundtrip;新增断言零条;breakpoint_resume_test.gd:185 改址(第 17 节申报) | 单元+集成 | AdventureRunner.resume_adventure()/start_adventure() × SaveManagerCore 断点域 | 断点快照往返逐键断言面(27 键冻结——键名/策略/键序零变化) | 既有:断点片段往返与续玩幂等;既有:存档⇄RNG 快照往返保真(集成);既有:旧档迁移链与断点续玩零跳号(集成) | -| V6 | 键 7/8——商店域处置(D3 候选 A 时) | level_runner.gd:751-829 委托面删除;调用点改址(呈现 5+sim 1+测试 4) | 复用 level_shop_economy_test/pool_case_d_test/tree_rules_v11_test/hero_ledger_test 全套(调用面改址、判据零变化);新增断言零条 | 单元 | ShopSession 直连面(候选 A)/LevelRunner 委托面(候选 B 维持现状) | 商店三收口/共享池抽买既有断言面当轮全绿 | 既有:GP 钱包/escrow/商店收口/共享池 | +| V4 | 键 10——装板域拆件 | board_installer.gd 新建;battle_orchestrator.gd:414-549 迁出、:442-451 复位块留薄壳、:271/:801/:835 改址 | 复用 variant_placement_test.gd:_smoke_variant_placement/_smoke_global_variant、round_flow_skill_pool_test.gd:_smoke_full_battle、seal_polarity_test.gd 全套;新增断言零条;PARITY 对拍按第 4 节条款 | 单元+集成+MC 对拍(须批准) | BattleOrchestrator.begin_battle()/player_request_refresh() | 同种子变异布置逐位断言面+全战斗步骤流逐行回放断言;board_gen/variant_place 取号序零漂移由同种子断言钉住 | 既有:变异布置门控;既有:轮内流与结算五段全序 | 反向核对:diff 中每个行为改动均有行——本批申报行为改动仅 V3 一处(载荷合并,行为保持);其余行均为非行为改动(结构整改,判据=零漂移证明)。孤儿断言:无(新增断言仅一条:V3 行〔尾波 V1〕,已挂行)。 @@ -270,8 +194,8 @@ 1. 禁为过闸 refresh 换绿:基线重生成只由用户发令,批末键账对账后人工 `python tools/gdstyle_gate.py --refresh` 一次执行(禁闸内自动重生成、禁实现批中途 refresh)。 2. 还债=数值下降自然绿:拆件后同键数值下降不判红,无需动基线;归绿键在下批重锚后自然消失。 3. 出现恶化(同键数值较登记值上升、基线外新键)=停卡呈报,禁自行消化。 -4. 重锚守卫:新键数较旧基线少逾 10% 须 `--force` 显式确认——本批预期归绿 6 键(16→约 10–11,降幅约 31–37%),重锚时须带 `--force` 由用户执行。 -5. 豁免键(main.gd 类变量等 5 键)不在本批对账范围;battle_orchestrator 类变量 38 为已登记豁免键,本批禁恶化。 +4. 重锚守卫:新键数较旧基线少逾 10% 须 `--force` 显式确认——本批预期归绿 6 键(16→约 10,降幅约 37%;键 7 随并排卡降值 50→33,同批编队时同一次重锚即含),须带 `--force` 由用户执行。 +5. 豁免键范围:既有豁免 5 键(main.gd 类变量等——不在本批对账范围;battle_orchestrator 类变量 38→37 为已登记豁免键,只降不升)+本批 D5 裁定 5 键(批末按实测值落文——键 7 实测值视并排卡落地时序;落文前照常按基线对账)。 ## 15. MC/数值与 RNG 零触碰声明 @@ -281,17 +205,15 @@ - **L1 自救**:迁移函数编译错、探针断言调用面改址漏改——就地修复重跑最窄确认。 - **L2 记录继续**:实测值与第 7 节预期区间偏离但在同档位内(如降值幅度略小)——记入实现报告「实现决定记录」。 -- **L3 停机写报告等用户**:①拆分边界纪律④触发——按职责轴拆不出内聚单元(含 D2/D4 成员归属裁决被证伪);②机检预算互斥——新件实数超第 11 节预算或迁移函数现出超标键=上游缺陷停卡退回写卡段;③golden 对拍差异非零;④S13 键恶化或基线外新键;⑤PARITY 触面处置分歧;⑥断言面被下游兜底吸收致判据绑不上(按 test-conventions §8.4 出口呈报)。 +- **L3 停机写报告等用户**:①拆分边界纪律④触发——按职责轴拆不出内聚单元(T1 五段/T3 装板域形态被证伪);②机检预算互斥——新件实数超第 11 节预算或迁移函数现出超标键=上游缺陷停卡退回写卡段;③golden 对拍差异非零;④S13 键恶化或基线外新键;⑤PARITY 触面处置分歧;⑥断言面被下游兜底吸收致判据绑不上(按 test-conventions §8.4 出口呈报)。 ## 17. 测试削弱申报(允许改动的旧断言及理由) -1. `breakpoint_resume_test.gd:185`——`AdventureRunnerScript.BREAKPOINT_FIELDS` 直读随件迁改址为 `BreakpointStoreScript.BREAKPOINT_FIELDS`(D4 落地时);判据零变化,仅常量承载文件换代。 -2. D3 候选 A 时——level_shop_economy/pool_case_d/tree_rules_v11/hero_ledger 四套件中调用 `runner.shop_*()` 委托面的语句改直连取件出口;断言条件与期望值零变化。 -3. 除此之外禁删断言、禁放宽阈值、禁缩小扫描面、禁把真实入口换成下层直调;未申报的削弱由独立验收审计判红。 +零申报——本批不删任何断言、不改判据阈值、不缩扫描面、不把真实入口换成下层直调;唯一新增断言=V3 行〔尾波 V1〕(既有断言零改动)。商店委托面的测试改址归并排卡 v1.1 管辖(其自报零申报——只改调用地址,断言条件与期望值零变化)。未申报的削弱由独立验收审计判红。 ## 18. 独立验收审计 -合并前由未参与实现的会话或子代理执行;报告落 `reports/iter-验收审计-<日期>.md`。审计至少做四件事(test-conventions §8.7):逐行核对第 13 节对照表(测试存在、真执行、尾缀可 grep、真实入口未绕过改动点);抽查判据绑定面;检查测试削弱(对照第 17 节申报);核对 V2/V4/V6 行「非行为改动」判定依据(零漂移证明是否在当轮真实跑批中成立)。未过不得合并。 +合并前由未参与实现的会话或子代理执行;报告落 `reports/iter-验收审计-<日期>.md`。审计至少做四件事(test-conventions §8.7):逐行核对第 13 节对照表(测试存在、真执行、尾缀可 grep、真实入口未绕过改动点);抽查判据绑定面;检查测试削弱(对照第 17 节申报);核对 V4 行「非行为改动」判定依据(零漂移证明是否在当轮真实跑批中成立)。未过不得合并。 ## 19. 代拍板白名单(允许 agent 自行拍板的微决策) @@ -303,6 +225,6 @@ 超清单决策记入实现报告「实现决定记录」节。 -## 20. 待裁点清单(重申——全部待用户裁决,裁决清零前本卡不得编入迭代) +## 20. 裁决记录重申 -D1 装板域新件形态与引用束构成/D2 悬停域新件形态与 _r0 归属认定/D3 商店域候选 A·B 与 _shop 去留/D4 断点域新件形态与 _pending_next_level·_loadout_seeded 归属/D5 五个降值键终局处置(豁免登记或基线留债)/D6 商店域与在册条目并案或剔除。详见第 6 节备选案与淘汰依据。 +D1–D6 已全部裁决闭合(2026-10-29 用户裁,第 6 节):装板域拆新件(两修正)/悬停域不拆/商店域候选 A 并排编队(执行合同=并排卡 v1.1)/断点域不拆/五降值键豁免终局——**零待裁点,卡片可编排**。豁免登记 5 条与既有讨论 5 键合并,批末按实测值经反哺点通道一次落文 architecture。 diff --git a/待办清单.md b/待办清单.md index d6a13fbc..96f81622 100644 --- a/待办清单.md +++ b/待办清单.md @@ -60,13 +60,11 @@ #### gdstyle 尾波清偿批——基线余量 11 键定向整改(2026-10-29 登记,来源=审计发现) -**实况**:证据=`tools/gdstyle_baseline.txt`(2026-10-29 人工重锚后余量 16 键)+reports/审计-gdstyle存量债清点与清偿方案-2026-10-26.md(§三波次方案与 §六文档设计段裁定记录,裁定全部继续有效)。迭代 39/40/41 三批清偿后余 16 键:本批承接 11 键——board_view 6(_paint_cell 长度 139/分支 24/局部 22、循环内 new、类变量 32、公开方法 27)/level_runner 3(公开方法 50、类变量 30、_enter_node 返回 7)/battle_orchestrator 文件长 1035/adventure_runner 类变量 28;另 5 键走豁免通道另行讨论不在本批(main.gd 类变量 49、tune_sim_controller 循环内 await、board_cell_unit 类变量 30、standee_body 类变量 19、battle_orchestrator 类变量 38——其中三条已有架构豁免登记)。需求卡片已成 v1.0 草稿:reports/需求卡片-gdstyle尾波清偿批-2026-10-29.md——**四个拆件项未过设计段裁决**(battle_orchestrator 装板域/adventure_runner 断点恢复域/board_view 悬停域/level_runner 商店域,卡内第 6 节各备选案并列),卡片编入迭代前置=待裁点经设计段由用户裁决清零,卡片不代替裁决。预期两档:归绿 6 键(_paint_cell×3、循环内 new、_enter_node、文件长);降值不可达 5 键(board_view 两键、level_runner 两键、adventure_runner 一键——拆件后实测重锚,残留处置豁免登记或留债归设计段裁决)。与在册条目「level_runner 商店委托层拆除」同面(并案或剔除已列卡内待裁点 D6)。MC/数值零触碰(结构整改不改数值与 RNG 消费序);battle_orchestrator 触 PARITY_TOUCH_FACES——实跑对拍须经用户批准、不得借机重锚。S13 键账对账在批末,基线重锚由用户发令人工 --refresh(预期降幅逾 10% 须 --force)。 - -**缺口**:四个拆件项的拆分形态、成员归属与残留键处置(豁免登记或留债)未经设计段裁决(D1–D6 六点);裁决落定并完成 architecture.md 登记行反哺落文后卡片定稿,方可编入迭代。 +**实况**:证据=`tools/gdstyle_baseline.txt`(2026-10-29 人工重锚后余量 16 键)+reports/审计-gdstyle存量债清点与清偿方案-2026-10-26.md(§三波次方案与 §六文档设计段裁定记录,裁定全部继续有效)。迭代 39/40/41 三批清偿后余 16 键:本批承接 11 键——board_view 6(_paint_cell 长度 139/分支 24/局部 22、循环内 new、类变量 32、公开方法 27)/level_runner 3(公开方法 50、类变量 30、_enter_node 返回 7)/battle_orchestrator 文件长 1035/adventure_runner 类变量 28;另 5 键走豁免通道另行讨论不在本批(main.gd 类变量 49、tune_sim_controller 循环内 await、board_cell_unit 类变量 30、standee_body 类变量 19、battle_orchestrator 类变量 38——其中三条已有架构豁免登记)。需求卡片 v2.0 定稿(零待裁点):reports/需求卡片-gdstyle尾波清偿批-2026-10-29.md 设计段裁决 2026-10-29 用户裁闭合(D1 装板域拆新件 BoardInstaller 两修正·architecture v1.24 轴丙已落文/D2 悬停域不拆/D3 商店域候选 A/D4 断点域不拆/D5 五降值键豁免终局/D6 商店域并排编队——执行合同=并排卡「level_runner 商店委托层拆除」v1.1,本卡不重复执行),零待裁点。预期两档:归绿 6 键(_paint_cell×3、循环内 new、_enter_node、文件长);豁免终局 5 键(board_view 32/27、level_runner 50→33/30、adventure 28——批末按实测值落 architecture 豁免登记,键 7 实测值视并排卡时序)。本卡估时 3–4.25 工作日(并排卡 ≈1.5 工作日另计)。MC/数值零触碰(结构整改不改数值与 RNG 消费序);battle_orchestrator 触 PARITY_TOUCH_FACES——实跑对拍须经用户批准、不得借机重锚。S13 键账对账在批末,基线重锚由用户发令人工 --refresh(预期降幅逾 10% 须 --force)。 **改动面**:游戏代码 -**状态**:文档设计中+待写卡 +**状态**:文档设计已闭合+已写卡 #### 数值标定窗口总挂账——原九条数值类条目合并(2026-10-28 登记,来源=会话提及)