并master(迭代42批后收尾)——架构v1.26反哺点落文+批末移交小件登记
This commit is contained in:
commit
05d1988fcd
8 files changed
+31
-630
No files matched your search
@@ -1,24 +0,0 @@
|
||||
# 迭代 42 反哺点清单(2026-10-29)
|
||||
|
||||
要写进 `design/` 的点逐条列全:哪个文件哪一节、改成什么、依据是什么。用户在会话中裁决后归文档批落文,落文后本条清掉(不登记待办清单)。
|
||||
|
||||
## 反哺点 1:architecture.md:109 ShopSession 行——委托承载句失效+公开面格重写(卡② §6)
|
||||
|
||||
- **位置**:`design/engineering/architecture/architecture.md` 功能层表 ShopSession 行(:109)「对外暴露」格。
|
||||
- **失效陈述**:「外部调用面由 LevelRunner 同签名委托承载(外部零变化)」——委托壳已随迭代 42 卡② 全量拆除(19 委托+2 死壳归零)。
|
||||
- **改写内容全文(建议落文)**:该格末句改为——「外部调用面=调用方经宿主 LevelRunner 公开成员 `shop` 直连(调用直连不留委托壳,2026-10-26 Middle Man 裁定;迭代 42 拆除);直连消费的方法=shop_products/current_price/purchased_tier/buy_product/player_request_refresh/set_shop_pool/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(+白盒两入口仅测试侧:_draw_shelf/_spend_discounted)」。
|
||||
- **set_shop_pool 调用面改述**:pool 注入经 LevelRunner 构造 ctx 供给(level_runner.gd:101–102 内部直调 ShopSession.set_shop_pool);原委托块注释「AdventureRunner._start_current_level 唯一调用方」系陈旧表述(全仓 grep 证实产品码零其他调用方),随壳删除作废;测试面直连 `shop.set_shop_pool`。
|
||||
- **依据**:迭代 42 卡② v1.1 §2–§6(拆除形态权威=architecture.md:154「调用直连:不留中间人委托壳」);实测残留扫描零真残留(实现报告 §7)。
|
||||
|
||||
## 反哺点 2:architecture.md「测试与质量域」S13 豁免登记段——本批 5 键+既有讨论 5 键按实测值落文(卡① D5/§14.5)
|
||||
|
||||
- **位置**:`design/engineering/architecture/architecture.md`「测试与质量域」S13 豁免登记段(先例=battle_orchestrator 第三条形态:键永久基线内、禁再恶化、豁免不等于了结)。
|
||||
- **落文内容(批末实测值,2026-10-29 全量扫描)**:
|
||||
- board_view.gd max-class-variables = 32(D2 裁悬停域不拆——类变量无拆分动作可归绿,残留面全为契约承载)
|
||||
- board_view.gd max-public-methods = 27(同 D2——27 个逐类核对全为探针契约面与依赖单向纪律承载面)
|
||||
- level_runner.gd max-public-methods = 33(D3/D6——委托壳拆除后终值,直连形态下无再降空间)
|
||||
- level_runner.gd max-class-variables = 30(D3——`shop` 公开成员留宿主,非无效成员)
|
||||
- adventure_runner.gd max-class-variables = 28(D4 裁断点域不拆——断点协议住冒险生命周期 owner 内本身内聚)
|
||||
- 既有讨论 5 键同段合并落文:main.gd max-class-variables = 49/tune_sim_controller.gd await-in-loop/board_cell_unit.gd max-class-variables = 30/standee_body.gd max-class-variables = 19/battle_orchestrator.gd max-class-variables = 37(随装板域拆件 38→37 只降,替代原登记值 38)。
|
||||
- **依据**:卡① §6 D5 裁决(2026-10-29 用户裁)+§14.5;实测值见实现报告 §3 键账对账表。
|
||||
- **配套**:S13 基线重锚由用户发令 `python tools/gdstyle_gate.py --refresh --force`(16→10 键,降幅逾 10%)——重锚后归绿 6 键自然消失,豁免 10 键以新登记值留基线。
|
||||
@@ -1,94 +0,0 @@
|
||||
# 迭代 42 实现报告(2026-10-29)
|
||||
|
||||
批次=gdstyle 尾波清偿批(卡① v2.0)+ level_runner 商店委托层拆除(卡② v1.1)并排编队。执行形态=整迭代单工作区 `g-plan2-iter42`(两卡均未声明并行工作区,D6 裁「同迭代并排编队、先后皆可」=串行任一序),卡序 gdstyle 先(编排既定)、level_runner 后;卡① T6 批末对账与卡② T2 收口合并为迭代总收口一次执行。定义面(roadmap/待办清单/两卡)已随编排提交 14a10e5e 入库,本批无定义面搬运提交。§1 表内提交号为重塑前中间提交;分支史已按一卡一笔重塑(卡①=63e9fbf3/卡②=11cd46a5/收尾=b704f1dc 含并 master 四笔文档面),原史留 backup/iter42-20261029-080300。
|
||||
|
||||
## 1. 各卡状态
|
||||
|
||||
| 卡 | 任务 | 状态 | 分支提交 |
|
||||
|---|---|---|---|
|
||||
| 卡① gdstyle 尾波清偿 | T0 读数复核与对账 | 完成(16 键现值与基线登记值逐键全数对上,零漂移;行位订正 7 处就地落卡) | 509f41f5(随 T1 同笔) |
|
||||
| 卡① | T1 board_view 拆分 | 完成(键 1–4 归绿) | 509f41f5 |
|
||||
| 卡① | T2 _enter_node 载荷合并 | 完成(键 9 归绿) | c47a032d |
|
||||
| 卡① | T3 装板域拆件 BoardInstaller | 完成(键 10 归绿,类变量 38→37) | adff0772 |
|
||||
| 卡② level_runner 委托拆除 | T0 调用面直连(中间态) | 完成(改址六件产品码+sim+七件测试,壳在位全绿) | f7e898be |
|
||||
| 卡② | T1 壳拆除与完整性证明 | 完成(键 7 实测 50→33,残留扫描零真残留) | ae3bd5fc |
|
||||
| 两卡 | T6/T2 迭代总收口 | 本报告+反哺点清单+全量域闸+独立验收审计+合回呈报 | 见 git log |
|
||||
|
||||
## 2. 实际改动—验收对照表(承两卡 §13/§11 需求侧对照表;结果列为本批实测)
|
||||
|
||||
| 行 | 需求点 | 改动(文件:行) | 验收测试(名称+落点+尾缀) | 层级 | 真实入口 | 判据绑定面 | 结果 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| V1 | 键 1/2/3/4——_paint_cell 拆五段+rebuild 构建器 | board_view.gd `_paint_cell` 拆 `_paint_cell_ink/_paint_cell_base/_paint_cell_facade/_paint_cell_overlays/_paint_cell_fog` 五段+`_build_cell_unit` 出函 | 复用 type_glow_test(48 checks 绿)/theme_projection_test._smoke_type_glow(163 checks 绿)/player_copy_sweep_test(22 checks 绿);render_gate 棋盘 golden 三张 | 单元+探针+golden | BoardView.rebuild()→refresh()→type_glow_probe();board_shot_probe 真实场景帧 | 既有断言面+golden 逐像素 | 绿——三套件全绿(theme_projection 的 163 checks 全过;该套件 FAIL=存量红,见 §6-①,与本改动无涉);golden 有 diff 与 stash 对照逐位同值(L2/L3 0.00%、L1 2.74% 双侧同值——见 §6-③) |
|
||||
| V3 | 键 9——_enter_node 载荷合并 | level_runner.gd shop 分支双 return 并单 return(payload 变量,两字典逐字保持) | 新增 level_shop_economy_test.gd:_test_shop_node_entered_payload〔尾波 V1〕四断言 | 单元 | LevelRunner.start_level(_external)→pick_next_node 进 shop 节点 | node_entered 信号载荷(pool 含 shelf:true 且 gp=进店钱包现值 27;legacy 无 shelf 键且 gp=现值 30) | 绿——套件 192 checks 全绿(exit 0) |
|
||||
| V4 | 键 10——装板域拆件 | board_installer.gd 新建;battle_orchestrator 六函数迁出、复位块留薄壳 `_install_and_reset`、三调用点改址、`_board_generator` 成员退役 | 复用 variant_placement_test(49 checks)/round_flow_skill_pool_test(129 checks)/seal_polarity_test(70 checks)/run_time_fatal_test(负套件 exit=1,wr5 棋盘生成半边随拆件改指 BoardInstaller 新组装点——见 §5-7)+run_smoke(15 项) | 单元+集成 | BattleOrchestrator.begin_battle()/player_request_refresh() | 同种子变异布置逐位断言面+全战斗步骤流逐行回放断言(board_gen/variant_place 取号序零漂移由同种子断言钉住)+违约封印传导链(wr5 双半边) | 绿——三套件+负套件+冒烟全绿;键 10 归绿(文件长 916≤1000 键消失)、类变量实测 37 |
|
||||
| R1 | 调用面直连改址(非行为改动) | 产品码 6 件+sim 1 件+测试 7 件全部调用点 `<表达式>.shop.<方法>` | 既有套件回归两轮全绿:T0 中间态轮(壳在位)+T1 壳删后轮(level_shop_economy 192/hero_ledger/adventure_feats/pool_case_d/treasure_effects/curio_refresh_paid/meta_progression_forge 全套+冒烟) | 单元+接口 | 各套件既有真实入口 | 既有断言逐位不变+壳删后编译通过 | 绿——两轮全绿(全量 65 套件两轮失败清单逐一同值=9 存量红,见 §6-②;七件相关套件两轮全绿) |
|
||||
| R2 | 壳块拆除(非行为改动) | level_runner.gd :723–725 区块涉委托两句+:751–828 十九委托全量删除(含死壳 2 枚) | 残留扫描零命中(19 方法名全仓 grep,输出留 §7)+T1 套件绿 | 静态+单元 | grep 全仓+套件真实入口 | 扫描面>0(19 名单命中 34 行逐一判类归属)+壳删后零引用可编译 | 绿——34 行全数为他类定义与调用/字典键名/宿主内部 shop. 直连点,零真残留 |
|
||||
| R3 | 宿主成员公开化(非行为改动) | level_runner.gd:44 `_shop`→`shop`+内部引用 28 处随更名 | 随 R1 两轮套件绿 | 单元 | 套件真实入口 | 内部使用点行为不变 | 绿——词级 `_shop` 全仓 .gd 零残留(件核) |
|
||||
| R4 | 注释同步六处(非行为改动) | shop_session.gd:4/level_runner.gd 区块句/level_autoplay.gd:335/:356/shop_overlay_view.gd:88/152/tree_rules_v11_test.gd:6 | 随批代码域闸绿(静态扫描覆盖文件头纪律面) | 静态 | —(静态判据) | 静态扫描+评审注记(观测面局限申报:注释无运行时提交面) | 绿——六处已同步,闸 09 见全量域闸回执 |
|
||||
|
||||
反向核对:diff 中行为改动仅 V3 一处(载荷合并,行为保持——载荷字典逐字);其余均为非行为改动(结构整改,判据=零漂移证明如上)。孤儿断言:无(新增断言仅 V3 行四条〔尾波 V1〕,已挂行)。
|
||||
|
||||
## 3. 键账对账(S13——11 键终值对照卡① §7 预期)
|
||||
|
||||
| 键 | 预期(卡① §7) | 批末实测 | 判定 |
|
||||
|---|---|---|---|
|
||||
| 1 board_view _paint_cell 长度 | ≤50 归绿 | 键消失(函数已拆五段,新函数无超标键) | 归绿 ✓ |
|
||||
| 2 board_view _paint_cell 分支 | ≤8 归绿 | 键消失 | 归绿 ✓ |
|
||||
| 3 board_view _paint_cell 局部变量 | ≤10 归绿 | 键消失 | 归绿 ✓ |
|
||||
| 4 board_view allocation-in-loop | 消除归绿 | 键消失(.new() 迁入 _build_cell_unit) | 归绿 ✓ |
|
||||
| 5 board_view 类变量 | 32 维持豁免终局 | 32 持平 | 豁免终局 ✓ |
|
||||
| 6 board_view 公开方法 | 27 维持豁免终局 | 27 持平 | 豁免终局 ✓ |
|
||||
| 7 level_runner 公开方法 | 约 33 降值后豁免终局 | 33(50→33,并排卡兑现,与卡面预测精确一致) | 豁免终局 ✓ |
|
||||
| 8 level_runner 类变量 | 30 维持豁免终局 | 30 持平 | 豁免终局 ✓ |
|
||||
| 9 _enter_node 返回数 | 6 归绿 | 键消失 | 归绿 ✓ |
|
||||
| 10 battle_orchestrator 文件长 | 约 910–920 归绿 | 键消失(实测 916 行) | 归绿 ✓ |
|
||||
| 11 adventure_runner 类变量 | 28 维持豁免终局 | 28 持平(本批零触碰) | 豁免终局 ✓ |
|
||||
|
||||
豁免通道既有键随批只降核对:battle_orchestrator 类变量 38→37(D1 修正二兑现,登记值不抬)。**零新增键**(全扫描现值 10 键=基线 16−归绿 6,EXTRA 清单为空)。基线重锚=用户发令人工 `python tools/gdstyle_gate.py --refresh --force`(降幅 6/16≈37.5% 逾 10% 须 --force,卡① §14.4)。
|
||||
|
||||
## 4. 逐拆出单元职责语句(拆分边界纪律①,逐件一行)
|
||||
|
||||
- **BoardInstaller**(新件,board_installer.gd):棋盘安装与变异布置域唯一承载——生成受理→全局作用域变异决议→装板受理→资源摇号资格域组装(roll_board 恰一次)→region 变异决议与连通片布置;单一变化原因=棋盘设置顺序与变异布置算法。
|
||||
- **_paint_cell_ink**(board_view 私有段):字形与色牌层——reveal 记录→字形/墨色判定+u.glyph/u.glyph_color 终写+双峰纹理板落牌。
|
||||
- **_paint_cell_base**:基底瓦片层——瓦片查表/平色回退 sb+英雄蓝框载体与贴图缺位回退字形。
|
||||
- **_paint_cell_facade**:立面投影层——未开墙格南缘立面/轮廓描边码;已开格北缘投影暗带/E 格高墙面。
|
||||
- **_paint_cell_overlays**:秘宝/变异叠加层——真视红框/预读徽章/变异角标/奖励徽章/类型微光组号。
|
||||
- **_paint_cell_fog**:迷雾层——灯光区外未开格全黑/已开格记忆态灰显。
|
||||
- **_build_cell_unit**:逐格构建器——CellUnit 实例化与属性装配(allocation 出循环唯一出函面)。
|
||||
- **_install_and_reset**(battle_orchestrator 宿主薄壳):装板受理承接+宿主态复位单点(五处计数清零+板序推进+board_changed 发射+秘宝叠加层退役)。
|
||||
- **LevelRunner.shop**(公开成员,非新件):商店件取件唯一形态(委托壳拆除后的直连承载,零新增职责)。
|
||||
|
||||
## 5. 实现决定记录(代拍板白名单外事项备案)
|
||||
|
||||
1. **run_all.gd `--only` 逗号形态工具缺陷**(卡① T1/T3、卡② T0 验证命令形态适配):`game/tests/run_all.gd` 的 `--only` 解析自 6caf56b5 起把整串 `--only=a,b,c` 当单个词(不按逗号拆分),与文件头注「词[,词…]」文档形态及 `tools/run_all_gates.sh:331` 的逗号拼接传参形态均不符——本批改用逐词重复 `--only=` 形态(语义等价)。批末全量闸不受影响(本批触 battle_orchestrator=PARITY 触面表→横切→02 回落全部套件,不经选跑分支);**建议登记工程改动**:run_all.gd 补逗号拆分(或闸脚本改多旗标传参)。
|
||||
2. **BoardInstaller 宿主持有形态**:薄壳 `_install_and_reset` 内逐调用构建 installer(非宿主成员)——T3 验收项「类变量实测 37」要求宿主不新增成员;BoardGenerator 唯一成员 fatal_handler、零跨 generate 调用状态,逐调用构建观察等价(装板取号序由同种子断言钉住,实测全绿)。
|
||||
3. **ink→base 段间 bg 传值**:卡① §7 键 1 限「段间只经 u.st/glyph/digit_col 传值」;bg(基底色)无单元场域可承载、其唯一消费方在 base 段回退分支——经 ink 段返回值交 base 段(唯一例外,函数体逐字搬运不受影响)。
|
||||
4. **两卡里程碑全量闸并入迭代总收口**:卡① T6 与卡② T1 的「里程碑出口 run_all_gates --code」按 iter 技能闸序列「全量域闸每迭代一次」铁律合并为收口单次跑闸(重塑后)——卡面两处闸义务由同一次跑闸兑付。
|
||||
5. **worktree 冷检出 `--editor --quit` 首跑 `--path` 误指仓库根**(未建 .godot 类缓存致首跑解析红)——改指 game 切片目录重刷后正常(106 类)。坑速查条目候选,登记建议随工程批。
|
||||
6. **信号契约注释陈旧发现**(不属本批改动面):level_runner.gd:14 node_entered 信号注释 `shop={gp}` 与 pool 态实际载荷 `{gp, shelf:true}` 不符——改动前即如此(本批未触载荷),随本报告呈报,归文档批/后续批处置。
|
||||
7. **run_time_fatal_test wr5 改指新组装点(L1 就地修复)**:T3 删宿主 `_board_generator` 成员后,该负面套件 :71 的白盒取数 `oc._board_generator._fatal(...)` 断链(脚本错误中断断言函数→零断言退出 2)=**本批新增红**。卡面 §3 现状考证只查了 battle_orchestrator.gd 全文件(四处使用属实)漏查跨文件测试取数点;§16 L1「探针断言调用面改址漏改——就地修复重跑最窄确认」通道处置:wr5 棋盘生成半边改经新组装点(BoardInstaller 引用束 fatal_cb 接线)构建后触发,断言目标(违约→封印传导)不变、断言零增删(§17 四不违);卡 §9 文件结构图就地补行;复跑 exit=1(负套件期望码)绿。**勘误**:本报告先前稿曾将该套件误列存量红——彼次 stash 对照时工作树处于卡①完成态(HEAD 已含 T3)而非 master 原态,对照被污染;更正后 02 存量红=9 套件与基线登记清单逐项一致。
|
||||
8. **PARITY 实跑口径(用户裁决①「批准实跑」的执行记录)**:实跑已执行(终闸 PARITY_APPROVED=1 一轮+归因实验一轮,见 §6-5);终闸回执按既有基线口径出 11=NEED-APPROVAL(未实跑态)——不把本轮对拍红指纹(red-nokeys)记入基线:该指纹形态下任何未来对拍失败(无论差异内容)同指纹不可区分,记入即全量放行后续漂移,属超出本轮授权的新裁决事项;对拍漂移的查因/重锚随 §6-5 归测试债条目。
|
||||
|
||||
## 6. 存量红清单(master 原状同值复现,非本批新增——stash 对照法逐组取证)
|
||||
|
||||
1. **theme_projection_test**:`_recent_list` 断链(test:805 访问 `camp._recent_list`——成员已随迭代 41 卡② 拆入内嵌类 `_SideState`;iter41 特许移交合回未跑遗留)。该套件 163 checks 本体全绿,FAIL=脚本错误扫描命中。
|
||||
2. **全量轮 9 套件红**(T0/T1 两轮与 master 原状逐一同值,与基线登记清单及待办清单「迭代 41 测试债修复」条目逐项一致):config_db_test(cattr 解析)/config_db_fatal_oob_test(退出码 2≠1)/table_structure_guard_test(meta_state)/treasure_items_test(crossrun)/standee_fx_sweep_test(set_trans)/forge_workbench_test(120s 挂死)/tree_requires_level_test(row_by_id Nil)/save_manager_domain_test(_migrate_legacy_save)/theme_projection_test(同①)——形态与迭代 41 卡①(核心数据面结构收敛)卡②(呈现层结构收敛)改动特征吻合;已随基线 80b49c0f 记账(用户 2026-10-29 裁带红合并承接)。初稿曾多列 run_time_fatal_test 一项,经 §5-7 勘误更正为本批新增红(已修)。
|
||||
3. **probe_gate --click 三红**:ui_input_probe 超时挂死(exit 124)/ui_struct_probe resume 断言/ui_click_probe 16 行 set_trans 空值(battle_end_overlay 等未触文件)——master 原状同值复现(连错误行数都一致)。
|
||||
4. **render_gate golden L1_dungeon 2.74% 超容差**:master 原状同值(L2/L3 双侧 0.00%)——golden 锚落后于 master 现状,重锚须用户批准(本批禁自行换锚)。
|
||||
5. **gate 11 PARITY 实跑发现(用户批准①后执行)**:回放确定性对拍锚(2026-10-26 冻结)与现行全冒险重放在三变体(base/attune/shop)全部逐位漂移(RUNSUM 40 行全异+JSONL 行数级差异,如 base/normal 锚 9216 行 vs 今 9221 行)——**master 原状(ee4efad5)单独对拍 base 变体同值复现(今值指纹 8a81884efe51/afc8c07c1bf3 与本批分支逐字相同)=漂移系迭代 40/41 特许合回的存量(两批合并时全量闸停跑、对拍从未执行),本批在其上零新增漂移**。取证件:`game/tests/.gates/parity.log`(终闸实跑)+归因实验记录(master 态 checkout 后 base 变体重跑)。归「迭代 41 测试债修复」条目扩展,重锚/查因裁决归该条目承接(锚重制须用户批准——本批禁自行换锚)。
|
||||
|
||||
## 7. 残留扫描输出留痕(卡② T1/R2 判据)
|
||||
|
||||
19 方法名全仓 grep(game/ 下 .gd)命中 34 行,逐行判接收方类归属**零真残留**:字典键名(adventure_runner:505/546/591/600、breakpoint_resume_test:196、level_shop_economy_test:1378/1383、sim 两文件共 4 行);他类定义与调用(battle_orchestrator.player_request_refresh 定义 :709+settlement 侧 8 处调用、CurioDeck.pool_stock 经 deck() 9 处、GpWallet.spend_gp 定义 :15);宿主内部直连使用点(level_runner.gd:102/305/306/704 shop. 形态)。产品码与测试面零旧委托调用。
|
||||
|
||||
## 8. 实机目检总清单
|
||||
|
||||
本批零玩家可观测改动(结构整改+调用面直连)——**无新增目检项**。既有在册提醒(不阻塞):迭代 41 移交的四项实机目检在体验验证清单㊵。
|
||||
|
||||
## 9. 遗留读数义务与登记建议
|
||||
|
||||
1. S13 基线重锚:用户发令 `python tools/gdstyle_gate.py --refresh --force`(§3)。
|
||||
2. MC 对拍:不补跑(零数值零数据表零 RNG 流词表改动,卡① §15)。
|
||||
3. PARITY gate 11(回放确定性对拍):本批触 PARITY_TOUCH_FACES(battle_orchestrator.gd)——闸记 NEED-APPROVAL,实跑或跳过由用户裁决(卡① §15,卡内不定案);批准实跑=`PARITY_APPROVED=1` 重跑闸。
|
||||
4. 工程改动登记建议:§5-1(--only 逗号拆分)+§5-5(坑速查补条)。
|
||||
5. 独立验收审计:报告落 `reports/iter42-验收审计-2026-10-29.md`(未参与实现的子代理执行,test-conventions §8.7 四事),结论见该件。
|
||||
@@ -1,72 +0,0 @@
|
||||
# 迭代 42 独立验收审计报告
|
||||
|
||||
- 审计人:独立子代理(未参与本批实现,test-conventions §8.7)
|
||||
- 审计日期:2026-10-29
|
||||
- 审计范围:`git diff ee4efad5..b704f1dc`(master→分支尖,3 提交:63e9fbf3 卡①/11cd46a5 卡②/b704f1dc 收尾)
|
||||
- 审计输入:卡① 对照表 §13 与 §17 零申报、卡② 对照表 §11 与 §4.7 零申报、实现报告 §2/§5/§6/§7、回执 `game/tests/.gates/receipt.json`(commit b704f1dc,domain=code,scope=full)与 `.gates/` 各闸日志、`%TEMP%\iter42_final_gate.log`
|
||||
- 方法:只读取证+最窄抽查;不采信实现报告「已全绿」自述,判据全部独立复核(grep/逐 hunk diff/新旧件逐行比对/日志实读)
|
||||
- 义务边界:未改 `game/` 下任何文件;本报告外未写任何文件
|
||||
|
||||
## 一、两卡对照表逐行核对(V1/V3/V4/R1/R2/R3/R4)
|
||||
|
||||
| 行 | 核对结果 | 依据(独立复核) |
|
||||
|---|---|---|
|
||||
| V1 | **通过** | 三套件在册且函数落点属实:theme_projection_test.gd:183 `_smoke_type_glow`、type_glow_test.gd、player_copy_sweep_test.gd:106 `_sweep_board_glyph`;三文件在本 diff 范围**零改动**(diff 仅含 9 个申报测试文件)。拆分实落:board_view.gd `_paint_cell` 五段(ink/base/facade/overlays/fog)+`_build_cell_unit`(rebuild 循环 `.new()` 出函)。实跑:run_all_62 type_glow all green(48 checks)/run_all_63 theme_projection all green(163 checks,run_all 判 FAIL=脚本错误扫描命中 `_recent_list` 存量红,见第五节)/player_copy all green(22 checks)。golden:render.log L2/L3 双 0.00% OK、L1 2.74% FAIL——与报告 §6-④ 同值。 |
|
||||
| V3 | **通过** | `_test_shop_node_entered_payload`(level_shop_economy_test.gd:1397)在位;〔尾波 V1〕尾缀断言恰 4 条。真实入口未绕过 `_enter_node`:pool 态经 AdventureRunner.start_adventure+`_adv_drive_to_shop`(autoplay 驱动);legacy 态经 `lr.start_level(2, s)`+awaiting_choice/pick_next_node 循环;run_all_54.log 报错回溯栈实证调用链 `_test_shop_node_entered_payload→pick_next_node(level_runner.gd:653)→_enter_node(:493)`,载荷经 node_entered 信号闭包取样,无直接 emit、无 shop 直调。断言守恒:旧 186 处 Kit.check→新 192 处=+6(新函数恰 6 条:2 可达性+4 尾缀);9 处被改写断言行一一有新对应行,零删除。实跑 run_all_54.log「all green (192 checks)」+4 条尾缀 PASS(gp 读数 27/30 与报告 §2 一致)。 |
|
||||
| V4 | **通过** | variant_placement_test/round_flow_skill_pool_test/seal_polarity_test 三套件**零 diff**(函数落点 :54/:147、:47 全套、seal 20 函数);实跑 49/129/70 checks 全绿(run_all_30/29/28)。wr5 见第三节。零漂移证明链见第四节。 |
|
||||
| R1 | **通过** | 产品码 6 件+sim 1 件 diff 逐 hunk 核对:全部为 `<recv>.shop.<方法>` 取件路径文本变化,方法名与实参逐字(camp_shop_presenter 14 处/main_adventure_flow 6/main_overlay_flow 2/main.gd 1/curio_interact_controller 1/level_autoplay 6+注释 2)。测试 7 件改址见第三节。七件相关套件 02 当轮全绿:level_shop_economy 192/hero_ledger/adventure_feats/pool_case_d/treasure_effects/curio_refresh_paid/meta_progression_forge 全 PASS(exit=0)。 |
|
||||
| R2 | **通过** | 19 委托壳在 level_runner.gd diff 中全量删除(逐名清点 19/19);`_shop_draw_shelf` 词级 grep 全仓零命中(壳与白盒转发均消失)。独立残留扫描(19 名单 `grep -w` 于 game/ 全部 .gd):命中全部落四类合法形态——shop_session/gp_wallet/curio_deck/battle_orchestrator 定义与内部调用、字典键名(adventure_runner/level_autoplay/sim/测试断言)、跨类同名(settlement.player_request_refresh、deck().pool_stock)、宿主内部 shop. 直连点(level_runner.gd:102/305/306/704)。产品码与测试面零旧委托调用——零真残留。报告 §7 的 34 行分类账可复算(字典键 11+orchestrator 面 10+CurioDeck 面 9+GpWallet 1+宿主直连 4,按其口径合计 34),与本审计独立扫描分类一致。 |
|
||||
| R3 | **通过** | level_runner.gd:44 更名 `var shop: ShopSession` 公开成员;词级 `_shop` 于 level_runner.gd 与全仓 .gd 零残留(仅保留件 `_bind_shop`:65 注释/:104 调用/:728 定义——词级 grep 不命中,合规);内部引用点(_init 建件与 pool 注入、breakpoint_fragment、_enter_node、continue_after_node、_bind_shop)全部随更名。 |
|
||||
| R4 | **通过** | 六处注释同步逐处核对属实:shop_session.gd:4(委托承载句→直连表述)、level_runner.gd 区块注释(涉委托与白盒两句删、直连句换入、件注入说明保留)、level_autoplay.gd:335/356、shop_overlay_view.gd:88/152、tree_rules_v11_test.gd:6(`_spend_discounted` 指址改 shop_session)。 |
|
||||
|
||||
反向核对:diff 全量 27 文件逐类过目——行为改动仅 V3 载荷合并一处(两 payload 字典 `{"gp": gp, "shelf": true}`/`{"gp": gp}` 逐字保持);board_view/battle_orchestrator/board_installer 均为结构搬运(第四节)。孤儿断言:无(新增断言仅 V3 六条,已挂行;两卡就地补行均为行号订正与卡① §9 增 run_time_fatal 一行,属 T0「漂移处就地改卡并记录」授权面,与实现报告 §1/§5-7 申报一致)。
|
||||
|
||||
## 二、判据绑定面抽查
|
||||
|
||||
- **V3**:02 闸 run_all_54.log 当轮实跑,〔尾波 V1〕四条 PASS 可 grep(:720/:721/:779/:780);回执 02 指纹 f9865f1a5a44 与 baseline.json 02 指纹**逐字一致**=除 9 个登记存量红外零漂移。
|
||||
- **V4**:round_flow_skill_pool_test 129 checks 全绿(run_all_29,全战斗步骤流逐行回放);variant_placement_test 49 checks 全绿(run_all_30,同种子变异布置逐位)。
|
||||
- **R1**:hero_ledger/treasure_effects/curio_refresh_paid/meta_progression_forge/pool_case_d/adventure_feats 六套件 02 日志 PASS(exit=0)逐一在案。
|
||||
- 冒烟/系统:run_smoke 15 项 0 失败、system_test 69 项 0 失败(smoke_boot.log/system_test.log)。
|
||||
|
||||
## 三、测试削弱检查(对照两卡零申报)
|
||||
|
||||
**卡① §17 零申报 vs run_time_fatal_test.gd diff(7 行)**:preload 增 BoardInstallerScript 1 行+注释 3 行+wr5 棋盘生成半边 1 行改 3 行(组装点构建+`bi_bg.generator._fatal(...)`);wr5 封印断言(`battle_result != "fatal_error"`→push_error→return false)逐字未动;wr5 资源半边、wr6、wr7、`_default_form` 零触碰;断言数量零增删。
|
||||
|
||||
独立判定:**改址,非削弱**。依据三点:
|
||||
|
||||
1. 旧取数点 `oc._board_generator` 随宿主成员退役物理消失,无可保留形态——卡① §16 L1「调用面改址漏改就地修复」通道的适用情形。
|
||||
2. 新构建束与生产薄壳 `_install_and_reset`(battle_orchestrator.gd:417-418)**逐字同束**(同 fatal_cb=oc_bg._fatal 接线),传导链 generator._fatal→fatal_handler→宿主 _fatal→封印与生产同路。
|
||||
3. 束缺键有 assert fail-fast(board_installer.gd:21-22),薄壳漏传 fatal_cb=每次 begin_battle 断言崩、全量套件即红——无静默绿通道。
|
||||
|
||||
观察注记(不判缺):触发对象由「编排器自有生成器实例」变为「同形态组装点构建的实例」,wr5 不再直接钉宿主薄壳自身的束组装字面——该面由上条第 3 点的全量兜底覆盖,且同种子断言面(V4 三套件)钉住真实 begin_battle 装板路径。
|
||||
|
||||
**卡② §4.7 零申报 vs `game/tests/unit/` diff 逐 hunk**:8 个测试文件改动全部为调用地址文本变化(`<recv>.<方法>`→`<recv>.shop.<方法>`;白盒 `_shop_draw_shelf`→`shop._draw_shelf`)+tree_rules_v11 头注 1 行指址;抽全 9 处被改写断言行逐一比对,断言条件与期望值逐字零变化;level_shop_economy 断言总量守恒(186→192,+6 全为新函数)。**零未申报的断言删除/阈值放宽/扫描面缩小/换下层直调**。
|
||||
|
||||
**static_scan.sh**:S7_B1_SET 与 S8_FILES 各增 board_installer.gd 一行(扩面非缩面),与卡① §9 申报一致;缺位自检通过。
|
||||
|
||||
## 四、V4「非行为改动」判定依据核对
|
||||
|
||||
- **六函数迁件零漂移**:board_installer.gd 与 `git show ee4efad5:game/core/battle_orchestrator.gd` :414-549 逐段比对——抽查 `_resolve_global_variant` 与 `_place_variants_apply` 逐行同构(差异仅接收方更名 `_reward_economy`→`reward_economy` 与一处注释行合并,代拍板白名单覆盖面);`_place_variants`/`_variants_fringe`/`_adjacent_to_packs`/装板主序(生成→决议→装板→摇号→布置)同核无差。
|
||||
- **RNG 零漂移**:board_gen 流开流时点=装板主序首行(旧 `_install_new_board` 首行=新 `install` 首行);variant_place 流开流时点=候选域构造后、vrow 摇号前(与旧同位);消费序逐字同码;board_installer/battle_orchestrator/level_runner/board_view grep `randomize`/自建 RandomNumberGenerator 零命中。
|
||||
- **宿主薄壳时序逐字**:`_install_and_reset`(:416-431)=旧 `_install_new_board` 尾部复位块逐字搬运(_seal_consumed/_seal_miss_seen 清零→_perfect_hit_true/_perfect_hit_false/_perfect_forgiven 清零→_board_from_midround_refresh→_board_seq+=1→board_changed.emit→treasure_inventory.retire_overlays),且保持「装板成功后复位」的先后时序。
|
||||
- **三调用点改址**:begin_battle :270/_exit_distribution :683/player_request_refresh :717——与旧 :271/:801/:835 同位同参(during_round 传参逐字);begin_battle 五段驱动序与 attune 族未动(新旧文件对照属实)。
|
||||
- **`_board_generator` 成员退役**:新 battle_orchestrator 零 `_board_generator` 字样;类变量 38→37(static_scan.log S13「较登记值恶化 0 条」——只降不升兑现)。
|
||||
- **实跑钉住**:variant_placement 同种子断言 02 当轮全绿(第二节);呈现面由 golden L2/L3 双 0.00% 钉住。
|
||||
|
||||
## 五、回执与呈报一致性
|
||||
|
||||
- 回执与终闸日志一致:commit b704f1dc/domain=code/scope=full;00 冒烟绿、01 系统测试绿、10 熵增闸绿、11 NEED-APPROVAL(PARITY 触面 battle_orchestrator——报告 §9.3 同述,待用户裁决)。
|
||||
- **02**:exit=1、指纹 f9865f1a5a44 与 baseline.json 逐字一致。unit.log FAIL 恰 9 套件,错误形态与报告 §6-② 逐项注(cattr/退出码 2≠1/meta_state/crossrun/set_trans/120s 挂死/row_by_id Nil/_migrate_legacy_save/_recent_list)逐一吻合;56 PASS+9 FAIL=65 套件,与报告「全量 65 套件」计数一致。
|
||||
- **03/04/05**:回执记「基线绿→现红」,终闸日志同列三行 ✗;报告解释为 master 原状同值复现(实现者 stash 对照法取证)。本审计按审计指示未复现 stash 实验,只核自洽性:报告口径(probe 三红=ui_input 超时 exit 124/ui_struct resume 断言/ui_click 16 行 set_trans 空值;golden L1 2.74%、L2/L3 双 0.00%)与 probe_click.log/probe_full.log/render.log 实况逐项一致,且涉案文件(battle_end_overlay 等)均不在本批 diff 内。自洽成立;「非本批新增」结论采信实现者 stash 取证。
|
||||
- **09**:exit=1、指纹 1a9ad773489f 与基线一致;S13 十键全在基线内、基线外新违规 0、恶化 0——与报告 §3「零新增键(10=16−6)」同述。
|
||||
|
||||
**表述性瑕疵(不判缺,列已备核)**:
|
||||
|
||||
1. 实现报告 §2 R1 行「失败清单逐一同值=10 存量红」未随 §5-7 勘误同步为 9——T0/T1 两轮当时实况确含本批新增 wr5 共 10,勘误后终态口径 9(以 §6-② 与终闸回执为准)。
|
||||
2. 实现报告 §1 各任务「分支提交」列为 squash 前中间提交号(509f41f5 等,reflog 可达、非 b704f1dc 祖先);分支终态 3 提交,内容经 cherry-pick 同入。
|
||||
3. static_scan.sh S8 ok 消息「扫描面 B1 文件集 9 个 .gd」为陈旧字面量——S8_FILES 实含 10 文件且缺位自检通过,扫面无缩小;建议工程批顺手订正该消息文本。
|
||||
4. level_runner.gd:14 node_entered 信号注释陈旧——实现报告 §5-6 已申报,归文档批/后续批,非本批义务。
|
||||
|
||||
## 总体结论
|
||||
|
||||
**通过**。两卡对照表七行(V1/V3/V4/R1/R2/R3/R4)逐行核实:验收测试真实存在、当轮真实跑批执行并通过、尾缀可 grep、真实入口未绕过改动点;判据绑定面抽查全中;测试削弱零申报成立(wr5 判改址非削弱,依据如第三节);V4 零漂移证明链(逐字同构+流名流时点同位+薄壳时序逐字+三调用点同参+同种子断言实跑钉住)成立;回执与呈报自洽。在册遗留事项均待用户发令,不构成本批缺漏:S13 基线重锚(--refresh --force)、PARITY 闸 11 实跑或跳过裁决、golden L1 重锚批准、03/04/05 存量红处置。
|
||||
@@ -1,231 +0,0 @@
|
||||
# 需求卡片——gdstyle 尾波清偿批
|
||||
|
||||
> **版本状态**: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 键按第 6 节裁决维持或降值后走 architecture 豁免登记(批末随实测值落文)。手段只有两类:存量文件内部拆私有函数(呈现层先例)、按职责拆协作件(核心层先例)。
|
||||
|
||||
什么状态算完:
|
||||
|
||||
1. 11 键逐键达到第 7 节写明的预期结果(归绿 6/豁免 5——豁免键实测值落 architecture 豁免登记段)。
|
||||
2. 游戏行为零变化:同种子下事件流、步骤流、断点快照、棋盘渲染逐位一致(第 4 节红线)。
|
||||
3. 批末代码域闸全绿(冒烟+单元+集成+探针+渲染 golden+静态扫描),键账对账完成(第 13 节)。
|
||||
4. 实现报告与反哺点清单落 `reports/`(末卡产出物落位卡)。
|
||||
|
||||
## 2. 设计事实源
|
||||
|
||||
本卡属需求性工程条目(结构整改、改游戏代码面),按五段流水线凭工程债证据写卡;四个拆件项的设计段裁决于 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 三卡归并)——继续有效,本卡沿用其中对呈现层「内部拆私有函数、不拆构建步件」与「全部波不改游戏规则与玩家可见行为」的裁定。
|
||||
- `design/engineering/architecture/architecture.md` v1.24——轴丙 BoardInstaller(装板域拆件)已随本卡设计闭合落文(模块归属功能层新行+拆件定稿节增补),实现照册施工。
|
||||
- 并排执行卡:`reports/需求卡片-level_runner商店委托层拆除-2026-10-29.md` v1.1(键 7 拆除执行合同——D6 并排编队,见第 6 节)。
|
||||
|
||||
## 3. 现状事实(代码级,开工自行复核;行号为 2026-10-29 实查)
|
||||
|
||||
基线 16 键中本批承接 11 键,其余 5 键(`main.gd` 类变量 49、`tune_sim_controller.gd` 循环内 await、`board_cell_unit.gd` 类变量 30、`standee_body.gd` 类变量 19、`battle_orchestrator.gd` 类变量 38)走豁免通道另行讨论,不在本卡。
|
||||
|
||||
| # | 基线键 | 现状/阈值 | 涉案位置 |
|
||||
|---|---|---|---|
|
||||
| 1 | `board_view.gd\|quality/max-function-length\|_paint_cell = 139` | 139/50 | `game/presentation/views/board_view.gd:601-739` |
|
||||
| 2 | `board_view.gd\|quality/max-branches\|_paint_cell = 24` | 24/8 | 同上 |
|
||||
| 3 | `board_view.gd\|quality/max-local-variables\|_paint_cell = 22` | 22/10 | 同上 |
|
||||
| 4 | `board_view.gd\|quality/allocation-in-loop`(裸键) | 命中 | `board_view.gd:249`——rebuild() 建格循环内 `_CELL_UNIT.new()` |
|
||||
| 5 | `board_view.gd\|quality/max-class-variables = 32` | 32/15 | `board_view.gd:49-85`(var 成员 31)+:93(`cell_size` 只读属性;计数以闸实测为准) |
|
||||
| 6 | `board_view.gd\|quality/max-public-methods = 27` | 27/20 | 全文件:11 setter+6 探针出口+4 几何契约出口+3 入站事件+2 生命周期(rebuild/refresh)+1 访问器(board()) |
|
||||
| 7 | `level_runner.gd\|quality/max-public-methods = 50` | 50/20 | `game/core/level_runner.gd`——其中商店同签名委托 17 个公开方法(751-828 行)+3 个私有转发(`_bind_shop`:728、`_spend_discounted`:772、`_shop_draw_shelf`:783)+`_shop` 成员(:44) |
|
||||
| 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` |
|
||||
|
||||
支撑事实:
|
||||
|
||||
- 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)——拆件不触任何外部调用面。
|
||||
- 六函数现行均无超标键(基线无其函数级键);`_install_new_board` 体内 443-452 行为宿主态复位块(五处计数清零+板序推进+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. 设计契约(违反即返工的红线条款)
|
||||
|
||||
- 🔴 **行为零变化**:本批全部改动为结构整改,游戏行为零变化——同种子下事件流/步骤流/断点快照/存档往返/棋盘渲染逐位一致;玩家可见面零变化;`design/gdd/systems/` 零修订预期。
|
||||
- 🔴 **RNG 取号序零漂移**:禁 `randomize()`/自建随机;battle_orchestrator 装板域拆件时 `board_gen`/`variant_place` 两封闭流随件迁移**取号序不变**(流名、开流时点、消费序零漂移——先例句「fx_reveal 封闭流随件迁移取号序不变」同款)。
|
||||
- 🔴 **PARITY 触面**:battle_orchestrator.gd 触 PARITY_TOUCH_FACES——实跑对拍须经用户批准、不得借机重锚。
|
||||
- 🔴 **呈现零变化**:board_view 改动的画面判据=`game/tests/golden/` 既有三张棋盘基线(L1 dungeon/L2 underdark/L3 deep_underdark),对拍差异非零即红;重建基线只许用户批准,实现批禁自行换锚。
|
||||
- 🔴 **拆分边界纪律**(判据权威=code-conventions §1.1,此处立卡内执行条款):①每个拆出单元须有可陈述的职责语句与单一变化原因(实现报告逐件一行承载);②拆出单元须有集体身份——命不出名字、只能说「剩下的成员」的打包=凑计数袋,禁;③「过阈值」只许作为发现信号,作为拆分或收拢的动机即违规;④按纪律拆不出内聚单元 → 停卡呈报走豁免/还债通道,禁硬拆凑绿;⑤拆分沿职责轴不沿阈值轴。
|
||||
- 🔴 **禁为机检文本保留无效成员**:禁止为迎合机检消息文本(含计数)而保留或新增无效成员/别名——装板域拆件后宿主 `_board_generator` 成员随之退役(38→37);机检键与卡片契约互斥时,实现段一律停卡呈报,不得自造第三条路。
|
||||
- 🔴 **基线纪律**:禁为过闸 refresh 换绿;还债=数值下降自然绿;出现恶化=停卡呈报(细则第 13 节)。
|
||||
- 🔴 **attune 族与 begin_battle 序列禁动**:battle_orchestrator 的 attune 族原位保留(迭代 39 副卡语义领地);begin_battle 受理段序与五段驱动逻辑禁动——装板域拆件只改 `_install_new_board()` 调用点的取件改址。
|
||||
|
||||
## 5. 范围边界
|
||||
|
||||
做什么:第 3 节 11 键中本卡直接执行的三项改动(第 7 节逐键方案、第 12 节任务卡)——board_view 拆分(键 1–4)、_enter_node 载荷合并(键 9)、装板域拆件(键 10);键 7 的拆除执行合同=并排卡「level_runner 商店委托层拆除」v1.1(D6 裁定并排编队,见第 6 节)。
|
||||
|
||||
不做什么:
|
||||
|
||||
- 商店委托壳拆除的执行——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`——实现批禁写;GP 钱包行真实入口列已随本卡 v2.0 改为 ShopSession 直连(计划入口,闸双通道认卡),批末核对表上名字与实际落地一致。
|
||||
- 数值表、RNG 流词表、信号载荷 schema——零触碰。
|
||||
|
||||
## 6. 设计段裁决记录(2026-10-29 用户裁——D1–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 豁免登记段)。
|
||||
|
||||
| 键 | 现状/阈值 | 方案方向 | 预期结果(档位) |
|
||||
|---|---|---|---|
|
||||
| 1 board_view _paint_cell 长度 | 139/50 | 拆分层私有函数族(键 1–3 同一改动,见 T1)——五段=基底瓦片→字形与色牌→立面投影→秘宝/变异叠加→迷雾,段间只经 u.st/glyph/digit_col 传值;段内分支仍超 8 时沿绘制层轴继续下钻 | ≤50,**归绿** |
|
||||
| 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 裁不拆——第 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 | 「战斗编排域拆件定稿」节轴丙与功能层 BoardInstaller 行——**已随本卡 v2.0 设计闭合落文(v1.24)**,实现照册施工;level_runner 行「外部调用面由同签名委托承载」句(D3 候选 A 实现后失真);「测试与质量域」S13 豁免登记段(D5 五键——批末按实测值落文) | 设计权威文档——实现批禁直改;level_runner 句与豁免登记逐条列进 `reports/iter<N>-反哺点-<日期>.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) |
|
||||
| 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/unit/core/run_time_fatal_test.gd | 运行期违约通道负面套件 | 修改(wr5 棋盘生成半边改指 BoardInstaller 新组装点——T0 复核补查项:卡面 §3 漏查的该测试白盒取数点 `_board_generator` 随成员退役断链,wr5 断言目标违约→封印传导不变) |
|
||||
| game/tests/static_scan.sh | 静态扫描域承载 | 修改(S7 B1 域文件集与 S8 await 文件集增行 board_installer——工程随动,architecture 拆件定稿节 S7/S8 随动条在册) |
|
||||
|
||||
新增件「为什么不能复用」理由与唯一落点核查见第 10 节;对不上即卡片不成立。
|
||||
|
||||
## 10. 落位与可复用性预检
|
||||
|
||||
- **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 | 预算 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 归绿+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 引用;漂移处就地改卡并记录
|
||||
|
||||
**T1 board_view 拆分——4 键归绿(1–1.5 工作日)**(取用:T0 读数;产出:归绿键 1–4)
|
||||
|
||||
- [ ] `_paint_cell` 拆五段分层函数族 `_paint_cell_base/_paint_cell_ink/_paint_cell_facade/_paint_cell_overlays/_paint_cell_fog`(骨架见第 7 节键 1;主函数留格态读取与终写),函数体逐字搬运、段内超 8 分支沿绘制层轴下钻
|
||||
- [ ] rebuild() 建格循环抽 `_build_cell_unit(c: Vector2i, stride: float) -> Node2D`,`.new()` 与属性装配逐字迁入
|
||||
- [ ] 孤立验证:`godot --headless --script res://tests/run_all.gd -- --only=type_glow,theme_projection,player_copy` 全绿+`tools/probe_gate.sh --click` 全绿(出红只跑红件最小单元)
|
||||
- [ ] `tools/render_gate.sh` 棋盘 golden 三张对拍差异 0.00%(非零即停机呈报)
|
||||
|
||||
**T2 level_runner _enter_node 载荷合并——键 9 归绿(0.25 工作日)**
|
||||
|
||||
- [ ] shop 分支 pool/legacy 双 return 合并为载荷变量单 return,两 payload 字典逐字保持(pool `{"gp": gp, "shelf": true}`/legacy `{"gp": gp}`)
|
||||
- [ ] 新增断言 `level_shop_economy_test.gd:_test_shop_node_entered_payload`(规格见对照表 V3)
|
||||
- [ ] 孤立验证:`-- --only=level_shop_economy` 全绿
|
||||
|
||||
**T3 battle_orchestrator 装板域拆件——键 10 归绿(1–1.5 工作日)**(前置:architecture v1.24 轴丙在册)
|
||||
|
||||
- [ ] 建 `game/core/board_installer.gd`(引用束注入,第 10 节落位预检),装板逻辑六函数迁件;`_install_new_board` 拆件体=生成→决议→装板→摇号→布置(415-441 行段),宿主薄壳 `_install_and_reset` 承载复位块(443-452 行段:五处计数清零+板序推进+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(键归绿);类变量实测 37
|
||||
|
||||
**T6 批末对账与收口(0.5 工作日)**
|
||||
|
||||
- [ ] 全量闸:`bash tools/run_all_gates.sh --code`(改动全为代码面)全绿;闸 11 触面按第 4 节 PARITY 条款由用户裁决
|
||||
- [ ] 键账对账:11 键终值对照第 7 节预期逐键核(归绿 6/豁免 5;键 7 终值视并排卡落地时序——同批编队即见 33);重锚由用户发令人工 `--refresh`(第 13 节);豁免登记 5 条+既有讨论 5 键按实测值落 architecture(反哺点通道)
|
||||
- [ ] 产出物落位卡:`reports/iter<N>-实现报告-<日期>.md`(各卡状态+实机目检总清单+实现决定记录+逐拆出单元职责语句一行)与 `reports/iter<N>-反哺点-<日期>.md`(第 8 节同步面逐条落点)写齐方算收口
|
||||
|
||||
合计估时约 3–4.25 工作日(切分预案:T3 拆件裁决被证伪时按留债口径 −1~1.5 并回写第 7 节预期;并排卡 v1.1 的 ≈1.5 工作日不占本卡估时,编队总量由编排段合并计)。
|
||||
|
||||
## 13. 验证闸——改动—验收对照表
|
||||
|
||||
域口径:本批改动全为 `game/` 下非 .md 行为载体——批末跑代码域闸(`tools/run_all_gates.sh --code`);里程碑步(T 段)出口跑一次全套闸,波内修复只做出红最小单元的最窄确认,新增测试先行孤立验证再并入全套。测试执行两入口铁规不破。总判据=每行改动以「既有断言面全绿+golden 零差异+(V4)同种子对拍」证明零行为漂移,无新增玩家可见面;全量闸电池=冒烟 run_smoke.py+系统测试 run_system_test.py+`run_all.gd` 全量+probe_gate --click --full+render_gate+static_scan(含 S13 对账)。
|
||||
|
||||
| 行 | 需求点(键) | 改动(文件:行) | 验收测试(名称+落点+尾缀) | 层级 | 真实入口 | 判据绑定面 | 能力行 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| 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 邻作用集/五组色相/零玩法写入);既有:玩家面文案与危险格格面字形 |
|
||||
| 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 迁出、: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〕,已挂行)。
|
||||
|
||||
## 14. 基线纪律(S13)
|
||||
|
||||
1. 禁为过闸 refresh 换绿:基线重生成只由用户发令,批末键账对账后人工 `python tools/gdstyle_gate.py --refresh` 一次执行(禁闸内自动重生成、禁实现批中途 refresh)。
|
||||
2. 还债=数值下降自然绿:拆件后同键数值下降不判红,无需动基线;归绿键在下批重锚后自然消失。
|
||||
3. 出现恶化(同键数值较登记值上升、基线外新键)=停卡呈报,禁自行消化。
|
||||
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 零触碰声明
|
||||
|
||||
本批零数值改动、零数据表改动、零 RNG 流词表改动、零玩法字面量引入——结构整改不改数值与 RNG 消费序。board_gen/variant_place 封闭流随件迁移取号序不变(流名、开流时点、消费序零漂移——同种子逐位一致)。数值与 RNG 零触碰则 MC 对拍不补跑;battle_orchestrator.gd 触 PARITY_TOUCH_FACES——实跑对拍须经用户批准、不得借机重锚(批末闸 11 判 NEED-APPROVAL 时由用户裁决:批准实跑或裁跳过,卡内不定案)。
|
||||
|
||||
## 16. 异常分级
|
||||
|
||||
- **L1 自救**:迁移函数编译错、探针断言调用面改址漏改——就地修复重跑最窄确认。
|
||||
- **L2 记录继续**:实测值与第 7 节预期区间偏离但在同档位内(如降值幅度略小)——记入实现报告「实现决定记录」。
|
||||
- **L3 停机写报告等用户**:①拆分边界纪律④触发——按职责轴拆不出内聚单元(T1 五段/T3 装板域形态被证伪);②机检预算互斥——新件实数超第 11 节预算或迁移函数现出超标键=上游缺陷停卡退回写卡段;③golden 对拍差异非零;④S13 键恶化或基线外新键;⑤PARITY 触面处置分歧;⑥断言面被下游兜底吸收致判据绑不上(按 test-conventions §8.4 出口呈报)。
|
||||
|
||||
## 17. 测试削弱申报(允许改动的旧断言及理由)
|
||||
|
||||
零申报——本批不删任何断言、不改判据阈值、不缩扫描面、不把真实入口换成下层直调;唯一新增断言=V3 行〔尾波 V1〕(既有断言零改动)。商店委托面的测试改址归并排卡 v1.1 管辖(其自报零申报——只改调用地址,断言条件与期望值零变化)。未申报的削弱由独立验收审计判红。
|
||||
|
||||
## 18. 独立验收审计
|
||||
|
||||
合并前由未参与实现的会话或子代理执行;报告落 `reports/iter<N>-验收审计-<日期>.md`。审计至少做四件事(test-conventions §8.7):逐行核对第 13 节对照表(测试存在、真执行、尾缀可 grep、真实入口未绕过改动点);抽查判据绑定面;检查测试削弱(对照第 17 节申报);核对 V4 行「非行为改动」判定依据(零漂移证明是否在当轮真实跑批中成立)。未过不得合并。
|
||||
|
||||
## 19. 代拍板白名单(允许 agent 自行拍板的微决策)
|
||||
|
||||
1. 迁移函数头注注释的指址微调(词表与语义不动——「指址须真」纪律)。
|
||||
2. 新件私有 helper 命名在职责语义不变前提下的微调。
|
||||
3. 断言失败消息尾缀编号分配与措辞(〔尾波 Vn〕系列)。
|
||||
4. 调用面改址的机械改写(import/preload 顺序、空行排版)。
|
||||
5. 第 7 节键 1 段函数在五段骨架内的下钻粒度(沿绘制层轴)。
|
||||
|
||||
超清单决策记入实现报告「实现决定记录」节。
|
||||
|
||||
## 20. 裁决记录重申
|
||||
|
||||
D1–D6 已全部裁决闭合(2026-10-29 用户裁,第 6 节):装板域拆新件(两修正)/悬停域不拆/商店域候选 A 并排编队(执行合同=并排卡 v1.1)/断点域不拆/五降值键豁免终局——**零待裁点,卡片可编排**。豁免登记 5 条与既有讨论 5 键合并,批末按实测值经反哺点通道一次落文 architecture。
|
||||
@@ -1,185 +0,0 @@
|
||||
# 需求卡片——level_runner 商店委托层拆除批
|
||||
|
||||
- 版本:v1.1(2026-10-29,grilling 复核门通过——修正四项:跨类同名扫描判类归属、`_shop` 词级归零判据、set_shop_pool 陈旧调用方陈述订正、测试面精确计数)
|
||||
- 来源:待办清单「level_runner 商店委托层拆除——迭代 37 冻结契约期过渡件」(2026-10-26 登记,来源=批次移交;需求性工程条目,改动面=游戏代码)
|
||||
- 执行通道:需求改动——经迭代编排编入迭代后在独立 worktree 施工(仪式归 /iter);本卡估时合计 ≈1.5 个工作日(区间 1.5–2,超 2 停批呈报)
|
||||
- 迭代号:由编排段落位(本卡 `iter<N>` 占位符届时代换)
|
||||
|
||||
## 1. 目标与完成定义
|
||||
|
||||
拆除 LevelRunner 的商店同签名委托层(19 个纯转传方法+「冻结公开面」契约注释),全部外部调用方直连 ShopSession;游戏行为零改动。
|
||||
|
||||
完成定义(全部满足才算完):
|
||||
|
||||
1. level_runner.gd 壳块(:722–728 区块注释涉委托句+:751–828 十九个委托)归零;宿主商店成员以公开名 `shop` 承载取件。
|
||||
2. 产品码、sim、测试面全部调用点改为 `<runner 表达式>.shop.<方法>` 直连,全仓无旧委托调用残留。
|
||||
3. 全部单元套件、冒烟、代码域闸绿;现有断言读数逐位不变(零新增断言、零断言删除)。
|
||||
4. 架构文档同步点入反哺点清单;实现报告与验收审计报告落 `reports/`。
|
||||
|
||||
## 2. 设计事实源
|
||||
|
||||
跳过设计线的证据指认(需求性工程条目,第〇步核验放行 2026-10-29):
|
||||
|
||||
- 待办清单条目实况:委托壳=迭代 37 卡④ ShopSession 拆分时立的「冻结公开面」契约过渡件;架构登记=`design/engineering/architecture/architecture.md:109`「外部调用面由 LevelRunner 同签名委托承载(外部零变化)」。
|
||||
- 拆除形态权威=`architecture.md:154`「调用直连:不留中间人委托壳(纯转传=Middle Man 反模式,2026-10-26 用户裁定)」。
|
||||
- 2026-10-29 写卡会话裁决:改址定式四条(公开成员取件/零调用死壳删/测试直连私有面/契约注释随壳消失)+ spend_gp 归属确认非问题(共享冒险钱包的校验扣款原语,宿主 ShopSession 语义自洽、不迁移)。
|
||||
|
||||
## 3. 现状事实(代码级,开工自行复核)
|
||||
|
||||
委托壳块:
|
||||
|
||||
1. level_runner.gd:723–725 区块注释(:723「商店房兑付」节头保留;:724「本类保留同签名委托」句+:725「白盒入口——外部调用面与断点取数面零变化」两句随壳删除)+:751–828 共 19 个同签名转传方法:shop_products:751/current_price:755/purchased_tier:759/buy_product:763/player_request_refresh:767/_spend_discounted:772/set_shop_pool:778/_shop_draw_shelf:783/pool_stock:787/pool_price:791/shop_shelf:795/shop_refresh_free_left:799/shop_refresh_cost:803/shop_refresh:807/spend_gp:811/buy_pool_item:815/is_shop_pool:819/shop_bp_shelf:823/shop_bp_visit_buys:827。
|
||||
2. 零外部调用方死壳 2 枚:`_spend_discounted`(全库仅 tree_rules_v11_test.gd:6 注释提及)、`pool_stock`(外部同名调用全为 CurioDeck.pool_stock,如 adventure_feats_test.gd:545——同名不同件)。
|
||||
|
||||
外部调用面(产品码与 sim):
|
||||
|
||||
3. 呈现层:camp_shop_presenter.gd:173–203(12 处)/main_adventure_flow.gd:81–86(6 处)/main_overlay_flow.gd:135/138/main.gd:773(player_request_refresh)/curio_interact_controller.gd:163(spend_gp——奇物三选一付费刷新出账)。
|
||||
4. sim:level_autoplay.gd:341/350/363/372/418/421(6 处)+:335 注释。
|
||||
5. 场景 .tscn 零引用、tests/system_test.gd 零引用(2026-10-29 全仓扫描)。**跨类同名方法不属本批面**(残留扫描判类归属的依据):BattleOrchestrator.player_request_refresh(round_flow_skill_pool_test ×5、seal_polarity_test:185、main.gd:775)与 CurioDeck.pool_stock(adventure_feats_test ×3、feat_vouchers_test ×2、pool_case_d_test ×3、level_shop_economy_test:1360/1361)——17 公开名 grep 命中须按接收方类归属判别,禁误改这两处同名面。
|
||||
|
||||
外部调用面(测试):
|
||||
|
||||
6. level_shop_economy_test.gd 实改址 25+白盒 `_shop_draw_shelf` :1344/:1355(公开名 grep 命中 27,内含跨类同名 `deck().pool_stock` :1360/:1361 非本批面)/hero_ledger_test.gd:60/66/adventure_feats_test.gd:364/pool_case_d_test.gd:45–47(:47=shop_bp_shelf)/treasure_effects_test.gd:229/233/curio_refresh_paid_test.gd:52–54/meta_progression_forge_test.gd:735–740。
|
||||
|
||||
保留面(非委托,仅随成员更名):
|
||||
|
||||
7. 宿主内部使用:level_runner.gd:99/102/104/305–306/506–507/704/729(建件、pool 注入、断点取数、进离店编排);钱包生命周期 `close_wallet`:718 归宿主自有(写 gp+发 clear 事件,不经商店)。
|
||||
8. 商店件本体 shop_session.gd 公开面现成(spend_gp:262 等),测试直连其私有 `_draw_shelf`:133/`_spend_discounted`:59 属测试侧改址。
|
||||
|
||||
登记与账面:
|
||||
|
||||
9. 架构:architecture.md:109(委托承载句+公开面格)/:154(直连原则);`design/` 全目录仅此一处委托登记(grep 考证 2026-10-29)。
|
||||
10. gdstyle 基线:tools/gdstyle_baseline.txt:11–13——level_runner 三键 max-class-variables=30/max-public-methods=50/max-returns|_enter_node=7。
|
||||
11. 能力清单:game/tests/README.md 旅程段四「GP 钱包/escrow/商店收口/共享池」行真实入口列引用委托名——已随本卡写作更新为直连形态(写卡段义务,实现批禁写该文件)。
|
||||
12. shop_session.gd:4 头注「公开面由 LevelRunner 同签名委托承载」句随拆除失效(商店件唯一注释级 diff,见契约 3)。
|
||||
|
||||
## 4. 设计契约(违反即返工;🔴=触碰停机呈报)
|
||||
|
||||
1. 🔴 直连不留壳:19 个委托全删(含死壳 2 枚),禁保留任何同签名别名/转发/兼容壳;外部取件唯一形态=公开成员 `LevelRunner.shop`(level_runner.gd:44 私有 `_shop` 更名,公开面=成员本身,不设访问器方法)。
|
||||
2. 🔴 行为零改动:商店双模式定价、货架、RNG 取号序列、钱包账面、事件发射逐项同前;全部现有断言同种子逐位不变;`data/tables`、RngService、ConfigDB 消费零 diff;无数值改动禁跑 MC。
|
||||
3. ShopSession 行为零改动:shop_session.gd 不改任何可执行行;唯一允许 diff=头注 :4 委托承载句随批更新(非行为)。
|
||||
4. 测试直连私有面仅限白盒两入口(shop_session `_draw_shelf`/`_spend_discounted`),依据=「测试/探针直连件读写」(architecture.md:152 裁定段);产品码禁直连任何 `_` 前缀私有成员。
|
||||
5. 拆分边界纪律(判据权威=code-conventions §1.1,本批为拆除/收敛向):本批零拆出新件——结构变化仅壳删除与成员公开化两项;保留单元(LevelRunner 商店房编排段、ShopSession、呈现控制器)职责语句不变;凡「为达标保留的转发别名」按凑计数袋处理,禁。
|
||||
6. 🔴 禁为机检文本保留无效成员(code-conventions §1.1 同款):机检键与本卡壳删除契约互斥时(如任何键要求公开方法数不得下降),实现段一律停卡呈报,不得自造第三条路。
|
||||
7. 测试削弱申报:零申报——不删任何断言、不改判据阈值、不缩扫描面;测试只改调用地址。实现期发现必须改判的断言=上游缺陷,停卡退回写卡段。
|
||||
|
||||
## 5. 范围边界
|
||||
|
||||
做:壳块与死壳删除;`_shop`→`shop` 公开化(含内部引用点);产品码/sim/测试调用点改址;注释同步六处(shop_session.gd:4、level_runner.gd:723–725 区块涉委托两句〔删 :724–725、留 :723 节头〕、level_autoplay.gd:335、shop_overlay_view.gd:88/152、tree_rules_v11_test.gd:6);level_runner 头注涉委托表述随批核查同步。
|
||||
|
||||
不做(去向):
|
||||
|
||||
1. spend_gp 迁 GpWallet 与三处内联扣账去重——2026-10-29 用户裁「可选微整理、不进本批」;日后要做属游戏代码重构,另立卡走流水线。
|
||||
2. gdstyle 基线重锚(`python tools/gdstyle_gate.py --refresh` 人工专用)——本批公开方法数自然下降不触发重锚;基线死键清账时机归用户发令(待办清单在册)。
|
||||
3. architecture.md:109 改写——实现批禁写 `design/`,入反哺点清单(§6)。
|
||||
|
||||
## 6. 关联文档同步面
|
||||
|
||||
| 文档 | 关联点(本批实现会改变它的哪条陈述) | 同步义务 |
|
||||
|---|---|---|
|
||||
| design/engineering/architecture/architecture.md | :109 ShopSession 行——「外部调用面由 LevelRunner 同签名委托承载(外部零变化)」句失效;公开面格需随改址后实际对外面重写:补 spend_gp(奇物付费刷新对外出账口)与 current_price/pool_price/purchased_tier/shop_refresh_free_left/is_shop_pool/shop_bp_shelf/shop_bp_visit_buys 等实际被直连方法;set_shop_pool 调用面改述:pool 注入经 LevelRunner 构造 ctx 供给(level_runner.gd:101–102 内部直调 ShopSession.set_shop_pool;原委托块注释「AdventureRunner._start_current_level 唯一调用方」系陈旧表述——全仓 grep 证实产品码零调用方,随壳删除作废),测试面直连 shop.set_shop_pool | 反哺点清单(`reports/iter<N>-反哺点-<日期>.md`),用户裁决后归文档批落文;实现批禁直改 |
|
||||
|
||||
其余文档无关联点:GDD 商店/秘宝/天赋树各节机制陈述(扣账口唯一、刷新双源、折价边界、爬价公式)不因调用面搬家而变(grep 考证 2026-10-29)。
|
||||
|
||||
## 7. 落位与可复用性预检
|
||||
|
||||
- **新增件清点**:零新增文件、零新增函数、零新增数据件。唯一「新增面」=LevelRunner 公开成员 `shop`——更名既有私有成员 `_shop`(level_runner.gd:44),复用既有 ShopSession 实例与 `_bind_shop` 装配(:728),零新装配、零新引用、零新职责。
|
||||
- **唯一面核查**:grep 19 个方法名全仓——委托职责拆除后调用面唯一落点=ShopSession(第二承载不存在);`_shop_draw_shelf`/`_spend_discounted` 转发壳删除后,白盒入口唯一落点=shop_session 私有方法本体。
|
||||
- **复用面核查**:不新增任何 helper/访问器——「更名公开」即全部;呈现层持件沿用既有 `_runner_get` 取值回调(camp_shop_presenter.gd:170 现形态),不新引入注入面。
|
||||
- **分层与交互面**:调用方向不变——views→(信号)→组合根→core;呈现控制器经取值回调持 runner 后以 `runner.shop` 取件(组合根拆件直连=架构「模块归属·呈现层」既有口径);sim 属测量面直构既有惯例;测试直连 core 公开成员+白盒两私有入口(契约 4)。
|
||||
|
||||
## 8. 实现规范预算
|
||||
|
||||
- **新件三查**:零新增文件——空转。
|
||||
- **存量触面一查**(level_runner.gd,基线 tools/gdstyle_baseline.txt:11–13):max-public-methods 预期 50→33(删 17 公开委托、增 0;私有委托 2 枚同删不入此数);max-class-variables=30 不变(成员更名不改数);max-returns|_enter_node=7 不变(`_enter_node` 零触碰)。T0 读数步核对「S13 键较登记值只降不升」,基线值本批不动。
|
||||
- **shop_session.gd**:零可执行行 diff,键面不变。
|
||||
- **指标例外申报**:无。
|
||||
|
||||
## 9. 文件结构图(卡前;全部「复用既有」——零新增件,与 §7 互指)
|
||||
|
||||
```
|
||||
game/core/level_runner.gd 壳块删除+成员公开化+内部引用更名+区块注释【非行为——R2/R3/R4】
|
||||
game/core/shop_session.gd 仅头注 :4 委托句更新(零可执行行 diff)【非行为——R4】
|
||||
game/presentation/camp_shop_presenter.gd 调用点改址 12 处【非行为——R1】
|
||||
game/presentation/main_adventure_flow.gd 调用点改址 6 处【非行为——R1】
|
||||
game/presentation/main_overlay_flow.gd 调用点改址 2 处【非行为——R1】
|
||||
game/presentation/main.gd 调用点改址 1 处【非行为——R1】
|
||||
game/presentation/curio_interact_controller.gd 调用点改址 1 处【非行为——R1】
|
||||
game/presentation/views/shop_overlay_view.gd 注释同步 2 处【非行为——R4】
|
||||
game/sim/level_autoplay.gd 调用点改址 6 处+注释 1 处【非行为——R1/R4】
|
||||
game/tests/unit/core/level_shop_economy_test.gd 改址 25+白盒 2(grep 全量核对)【非行为——R1】
|
||||
game/tests/unit/core/hero_ledger_test.gd 改址 2 处【非行为——R1】
|
||||
game/tests/unit/core/adventure_feats_test.gd 改址 1 处【非行为——R1】
|
||||
game/tests/unit/core/pool_case_d_test.gd 改址 3 处【非行为——R1】
|
||||
game/tests/unit/core/treasure_effects_test.gd 改址 2 处【非行为——R1】
|
||||
game/tests/unit/core/curio_refresh_paid_test.gd 改址 3 处【非行为——R1】
|
||||
game/tests/unit/core/meta_progression_forge_test.gd 改址 3 处【非行为——R1】
|
||||
game/tests/unit/core/tree_rules_v11_test.gd 头注同步 1 处【非行为——R4】
|
||||
```
|
||||
|
||||
## 10. 任务卡 T0..T2
|
||||
|
||||
施工遵循闸机轮次纪律:里程碑步(T1)出口跑一次全套闸;波内修复只做出红最小单元的最窄确认;新增测试/工具先行孤立验证再并入全套。
|
||||
|
||||
### T0 调用面直连(壳仍在位——中间态全绿) 估时 0.5–1 个工作日
|
||||
|
||||
- 取用:—(首批)。
|
||||
- 产出:全部调用点 `*.shop.*` 直连形态(壳在位,行为零改动的中间态);T1 依赖「删壳后零编译错」以本产出为完整性基线。
|
||||
- [ ] level_runner.gd:44 成员更名 `var shop: ShopSession`(行注释同步),内部引用 :99/:102/:104/:305–306/:506–507/:704/:729 全部随更名;核查=grep `_shop`(词级)于 level_runner.gd 仅剩保留件 `_bind_shop`(:65/:104/:728——宿主回调装配面,非委托)
|
||||
- [ ] 产品码改址六件(形态=`<runner 表达式>.shop.<方法>`,方法名与实参逐字不变):camp_shop_presenter.gd:173–203/main_adventure_flow.gd:81–86/main_overlay_flow.gd:135/138/main.gd:773/curio_interact_controller.gd:163/shop_overlay_view.gd:88/152 仅注释
|
||||
- [ ] sim 改址:level_autoplay.gd:341/350/363/372/418/421+:335 注释
|
||||
- [ ] 测试面改址七件:level_shop_economy_test.gd(grep 全量核对;白盒 :1344/:1355 改 `r8.shop._draw_shelf()`)/hero_ledger_test.gd:60/66/adventure_feats_test.gd:364/pool_case_d_test.gd:45–47(:46 改 `lr.shop._draw_shelf()`、:47 改 `lr.shop.shop_bp_shelf()`)/treasure_effects_test.gd:229/233/curio_refresh_paid_test.gd:52–54(`lr.shop.spend_gp(...)`)/meta_progression_forge_test.gd:735–740(`lr.shop.current_price(...)`)
|
||||
- [ ] 注释同步:tree_rules_v11_test.gd:6 头注 `level_runner._spend_discounted`→`shop_session._spend_discounted`;level_autoplay.gd:335 注释调用名同步
|
||||
- [ ] 验证:`python tools/run_smoke.py` 绿;单元与集成 `--script res://tests/run_all.gd` 全绿(中间态=直连可编译可过+行为零改动初证);level_runner 三键读数核对只降不升(§8 预期值)
|
||||
|
||||
### T1 壳拆除与完整性证明 估时 0.5 个工作日
|
||||
|
||||
- 取用:T0 全调用点直连形态在位。
|
||||
- 产出:终态 level_runner(壳归零);T2 的闸与审计对象。
|
||||
- [ ] 删除 level_runner.gd:723–725 区块注释中涉委托与白盒两句(:724–725;保留 :723「商店房兑付」节头与 :727 件注入说明)+:751–828 十九个委托全量(含死壳 `_spend_discounted`:772/`pool_stock`:787)
|
||||
- [ ] shop_session.gd:4 头注委托承载句更新(「外部调用面=调用方经宿主公开成员 `shop` 直连」表述)
|
||||
- [ ] 验证:`python tools/run_smoke.py` 绿+全单元套件绿(壳删后绿=T0 改址无遗漏的编译级证明)
|
||||
- [ ] 残留扫描:grep 19 个方法名于 `game/`(排除 shop_session.gd 本体定义、level_runner.gd 内部 `shop.` 使用点、跨类同名方法——BattleOrchestrator.player_request_refresh 与 CurioDeck.pool_stock 按现状事实 5 清单判接收方类归属)——产品码与测试面零命中,输出留实现报告
|
||||
- [ ] 注释收尾核查:level_runner 头注涉委托表述已同步(§5 做项)
|
||||
- [ ] 里程碑出口:`tools/run_all_gates.sh --code` 全绿、回执落 `game/tests/.gates/receipt.json`
|
||||
|
||||
### T2 收口(产出物落位卡) 估时 0.5 个工作日
|
||||
|
||||
- 取用:T1 终态(壳归零、套件绿、回执在盘)。
|
||||
- 产出:三份过程件+合回呈报。
|
||||
- [ ] 反哺点清单 `reports/iter<N>-反哺点-<日期>.md`:§6 表逐条落点——architecture.md:109 ShopSession 行改写内容全文随单;无其他落点
|
||||
- [ ] 实现报告 `reports/iter<N>-实现报告-<日期>.md`:各卡状态+实现决定记录+实机目检总清单(本批零玩家可观测改动——写明「无新增目检项」)+遗留读数义务(无)+残留扫描输出留痕
|
||||
- [ ] 独立验收审计 `reports/iter<N>-验收审计-<日期>.md`:未参与实现的会话或子代理执行(test-conventions §8.7 四事);审计在迭代 loop 内启动的子代理算 loop
|
||||
- [ ] 审计通过后呈报用户合回(worktree-guard 按 diff 文件性质推域校验回执;审计判红→修复→出红最小单元最窄确认→闸重跑)
|
||||
- [ ] 批后收尾(待办条目整条删除、roadmap 换代)归 batch-closure——不在本卡任务内,此处仅登记去向
|
||||
|
||||
## 11. 验证闸(改动—验收对照表)
|
||||
|
||||
本卡零新增断言——对照表全行由既有断言与静态扫描承接,无〔卡短名 Vn〕尾缀需求。
|
||||
|
||||
| 需求点 | 改动(文件:行/行为) | 验收测试(名称+落点) | 层级 | 真实入口 | 判据绑定面 | 能力行 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| R1 调用面直连改址(非行为改动——调用目标/实参/返回/副作用逐项同前,仅取件路径文本变化) | §9 结构图产品码 6 件+sim 1 件+测试 7 件全部调用点 | 既有套件回归两轮全绿:T0 中间态轮+T1 壳删后轮(level_shop_economy/hero_ledger/adventure_feats/pool_case_d/treasure_effects/curio_refresh_paid/meta_progression_forge 全套+冒烟) | 单元+接口 | 各套件既有真实入口(直构 LevelRunner/AdventureRunner 链) | 既有断言逐位不变(行为零改动正向证据)+壳删后编译通过(改址无遗漏) | 既有:GP 钱包/escrow/商店收口/共享池;既有:奖励三选一候选/刷新付费/呈现 |
|
||||
| R2 壳块拆除(非行为改动——纯转传方法与契约注释删除,行为承载在 ShopSession 不变) | level_runner.gd:723–725 区块涉委托两句(:724–725)+:751–828(含死壳 `_spend_discounted`:772/`pool_stock`:787) | 残留扫描零命中(T1 静态步)+T1 套件绿 | 静态+单元 | grep 全仓(19 方法名清单固定)+套件真实入口 | 扫描面>0 前置(grep 命令对 19 名单非空可执行)+壳删后零引用可编译;命中行按接收方类归属判别(现状事实 5 跨类同名清单) | 既有:GP 钱包/escrow/商店收口/共享池 |
|
||||
| R3 宿主成员公开化(非行为改动——私有 `_shop` 更名公开 `shop`,装配与读写路径不变) | level_runner.gd:44+内部引用 :99/:102/:104/:305–306/:506–507/:704/:729 | 随 R1 两轮套件绿 | 单元 | 套件真实入口 | 同 R1(内部使用点行为不变) | 既有:GP 钱包/escrow/商店收口/共享池 |
|
||||
| R4 注释同步六处(非行为改动——注释文本,无运行时可观测面) | shop_session.gd:4/level_runner.gd:722–724/level_autoplay.gd:335/shop_overlay_view.gd:88/152/tree_rules_v11_test.gd:6 | 随批代码域闸绿(静态扫描覆盖文件头纪律面) | 静态 | —(静态判据) | 观测面局限申报:注释无运行时提交面,判据=静态扫描+评审注记 | 既有:GP 钱包/escrow/商店收口/共享池 |
|
||||
|
||||
## 12. 异常分级
|
||||
|
||||
- **L1 自救**:更名/改址漏点编译错→就地补改后重跑最窄确认(冒烟或单套件)。
|
||||
- **L2 记录继续**:套件出红且根因属本批改址笔误→出红最小单元最窄确认修复+实现报告记录;连续 3 次同红灯升级 L3。
|
||||
- **L3 停机呈报**:①出红根因=上游缺陷(非本批改动所致)→停卡退回写卡段;②机检键与本卡契约互斥(如需保留壳/别名才达标)→停机呈报,禁自造第三条路(机检预算互斥条款);③改址中发现任何行为差异(同种子读数漂移)→立即停批(行为零改动契约被打破);④ShopSession 需要可执行行改动才能达成改址→停机呈报(契约 3 被打破)。
|
||||
|
||||
## 13. 代拍板白名单
|
||||
|
||||
1. 注释措辞与所在行随改址微调(不改语义)。
|
||||
2. 测试内局部变量随调用链展开的机械适配(不改断言判据)。
|
||||
3. 残留扫描的 grep 命令形态与输出留痕方式(实现报告正文承载)。
|
||||
4. level_runner 头注与区块注释涉委托表述的同步措辞。
|
||||
5. 单元套件运行的分批执行方式(闸机轮次纪律内的最窄确认选择)。
|
||||
|
||||
超白名单的微决策记入实现报告「实现决定记录」节。
|
||||
|
||||
## 14. 待裁点
|
||||
|
||||
零待裁点,开工门=U0。(改址定式与 spend_gp 归属均经 2026-10-29 会话裁决,见 §2。)
|
||||
Reference in new issue
Block a user