收尾(迭代51批后收尾): 反哺点十条落文 architecture.md(RoundCycle/BattleRefreshFlow束注入换代/settlement段类束注入对编排器零引用与四helper归位/damage·RewardGrant·BattleFxHost·breakpoint_store·save_manager·slot_store公开面换代/minesweeper_rules归位两法与超阈值还债在册/charge_layers退役两处闭面四键; 第十一条落点不存在跳过在案); S13无凭证基线键经用户裁撤销(gdstyle红在案=预期单键,还债归P0)+gdstyle_gate --refresh重生成入口删除(基线维护改人工修订,--refresh传参exit=2)+gdstyle.toml与基线头注同步; 待办清单: minesweeper_rules公开面还债P0+EffectEngine死函数与全仓孤儿函数清退P0两条登记/presentation卡未编迭代迁出承接条目/iter51三条目(L1混编·架构审查余项·EffectPort删键)完成整条删除/两条P0实况引用改写; roadmap迭代51行已完成(2026-11-04)+当前位换代; 产出物退役三件(反哺点+实现报告+验收审计——吸收即死+证据只留最新,目检义务⑱在册承载,引用面已改写); 验证: gdstyle单键红=预期,--refresh exit=2,--docs全绿

This commit is contained in:
DKChan committed 2026-11-04 06:49:01 +08:00
1 parent f1840fbc80
commit 9c14f23ab8
9 files changed
+50 -428

No files matched your search

-29
View File
@@ -1,29 +0,0 @@
# 迭代 51 反哺点清单(2026-11-04)
> 实现批禁写 `design/`——以下各条由用户裁决后归文档批落文。裁决一条落一条,落完把该条清掉。
## 一、design/engineering/architecture/architecture.md(十处)
1. **:124(BattleFxHost 行)**:「A3 action_economy(queue_ap_delta/charge_layers 读)」依赖句删 charge_layers 读——蓄力层账本已退役(卡①),A3 对 action_economy 依赖余 queue_ap_delta 通道。
2. **:146(轴戊 EffectPort 句)**:「闭面五键」改「闭面四键」;「facts 取值束 dig_streak/charge_layers/rider_tier_*」删 charge_layers——biz_fact 闭面收窄为 dig_streak/hp_ratio/rider_tier_bonus/rider_tier_crit(卡①,键退役后宿主应答 null)。
3. **:125(RoundCycle 行)**:「三参直构(host/fx_host_ref/reward_grant_ref——五段构造透传不落成员)」→「引用束注入(编排器 20 键封闭束,解包自用七键后原束分发五段;持有 BattleRefreshFlow);公开方法 3→4(refresh_flow() 读出口);类变量 8→15(贴顶禁再增)」(卡②)。
4. **:123(BattleRefreshFlow 行)**:「static 两入口收 oc」→「实例束注入 8 键(facts/db/action_economy/fx_host/reward_economy/minesweeper/install_cb/grant_seg);宿主 can_refresh/player_request_refresh 单行转发形态不变,经 RoundCycle.refresh_flow() 取件;grant_seg 段间引用直接交接(编排器 _rounds._grant_seg 跨两层链式取段消灭);类变量 0→8」(卡②)。
5. **:127(settlement/ 五段段类行)**:构造形态句 →「引用束注入(各段断言各自必需键);段类对编排器零引用(\boc\b 零命中——跨件单向接线,注入 Callable 亦属接线面)」(卡②)。
6. **:122(damage_controller 行)**:类变量 12→13(+facts 构造注入);公开面净增 hero_atk()/static hits_of()/emit_hero_damage_taken 公开化(_emit 去下划线非并存)(卡②)。
7. **:121(RewardGrant 行)**:+feat_yield_adjust(_feat_yield_adjust 自编排器归位)(卡②)。
8. **:120(BattleFxHost 行)**:+mark_new_resource_type/+add_bonus_delta 两公开累积方法(类变量 15 不变,方法-only)(卡②)。
9. **核心层表 A2 minesweeper_rules 行**:公开面 19→21(贴顶超 1——**随卡② S13 停卡呈报待用户裁**:特批准记基线则登记 21 贴顶超阈值态并立还债条目;harmful_variants/harmful_adjacent 自编排器归位)(卡②)。
10. **核心层表 breakpoint_store 行+save_manager/slot_store 行**:breakpoint_store 公开方法面 5→18(13 新面+bp_read 公开化);save_manager 公开面 7→14(+set_read_only/read_only/reset_to_default/data_snapshot/restore_data+peek_summary_at/rename_overwrite 两更名公开化);slot_store「双向公开面」(+active_path;migrate_legacy_save 公开化;反向私取 21 处清零)(卡②)。
11. **:119(B1 battle_orchestrator 行)**:「NODE_TYPES 词表双份」表述删句、改「词表单点归 LevelTable(生成器 class_name 直引——S3 豁免面在案形态)」(卡③)。
## 二、GDD 确认行
- design/gdd/systems/战斗循环/战斗结算.md:**零反哺**(明细流水词表、五段段序、段边界零触碰——零行为变更批,golden 逐位对拍在案)。
- design/gdd/systems/表现与支撑/数据配置.md:**零反哺**(热重载规格保留原状——P2 卡不收件面)。
- 术语表:**零新增术语**(引用束注入/读投影/公开方法面均仓库现行词)。
- 卡④:难度曲线与Boss.md/敌人系统.md/08-Alpha版本标准.md **零动作**(文档批已随写卡段落文,本批零新增反哺)。
## 三、待办清单(实现批不碰,归收尾段/用户)
- 卡② S13 一键(minesweeper_rules 公开方法 21>20):待用户按实现报告 §六裁决;若特批准记基线,建议同批立「minesweeper_rules 公开面还债」条目归后续批。
- EffectEngine.has_effect_on 零消费方(卡① 备案):是否立死码处置条目,归用户裁。
-102
View File
@@ -1,102 +0,0 @@
# 迭代 51 实现报告(2026-11-04)
> 四卡:①EffectPort 蓄力层删键批 ②架构审查 5.1 封装修复批 ③架构审查 P2 代码面批 ④L1 深度 3 混编。
> 工作区=g-plan2-iter51(分支 iter51,基点 63fe2da0);提交序列见 git log(卡① 一笔/卡② 四笔 T1+T2、T3+T4、T5、——/卡③ 一笔/卡④ 一笔)。
> **卡② 停卡呈报在案(S13 一键待裁)**——见「六、停卡呈报」,合并等用户裁决。
## 一、各卡状态
| 卡 | 状态 | 提交 | 卡内验证读数 |
|---|---|---|---|
| ① EffectPort 蓄力层删键 | 完成 | ace15701 | effect_port_test 16 checks(含新 V4)/treasure_effects PASS/refresh_feats 85 checks;零残留 grep 达成(例外见决定记录 2);S13 零新违规 |
| ② 5.1 封装修复 | **施工完成·S13 停卡呈报待裁** | 568c474d/d43de922/0e1763bd | golden 主证改前固化改后逐位同(seed 4242,3 checks)/settle_segments 18 checks/adventure_feats 138 checks/battle_settlement 七套件绿/存档五套件绿(17+97+22+13+29)/sweep 38 checks/冒烟绿;**S13 新违规 1 条**(minesweeper_rules 公开方法 21>20 贴顶——§六) |
| ③ P2 NODE_TYPES 单点化 | 完成 | 52bb63d7 | encapsulation_p2_sweep 6 checks/node_map_determinism 21 checks(同种子逐位——零行为变更主证)/冒烟绿;S13 键零变化 |
| ④ L1 深度 3 混编 | 完成 | afaab6a7 | table_structure_guard 83 checks(v1–v6)/round_flow 136 checks(含 _smoke_enemy_buff_targets_self 种子搜索命中)/level_shop 195 checks/damage_controller 50/battle_narrator 22/config_db_test 29/config_db_resolver 13;全仓 hobgoblin 零残留(例外见决定记录 7);Alpha 零读数(静态论证) |
## 二、实际改动—验收对照表
### 卡①(对照表 3 行全绿)
| # | 需求点 | 改动 | 验收测试(落点+尾缀) | 真实入口 | 判据绑定面 | 结果 |
|---|---|---|---|---|---|---|
| 1 | 事实应答面收窄 | battle_fx_host.gd biz_fact/_fx_fact 两分支删 | effect_port_test.gd:131「V4 闭面收窄」 | begin_battle 真实装配链取宿主 biz_fact | 键在→返 0、键退役→null | 绿(16 checks 内) |
| 2 | 账本与转蓄分支退役、签名简化 | action_economy.gd finish_round_stop 纯 RAP 转存+grant_segment 调用简化 | treasure_effects_test.gd ⑥ 三断言(132/138/144 调用单参化,期望值零变) | request_stop→round_end→finish_round_stop 真实停手路径 | RAP 转存读数 4/5/3 逐位零漂移 | 绿(PASS) |
| 3 | 事件/事实两词表位退役 | effect_engine.gd EVENTS/FACTS 删位 | 静态判据+零残留 grep+S13+--code 域(合回 CI) | —(词表常量面) | 静态判据+评审注记(申报观测面局限在卡) | 绿(grep 零命中) |
### 卡②(对照表 R1–R6 全绿,全部「非行为改动」行)
| # | 需求点 | 改动 | 验收测试 | 真实入口 | 判据绑定面 | 结果 |
|---|---|---|---|---|---|---|
| R1 | 七段解耦+束交付 | 七文件重写+编排器 20 键束+三调用点 | settlement_wiring_snapshot_test〔封装5.1 V1〕+settle_segments_test 束构造/同一性断言+round_flow/seal_polarity/refresh_feats 既有全套 | begin_battle→settle_batch→player_request_refresh 全公开入口 | 同种子行流逐位同 golden+束引用同一性+\boc\b 七文件零命中 | 绿 |
| R2 | 搬家五方法归位 | damage_controller +hero_atk/hits_of/emit 公开化+facts;reward_grant +feat_yield_adjust;minesweeper +harmful_variants/harmful_adjacent;编排器五方法删 | golden V1(五方法消费路径全在行流内)+roll_multiplier_test 既有+sweep V3 | begin_battle/授予段真实结算链 | 行流逐位同+五方法宿主定义唯一 | 绿 |
| R3 | grant→BattleFxHost 累积方法 | battle_fx_host +mark_new_resource_type/+add_bonus_delta;grant 四处改址 | seal_polarity/round_flow 既有回归+sweep V6 | 授予段真实结算链 | bonus_delta 轴累积与首见判定逐位同+grant 源零私键 | 绿 |
| R4 | adventure_runner→BreakpointStore | breakpoint_store +13 公开方法(bp_read 公开化);adventure_runner 37 处改址 | save_rng_roundtrip_test 两断言既有+sweep V4 | resume_adventure/start_adventure→write_to_disk/load_from_disk | 断点续玩逐位同+源零私取 | 绿 |
| R5 | save_manager↔SlotStore 双向 | slot_store +active_path/migrate 公开化+21 处改址;save_manager +5 公开方法/2 更名+九行改址 | save_manager_domain_test+save_slot_isolation_test+sweep V5 | write_to_disk/load_from_disk/_ready 迁移口/activate_slot/peek_slot_summary | 写盘读回迁移激活窥视逐位同+双向源零私取 | 绿 |
| R6 | config_db→三表挂载 | 三 schema +bind_resolver;config_db 三行改址 | config_db_resolver_test 既有全套+sweep V7 | ConfigDB.load_tables→resolve_* | 行集解析与难度 clamp 逐位同+源零直写 | 绿 |
**零行为变更证明**:T1 golden 改前基线固化(seed 4242 未改树转储 7444 字符 JSON 填入常量)、改后全程绿=行流/快照/终局载荷/presentation 逐位同;既有套件零转红;sweep 恒零。
### 卡③(对照表 R1 全绿)
| # | 需求点 | 改动 | 验收测试 | 真实入口 | 判据绑定面 | 结果 |
|---|---|---|---|---|---|---|
| R1 | NODE_TYPES 单点化 | node_map_generator :10 删+:135 改 LevelTable.NODE_TYPES.has | encapsulation_p2_sweep_test〔架构P2 V1/V2〕+node_map_determinism_test 既有全套 | LevelRunner 关卡推进→节点图生成;LevelTable 表行加载校验 | 词表定义唯一落点(正锚计数=1)+生成链同种子逐位同 | 绿 |
### 卡④(对照表 R1–R10 全绿)
| # | 需求点 | 改动 | 验收测试(尾缀〔L1混编 vN〕) | 真实入口 | 判据绑定面 | 结果 |
|---|---|---|---|---|---|---|
| R1 | 行数与键序 | enemy.tres (1,3) 一行换两行 | table_structure_guard「敌人表 29 行且键序=覆盖表序((1,3) 两行相邻、熊地精在前)」 | ConfigDb.load_tables→EnemyTable.rows | 遍历 rows 拼四段串逐行比对 | 绿(83 checks 内) |
| R2 | 混编构成与行序 | 同上 | 同文件「(1,3) 行集恰两行、enemy_id 序列==[bugbear,goblin]」 | resolve_rowset(1,3,"battle") | 返回长度与 enemy_id 序列 | 绿 |
| R3 | 静态最坏骰和 | 同上 | 同文件「Σ(unit_count_max,固定行缺省)==3」 | 同上 | 求和值==3 | 绿 |
| R4 | 行值整行复用 | 同上 | 同文件「(1,3) 两行逐字段==(1,2)/(1,0) 行」 | EnemyTable.rows | 字段逐项比对零字面量 | 绿 |
| R5 | 零残留 | 表+七文件 | 同文件「表内 enemy_id 集合不含 hobgoblin」+T2 回读命令 | rows 遍历+grep | 集合不含+grep 空 | 绿 |
| R6 | 混编下 spawn 数全域内 | round_flow :312-317 口径逐行求和 | _smoke_encounter_roll 全深度×12 种子扫描 | begin_battle→presentation_snapshot().enemies.size() | 逐场数量∈[Σunit_count,Σunit_count_max] 且 ≥1 | 绿(136 checks 内) |
| R7 | 双池各自独立 | 表两行 | _smoke_skill_pool_data「(1,3) 两行池模板」 | 表读取 | 键与权重逐项 | 绿 |
| R8 | 注入段还原行数 | level_shop :727 | _smoke_level_graph「表回 29 行」 | 同套件注入/还原流程 | rows.size()==29 | 绿 |
| R9 | 深度 4/5 落带不变 | 表(零触碰) | table_guard「(1,4)/(1,5) battle 行集==单行 bugbear(band 6)」 | resolve_rowset(1,4/5) | 长度与 enemy_id、band 归属 | 绿 |
| R10 | 深度 3 最少 2 敌(回归护栏) | 两处夹具注释 | damage_controller_test _test_pool_consumption_per_unit+battle_narrator_test _test_snapshot_effects_per_unit 在混编行集下仍绿 | UnitContainer.spawn(1,3) | all_enemies().size()≥2 | 绿 |
## 三、S13 对账
- 改前基线:gdstyle_gate 5 键基线内、基线外 0(T1 现场读数;adventure_runner 类变量 23 照登)。
- 改后:**基线外新违规 1 条=game/core/minesweeper_rules.gd|quality/max-public-methods(21>20 贴顶)**——卡② 停卡呈报项(§六)。其余全部触件 S13 键只降不升:action_economy 删 2 成员、七段束解包全在预算内(grant 12/combat 10/verdict 5/aura 1/decay 2/round_cycle 15 贴顶/battle_refresh_flow 8)、breakpoint_store 类变量 15 贴顶方法-only、编排器 15 不变。
## 四、实机目检总清单(真人检测只登记不阻塞)
- 卡①②③:无实机目检项(死码删除/封装收口/词表单点化——零玩家可观测提交面;卡② 零行为变更由 golden 逐位对拍承载)。
- 卡④(抄体验验证清单 ⑱ L1 节点 3 三项):① 混编遭遇实机目检(L1 节点 3 遇敌=熊地精 1+地精 1–2,默认目标=熊地精);② 开战叙述首行=熊地精;③ 战斗结算面两种数量语义并存目检。读数义务:Alpha 零读数(2026-11-04 用户裁),带位移读数归数值统一修正批。
## 五、能力清单核对
game/tests/README.md:本批零编辑(四卡对照表能力行全部「既有」;测试函数名零改名——settle_segments/round_flow/level_shop/damage_controller/battle_narrator 代表用例名在册不变;卡② 新增两测试件按「经宿主链覆盖」申报=snapshot 测试挂 R1 行 begin_battle 全结算链、sweep 挂各 R 行源扫描)。名实核对一致,无回表项。
## 六、停卡呈报(卡② S13 一键——实现段零裁断,缺陷移交)
**分歧点**:minesweeper_rules.gd 公开方法数。写卡 §14 申报「18→20 贴顶(+2)」;master 基点实数 **19**(`git show master:game/core/minesweeper_rules.gd` 逐 func 清点),本批 +2 搬家方法(harmful_variants/harmful_adjacent)后 **21>20**(S13 默认阈值)——gdstyle_gate 基线外新违规 1 条。
**两种读法**:
- 读法 A(写卡考证误差 1,预算按实况校准为 19→21):+2 是卡② 五方法归位裁决的直接后果(grant_segment :87/:339 两消费方直调,两方法都必须公开,少任何一件破坏搬家合同);21 超阈值需用户特批准记基线(迭代 38 先例 c4c69701——S13 恶化经用户特批准记入基线存量红)。但 static_scan S13 头注「登记值只准随还债下降,禁抬高到现状」——特批是唯一合法通道,闸件纪律不因批内需要自动放行。
- 读法 B(卡面预算准、实现走形):不存在第三形态——拆函数降计数=实现段自行拆件(L3 ③禁);改闸件豁免=禁(卡② §13;先例迭代 38 卡② 停卡);把方法挪去 BoardData 或他件=职责面重设计(上游裁决)。
**建议案**:读法 A——用户特批准记基线 1 键(minesweeper_rules 公开方法 21),理由:+2 归位是 2026-11-03 会话裁决的机械承载、消费面决定两方法必须公开、基点考证误差 1 属写卡段缺陷(非实现超预算)、特批有迭代 38 先例。批后可开「minesweeper_rules 公开面还债」条目(归后续批:如 settle_batch/fx_reveal 族收敛)随还债降键。
**该红不阻塞的实证**:卡② 全部验收断言绿、golden 零漂移、sweep 恒零——S13 是结构预算闸不是行为闸;红项单键、修复路径已指认(特批记基线或后续还债批)。用户裁决后本迭代即可走独立验收审计→合并;若用户裁读法 B(拆面),开修复 worktree `fix-iter51-s13` 处置后重审计。
## 七、实现决定记录(代拍板白名单外备案)
1. **卡① has_effect_on 零消费方保留**:删 grant_segment 调用后 `EffectEngine.has_effect_on` 全仓零调用。卡面 :203 处置=注释改写、函数保留(T0 步骤明写「:203 句改……」未列函数删除),未代裁扩大删除面。后续可另立待办处置(纯框架 API 死码)。
2. **卡① 零残留 grep 唯一例外**:effect_port_test.gd:131 V4 断言文案与 `biz_fact("charge_layers")` 参数引证退役键名——卡面 T0 定死的断言文案(证明「键退役→null」必须引用键名),断言优先于 grep 字面。
3. **卡① 三处 swap 域描述词换代**:run_all.gd:213 manifest 注释、effect_port_test :67/:83 的「蓄力层」简称改「蓄力周转」(swap_charge_layers 在役域,词面清旧称;断言判据零变——:83 属断言文案措辞,判据 `v_c - v_0 >= 1` 不动)。
4. **卡② oc._ 计数 102 vs 卡面 105**:迭代 50 甲案删 attack_segments 分支所致(卡面预告的漂移,grep 符号锚定位,禁改判据)。
5. **卡④ 曲线护栏逐带累加**:table_structure_guard_test 第一关总量比断言原单行覆盖口径在 (1,3) 双行同带下失真(后行覆盖前行→band3 总量 12→72 比值 6.00 假红);改同带逐行累加(band3=22×1+8×1.5=34,比值 2.12)——与卡④ R6 已裁「逐行求和与 spawn 守卫同口径」同构,阈值 2.5 零变化,非放宽。期望序列文案 12/10/22/35/72→12/10/22/34/72(34=混编实况)。
6. **卡④ level_shop 白盒抬 GP**:(1,3) 混编改战斗流随机消费序→_smoke_shop_pool 种子扫描选中的场景 gp 分布漂移(进店刷新扣费后 gp=1<全架最低价)→「可购卡在架」假红。修法=③ 买段前白盒 `r8.gp += 128`(A 银段 :1345 同款先例「直改测试基建——非生产行为」),买链判据零变化;MC-1 刷新段保持原位(进店未买态语义),未动段落序。
7. **卡④ R5 零残留 grep 唯一例外**:table_structure_guard_test 新增 v5 断言文案与 `id_set.has("hobgoblin")` 引证退役键名(卡面 §八 R5 定死验收文案)。
8. **卡② 测试连带三处迁移**(写卡 §3.2 漏盘点):adventure_feats_test :791 与 level_shop_economy_test :1484 `a._bp_store._pending_next_level` → `pending_next_level()`;feat_vouchers_test :81 `_loadout_seeded = false` → `set_loadout_seeded(false)`(断点公开面在用,引用形态迁移非削弱);damage_controller_test :55 直构夹具补 BattleFacts 第五参(facts 构造注入——hero_atk 消费面,夹具空 encounter=表值缺省)。**审计订正**:level_shop 一处曾随回滚实验丢失(卡④ 提交后由独立验收审计查出,:1484 补迁移复跑 195 checks 绿——动态访问失效成员使停点分支恒假、依赖种子被扫描跳过掩盖红,属申报落实的漏项非削弱)。
9. **卡② snapshot 测试对拍形态**:GOLDEN 三引号 raw string 首尾各带换行(多行字符串语法载体),比较两侧 strip_edges 后逐位等——判据零变(内容逐位),语法载体适配。
## 八、遗留读数义务与反哺点
- 遗留读数:卡④ Alpha 零读数(归数值统一修正批);卡② S13 一键(§六待裁)。
- 反哺点:见 `reports/iter51-反哺点-2026-11-04.md`(architecture.md 十处+GDD/术语确认行)。
- 待办清单条目状态推进与 roadmap「当前位」换代:归文档批(本批禁写)。
-190
View File
@@ -1,190 +0,0 @@
# 迭代 51 独立验收审计(2026-11-04)
> 审计身份:独立会话审计员,未参与本批实现(实现由另一会话完成)。
> 工作区:D:\code\g-plan2-iter51(分支 iter51,基点 master=63fe2da0,diff 范围 63fe2da0..HEAD,HEAD=ef3cd8db,工作树 clean)。
> 审计范围:四张需求卡片(①EffectPort 蓄力层删键批 ②架构审查 5.1 封装修复批 ③架构审查 P2 代码面批 ④L1 深度 3 混编)+实现报告 §一–§八+全量 diff 逐文件核对(48 件,+1594/−474)。
> **验收档:四卡均未申报验收档——按高档全量执行**(对照表逐行核对+判据绑定面抽查+最窄测试复跑抽查+逐处削弱检查+直查例外核对+S13 对账复核)。
> 纪律:只读生产码与测试;禁变异类测试、禁撤销类取证;本报告为本审计唯一写入文件。
## 一、最窄测试复跑读数
环境:Godot 4.7.2 console 版(D:\code\godot\Godot_v4.7.2-stable_win64_console.exe)headless,工作目录 game/,`--script` 单件直跑;跑前确认 `game/.godot/global_script_class_cache.cfg` 在位(直接跑)。退出码 0=绿。
| 套件 | 归属 | 退出码 | 读数 |
|---|---|---|---|
| effect_port_test | 卡① V4(五件套) | 0 | all green(16 checks,V4 断言在列全 PASS) |
| settlement_wiring_snapshot_test | 卡② R1 golden 主证(五件套) | 0 | all green(3 checks,golden 逐位同) |
| encapsulation_sweep_test | 卡② V2–V7(五件套) | 0 | all green(38 checks) |
| encapsulation_p2_sweep_test | 卡③ V1/V2(五件套) | 0 | all green(6 checks) |
| table_structure_guard_test | 卡④ v1–v6(五件套) | 0 | all green(83 checks,v1–v6 六条全 PASS) |
| round_flow_skill_pool_test | 审计自选(卡④ R6/R7/R10) | 0 | all green(136 checks,含 buff_targets_self 种子搜索命中 seed=1) |
| save_rng_roundtrip_test | 审计自选(卡② R4) | 0 | all green(17 checks) |
| treasure_effects_test | 卡① 行 2 | 0 | PASS |
| settle_segments_test | 卡② R1 | 0 | all green(18 checks) |
| adventure_feats_test | 卡② R2 | 0 | all green(138 checks) |
| seal_polarity_test | 卡② R3 | 0 | all green(70 checks) |
| refresh_feats_test | 卡① 契约 2/卡② R1 | 0 | all green(85 checks) |
| roll_multiplier_test | 卡② R2 | 0 | all green(42 checks) |
| config_db_resolver_test | 卡② R6/卡④ | 0 | all green(13 checks) |
| config_db_test | 卡④ | 0 | all green(29 checks) |
| save_manager_domain_test | 卡② R5 | 0 | all green(97 checks) |
| save_slot_isolation_test | 卡② R5 | 0 | all green(22 checks) |
| feat_vouchers_test | 卡② 连带迁移 | 0 | all green(49 checks) |
| damage_controller_test | 卡④ R10 | 0 | all green(50 checks) |
| battle_narrator_test | 卡④ R10 | 0 | all green(22 checks) |
| level_shop_economy_test | 卡④ R8 | 0 | all green(195 checks) |
| node_map_determinism_test | 卡③ 零行为主证 | 0 | all green(21 checks) |
## 二、卡① EffectPort 蓄力层删键批
### 对照表逐行核对(3 行)
| 行 | 验收测试存在性 | 尾缀 grep | 真实入口判定 | 结果 |
|---|---|---|---|---|
| 1 | effect_port_test.gd:131 断言在(V3 组 `_test_biz_fact_face_closed` 末尾) | 「V4 闭面收窄:charge_layers 键退役——宿主事实应答 null」grep 命中 :131 | begin_battle 真实装配链(:102 `orch.begin_battle(_enc([]))` 受理后 :131 取 `orch.fx_host().biz_fact("charge_layers")`——fx_host() 公开访问器+biz_fact 公开方法,未绕过装配链直调下层) | 通过 |
| 2 | treasure_effects_test 三断言在,期望值 rap==4/5/3 逐字未动(diff 仅调用实参行) | 无新增尾缀(既有断言回归锚,卡面即如此定) | request_stop→finish_round_stop 真实停手路径;直构 ActionEconomy 夹具=卡面 §8 测试方式两分法明示的调试接口验证形态,且卡面 §7 T0 逐字定死该三行改单参——非绕过 | 通过 |
| 3 | 静态判据:effect_engine.gd EVENTS `charge_full` 位、FACTS `charge_layers` 位删除(diff 证实 :14/:59 两处删位) | —(词表常量面,卡面明示无独立运行期提交面) | —(静态判据+评审注记,卡面申报观测面局限在案) | 通过 |
零残留复核:`grep -rn "charge_layers|charge_full|CHARGE_LAYER|蓄力层|转蓄力|厚积薄发|铁壁|整备军备" game/ --include=*.gd --include=*.tres` 全部命中仅在 swap_charge_layers 在役域(feats.tres :1018-1056 六行、refresh_feats_test `test_charge_layers_consumed_same_round` 函数名与其断言、effect_port_test :16 注释)+V4 断言键名引证(effect_port_test :131)——前者=卡面 §1 完成定义明写豁免域,后者=报告决定记录 2 申报的唯一例外(证明「键退役→null」必须引用键名)。达卡面 T1 零残留判据。
### 削弱检查(逐处)
| diff 处 | 申报出处 | 结论 |
|---|---|---|
| treasure_effects_test 三处 finish_round_stop(false,N)→(N)(:132/:138/:144) | 卡① §8 测试削弱申报 | 通过——断言期望值与检查语义逐字零变化 |
| effect_port_test :57 注释+:83 断言文案「蓄力层→蓄力周转」 | 卡① §8 申报(V1 两处文案) | 通过——判据 `v_c - v_0 >= 1` 不动 |
| effect_port_test :16/:103 误标注释改写 | 卡① §7 T1 申报(三处注释) | 通过——注释级 |
| run_all.gd:213 manifest 注释「蓄力层→蓄力周转」 | 报告决定记录 3 | 通过——注释级,判据零变 |
| has_effect_on 函数保留(grant_segment 调用删后全仓零调用方) | 报告决定记录 1(卡面 T0 :203 只列注释改写、未列函数删除) | 通过——未代裁扩大删除面,与卡面一致 |
无未申报删改。
### 直查例外核对
对照表三行均未声明「内部字段直查=受控例外」:行 1 走公开面(fx_host()/biz_fact);行 2 直构夹具=卡面 §8 两分法明示形态;行 3 静态面。无需例外注记,判定=通过。
## 三、卡② 架构审查 5.1 封装修复批
### 对照表逐行核对(R1–R6)
| 行 | 验收测试存在性 | 尾缀 grep | 真实入口判定 | 结果 |
|---|---|---|---|---|
| R1 | settlement_wiring_snapshot_test.gd:456 主对拍在(GOLDEN 常量 :22-416 固化,seed 4242;dump 通道 :443-448);settle_segments_test :30-34 束构造 5 条+:38-44 同一性 6 条在 | 「封装5.1 V1」:4/:456 命中 | begin_battle→minesweeper.settle_batch→player_request_refresh 全公开入口;段类消费全经真实编排器接线(settle_segments 直构束=卡面 §8 申报 1 的适配形态) | 通过 |
| R2 | golden V1 覆盖五方法消费路径(主角攻击 base_value/奖励乘区/terrain_kind 事实/hero_atk override 行均在 golden 行流内);roll_multiplier_test 既有回归绿;sweep V3 编排器五方法定义零命中 | sweep :69-70 五方法名零命中断言(〔封装5.1〕尾缀 :36/:42 模板命中 38 处) | begin_battle spawn 经 `_damage.hero_atk()`(battle_orchestrator.gd diff :285 证实改指),未绕过 | 通过 |
| R3 | seal_polarity_test 70 checks/round_flow 136 checks 绿+sweep V6(grant 两私键零命中+mark_new_resource_type 正锚 :100-101) | 〔封装5.1〕尾缀在案 | 授予段真实结算链(两套件全走 begin_battle) | 通过 |
| R4 | save_rng_roundtrip_test diff 零改动(未触碰)、17 checks 绿;sweep V4(adventure_runner `_bp_store\._` 零命中+`_bp_store\.bp_read\(` 正锚 :78-79) | 〔封装5.1〕尾缀在案 | AdventureRunner.resume_adventure/start_adventure→write_to_disk/load_from_disk(integration 件真实入口) | 通过 |
| R5 | save_manager_domain_test 97/save_slot_isolation_test 22 绿;sweep V5(save_manager `slots\._` 零命中+active_path 正锚;slot_store `_save\._` 零命中+七公开面正锚 :84-92) | 〔封装5.1〕尾缀在案 | write_to_disk/load_from_disk/_ready 迁移口/activate_slot/peek_slot_summary(两套件承载) | 通过 |
| R6 | config_db_resolver_test 13 checks 绿(rowset 保序/行类路由/难度 clamp);sweep V7(config_db `\._resolver\s*=` 零命中+`bind_resolver\(_resolver\)` 正锚 :109-110) | 〔封装5.1〕尾缀在案 | ConfigDB.load_tables→resolve_*(三 schema bind_resolver 类型环当轮真实跑通——T4 义务承载) | 通过 |
零行为变更主证复核:golden 对拍断言绿(本审计复跑);段类对编排器引用归零由 sweep V2 七文件 `\boc\b` 零命中承载;束 20 键组装与五方法删除、RoundCycle/BattleRefreshFlow 形态换代在 diff 逐文件证实。
### 削弱检查(逐处)
| diff 处 | 申报出处 | 结论 |
|---|---|---|
| settle_segments_test :20-24 五段直构断言改束构造成功(:30-34) | 卡② §8 申报 1 | 通过——段类可独立实例化断言意图保持 |
| settle_segments_test :28-34 宿主回指 6 条改注入同一性(:38-44——round_cycle.facts/grant.facts/aura 回调对象 get_object()==oc/combat.fx_host/decay.status_effects/verdict.units) | 卡② §8 申报 2 | 通过——6 条全数对上,强度对应回指 |
| adventure_feats_test :671/:691/:727 三处 orch._hits_of→DamageController.hits_of | 卡② §8 申报 3 | 通过——断言内容(attack_bonus 命中过滤)零改动 |
| adventure_feats_test :791 `a._bp_store._pending_next_level`→`pending_next_level()` | 报告 §七 8 | 落地证实(grep 现值为公开方法调用) |
| feat_vouchers_test :81 `_loadout_seeded = false`→`set_loadout_seeded(false)` | 报告 §七 8 | 落地证实 |
| damage_controller_test :56 直构夹具补 BattleFacts 第五参 | 报告 §七 8 | 通过——夹具空 encounter=表值缺省,断言零改动 |
| snapshot 测试 strip_edges 对拍(:449-451) | 报告 §七 9 | 通过——内容逐位判据零变,三引号语法载体适配 |
| **level_shop_economy_test :1484 `a._bp_store._pending_next_level`——报告 §七 8 与卡④ commit信息均申报为已迁移,实际未改** | —— | **申报失实,见第六节;非削弱(该行零改动=零删改)** |
无未申报删改、无阈值放宽、无扫描面缩小。
### 直查例外核对
settle_segments_test 直查 `oc._facts`/`oc._rounds._grant_seg.*` 等编排器内部(同一性断言)=卡② §5 明示受控例外(「sim/probe/tests 的测量面直构惯例与测试受控例外——零清扫:orch._facts/orch._rounds/orch._emit_row 等测试直连维持现状」)。报告 §七 8 三处测试直连迁移=附加申报(其中一处未落地,见第六节,且该处属同一受控例外面、运行态零差异)。例外均有注记,判定=通过。
## 四、卡③ 架构审查 P2 代码面批
### 对照表逐行核对(R1)
| 行 | 验收测试存在性 | 尾缀 grep | 真实入口判定 | 结果 |
|---|---|---|---|---|
| R1 | encapsulation_p2_sweep_test V1(:40-41 生成器 `^const NODE_TYPES` 零命中+`LevelTable\.NODE_TYPES\.has\(` 正锚)/V2(:56-58 生产三目录 `NODE_TYPES` 定义恰 1 处且落 data/schemas/level_table.gd);node_map_determinism_test 既有全套 21 checks 绿 | 「〔架构P2〕」尾缀 :27/:32/:56/:58 命中 | 源扫描(静态)+LevelRunner 关卡推进生成链(determinism 同种子逐位——零行为变更主证) | 通过 |
生产面独立复核:`grep -rnE "NODE_TYPES\s*:?\s*=" core data presentation` 唯一命中 data/schemas/level_table.gd:11;node_map_generator.gd 本地 const 删、:135 改 `LevelTable.NODE_TYPES.has(...)`(diff 证实);S3 schema class_name 直引豁免面形态(卡面 §3 在案)。
### 削弱检查
卡面 §8 申报零条;diff 中本卡测试改动仅新增 sweep 件+run_all manifest +1 行——零删改既有断言。通过。
### 直查例外核对
纯源扫描与既有套件回归,无内部字段直查。通过。
## 五、卡④ L1 深度 3 混编
### 对照表逐行核对(R1–R10)
| 行 | 验收测试存在性 | 尾缀 grep | 真实入口判定 | 结果 |
|---|---|---|---|---|
| R1 | table_structure_guard_test :232 v1(29 行键序=(1,3) 两行相邻、熊地精在前) | 〔L1混编 v1〕:232 命中 | ConfigDb.load_tables→EnemyTable.rows 遍历拼四段串逐行比对 | 通过 |
| R2 | :242 v2(行集恰两行、enemy_id 序列==[bugbear,goblin]) | 〔L1混编 v2〕:242 命中 | `resolve_rowset(1,3,"battle")` 返回序列——判据绑返回长度与 enemy_id 序列(被测数据改动特有提交面) | 通过 |
| R3 | :244 v3(Σ(unit_count_max,固定行缺省)==3) | 〔L1混编 v3〕:244 命中 | 同上求和值==3 | 通过 |
| R4 | :258 v4(两行逐字段==(1,2)/(1,0) 行,零字面量) | 〔L1混编 v4〕:258 命中 | EnemyTable.rows 字段逐项比对 | 通过 |
| R5 | :263 v5(表内 enemy_id 集合不含 hobgoblin)+T2 回读命令 | 〔L1混编 v5〕:263 命中 | rows 遍历+grep | 通过 |
| R6 | round_flow :320 全域扫描逐行求和(72 场全绿) | 断言文案「逐行求和」:320 命中 | begin_battle→presentation_snapshot().enemies.size() | 通过 |
| R7 | round_flow :575-576 池模板两键(bugbear 6/2/2+goblin 9/1/1,顺序按表行序) | :575-576 两键在案 | 表读取逐键逐权重比对 | 通过 |
| R8 | level_shop :727「表回 29 行」 | :727 断言在案 | 同套件既有注入/还原流程(rows.size()==29) | 通过 |
| R9 | :270 v6((1,4)/(1,5) battle 行集==单行 bugbear(band 6)) | 〔L1混编 v6〕:270 命中 | resolve_rowset(1,4/5,"battle") | 通过 |
| R10 | damage_controller_test _test_pool_consumption_per_unit/battle_narrator_test :114-115 _test_snapshot_effects_per_unit 混编行集下绿(50/22 checks) | —(回归护栏行,卡面即不设新尾缀) | UnitContainer.spawn(1,3)→all_enemies().size()≥2 | 通过 |
行值整行复用独立复核:enemy.tres (1,3) bugbear 行(:82-104)与 (1,2) 行(:58-80)逐字段一致(hp22/atk1/atk 0-2/池 attack6-charge2-heavy2/normal/light/ac2/unit_count 1 无 unit_count_max);(1,3) goblin 行(:106-129)与 (1,0) 行(:8-31)逐字段一致(hp8/池 attack9-lunge1-desperate_guard1/normal/light/ac0/unit_count 1-2)。行序 bugbear 在前、两行相邻。表注四处处置(实体名修正段删/首批投放段尾追加/N1 括注保留/缺口句换新注)diff 逐处证实。零残留复核:全仓 `hobgoblin` grep(data/core/presentation/probe/sim/tests/tools)唯一命中=v5 断言自身键名引证(table_structure_guard_test :259 注释+:263 断言)=报告决定记录 7 申报的唯一例外。
### 削弱检查(逐处)
| diff 处 | 申报出处 | 结论 |
|---|---|---|
| table_guard :234-241 hobgoblin 留任断言删(原〔fv12〕) | 卡④ §十二 申报① | 通过——钉已退役事实;原位换 v2–v6 五条新断言,覆盖强度净增 |
| round_flow :312-317 首行区间改逐行求和 | 卡④ §十二 申报② | 通过——与 unit_container spawn 守卫同口径,72 场全绿,双行行集下非放宽(旧口径必红) |
| round_flow :615 文案二十八行九种→二十九行十种 | 卡④ §十二 申报③ | 通过——只改文案不改判据 |
| static_scan.sh 删 FNR==891 豁免(:145 头注+:222 执行点) | 卡④ §十二 申报④ | 通过——对象行已随表注段删除,留置会误放别行 |
| 曲线护栏单行覆盖口径改逐带累加(期望序列 12/10/22/35/72→12/10/22/34/72,阈值 2.5 不动) | 报告 §七 5 | 通过——(1,3) 双行同带下旧「后行覆盖前行」口径失真(band3 总量 12→72 比值假红),新口径=同带逐行累加、与 R6 逐行求和同构;阈值零变化 |
| level_shop :1314-1324 白盒抬 GP 128+文案改 | 报告 §七 6 | 通过——测试基建直改(A 银段 :1345 同款先例在案),买链判据零变化 |
| config_db_resolver_test 合成行 hobgoblin→giant_spider(:44,三条期望串同步) | 卡④ §七 T2 明写(并明写不换 bugbear 的理由) | 通过——夹具级,断言结构零变 |
| config_db_test :222 「不相邻」样本换 giant_spider | 卡④ §七 T2 明写 | 通过——同上 |
| damage_controller_test :414/battle_narrator_test :114 两处夹具注释改述 | 卡④ §七 T2 明写(断言零改动) | 通过 |
| doc_term_audit.py :144 注释敌种枚举去 hobgoblin | 卡④ §七 T2 明写 | 通过——注释级 |
无未申报删改、无阈值放宽、无未申报扫描面缩小。
### 直查例外核对
卡④ 判据全部绑公开面(rows/resolve_rowset 返回序列/presentation_snapshot/UnitContainer.spawn)——无需例外注记。通过。
## 六、申报失实项(非验收缺漏,需订正)
**实现报告 §七 第 8 条与卡④ commit afaab6a7 提交信息均申报「卡②断点公开面三处测试直连迁移(pending_next_level×2/loadout_seeded)」,实际落地两处:**
- adventure_feats_test :791 `a._bp_store.pending_next_level()`——已落地;
- feat_vouchers_test :81 `a._bp_store.set_loadout_seeded(false)`——已落地;
- level_shop_economy_test :1484 `if a._bp_store._pending_next_level:`——**未改**(该文件 diff 全量核对仅 :724-727 与 :1314-1324 两处触碰)。
定性与影响:非验收缺漏——该行零改动=无断言删改、无削弱;测试侧 `_bp_store._` 直查属卡② §5 明示受控例外面;BreakpointStore `_pending_next_level` 成员保留(breakpoint_store.gd:60),运行态与改前逐位同,套件全绿(level_shop 195 checks)。但实现报告与提交信息的该条申报与实况不符,构成产出物事实错误——建议订正实现报告 §七 第 8 条(改为「两处落地、level_shop 一处未迁」);commit 信息不可改,以本节记录在案。
## 七、S13 对账复核
实测 `python tools/gdstyle_gate.py`(工作目录 game/,退出码 1):
```
[gdstyle_gate] 扫描面 158 个 .gd;命中 6 条,基线内 5 条,基线外新违规 1 条,较登记值恶化 0 条
FAIL 新增 game/core/minesweeper_rules.gd|quality/max-public-methods
[gdstyle_gate] FAIL — 基线外新违规 1 条/恶化 0 条——新码须修到基线口径内,恶化须还债或经用户批准随批重生成基线
```
与实现报告 §六 逐字一致。独立考证:基点 63fe2da0 的 minesweeper_rules.gd 公开方法实数 19(`git show 63fe2da0:game/core/minesweeper_rules.gd` 逐 func 清点);HEAD 21(含新增 harmful_variants/harmful_adjacent 两搬家方法,diff :58/:70 证实)→ 21>20(S13 默认阈值)。其余触件只降不升(action_economy 类变量 14→12 实测;gdstyle 无第二键恶化)。
该项为实现报告 §六已停卡呈报待用户裁的结构闸项(写卡考证 18 失实、基点实数 19、+2 搬家方法),**不属于验收闭合缺陷**——本审计如实记录其状态与呈报位置,不计入审计终判。**合并前置条件=用户对该键的裁决**(特批准记基线随还债降键,或裁实现报告 §六读法 B 开 fix-iter51-s13 修复批后重审计)。
## 八、终判
**通过**——四卡对照表全部行(卡① 3 行/卡② R1–R6/卡③ R1/卡④ R1–R10)验收断言真实存在、尾缀可 grep 定位、真实入口未绕过被测改动点、判据绑被测改动特有的可观测提交面;最窄复跑五件套+审计自选两件+对照表引用全部其余套件绿(22 件全 0 退出码);测试削弱全部落在四卡申报清单与实现报告决定记录内,零未申报删改;直查例外均有注记;卡① 蓄力层族与卡④ hobgoblin 零残留 grep 达成且例外均为申报例外。
记录在案三项(均不改变终判):
1. **S13 一键**(minesweeper_rules 公开方法 21>20)——停卡呈报在案(实现报告 §六)。**合并前置条件=用户对该键的裁决**;裁决后按既定通道走。
2. **申报失实一项**——实现报告 §七 第 8 条「三处测试直连迁移」实际落地两处(level_shop_economy_test :1484 未迁),建议订正报告;非验收缺漏、非测试削弱。
3. 卡② golden 改前固化读数以 GOLDEN 常量在案(settlement_wiring_snapshot_test.gd:22-416,seed 4242),改后对拍绿——对拍读数在案义务已履行。