From 490ea35c532819f71c891fbe4a8695f4dbd9d8b1 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Wed, 4 Nov 2026 07:51:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E7=A8=8B(=E8=BF=AD=E4=BB=A351?= =?UTF-8?q?=E8=BF=9E=E5=B8=A6=E9=9D=A2=E9=9A=8F=E8=BF=81):=20=E5=9B=9B?= =?UTF-8?q?=E7=BA=A2=E9=A1=B9=E6=B5=8B=E8=AF=95=E4=B8=8E=E6=A0=87=E6=B3=A8?= =?UTF-8?q?=E8=A1=A5=E6=94=B9=EF=BC=8C=E8=A1=8C=E4=B8=BA=E9=9B=B6=E5=8F=98?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 归因: 四条红全部由迭代 51 合回(fb27dc2f)引入,重塑后两笔—— 1cd6e2b1 卡①(effect_engine.gd:14 删 charge_full 词表位)与 372b4fdc 卡②(damage_controller.gd:50 _init 加 facts_ref 第五参;slot_store.gd:155 migrate_legacy_save 公开化;breakpoint_store 新增 13 公开读写方法)。 首现于 run 56(5d7579e7 合回,因动 game/tests/.gates/.gitignore 被判 full 域)—— 迭代 51 之后第一次代码域全量真跑;run 51 倒在导入步(runner 故障)、run 54 实为 域=docs、run 55 零触发跑闸步 skipped,故这三跑都没照出。 - 随迁面: 1) forge_table_test.gd:219 EVENTS 闭集计数 22→21(卡①残留面清单 13 处+注释 3 处 未含测试内闭集计数断言,属卡片考证缺面)。 2) system_contracts_test.gd 补 BattleFactsScript preload 与 :108 第五参;:102 注释 「四个依赖」改「五个依赖」(定型标注面同步)。 3) save_manager_domain_test.gd:481/492 改公开名 migrate_legacy_save。 4) breakpoint_store.gd:225 bind_save_manager 参数补类型 sm: SaveManagerCore(09 R3)。 - 验证: 三套件单跑 exit 0(forge_table/system_contracts/save_manager_domain); audit_type_hints PASS 产品码类型闸归零;--code 档 09 静态扫描已离红名单。 - 一条与本轮无关的本机红在案: settlement_wiring_snapshot_test V1 同种子 golden 对拍 本机(Windows)红、远端(Mac,同字节 run 56)绿——把码面改动全摘回纯净 master 单跑 仍红,故非本批引入;golden 平台绑定成因未查,另条登记待裁。 --- game/core/breakpoint_store.gd | 2 +- game/tests/unit/contracts/system_contracts_test.gd | 7 ++++--- game/tests/unit/core/save_manager_domain_test.gd | 4 ++-- game/tests/unit/data_config/forge_table_test.gd | 4 ++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/game/core/breakpoint_store.gd b/game/core/breakpoint_store.gd index 699a5367..85af6d25 100644 --- a/game/core/breakpoint_store.gd +++ b/game/core/breakpoint_store.gd @@ -222,7 +222,7 @@ func _bp_read_int(key: String, bp: Dictionary, fallback: int, params: Dictionary # ---- 断点域六成员公开读写面(5.1 封装修复——宿主私取清零:方法体一律一行转发自有成员,零逻辑增量)---- # 断点承载注入(宿主构造后接线——save_manager 后绑) -func bind_save_manager(sm) -> void: +func bind_save_manager(sm: SaveManagerCore) -> void: _save_manager = sm diff --git a/game/tests/unit/contracts/system_contracts_test.gd b/game/tests/unit/contracts/system_contracts_test.gd index 4c212e80..350e1308 100644 --- a/game/tests/unit/contracts/system_contracts_test.gd +++ b/game/tests/unit/contracts/system_contracts_test.gd @@ -13,6 +13,7 @@ const RngServiceScript := preload("res://core/rng_service.gd") const StatusContainerScript := preload("res://core/status_container.gd") const UnitContainerScript := preload("res://core/unit_container.gd") const DamageControllerScript := preload("res://core/damage_controller.gd") +const BattleFactsScript := preload("res://core/battle_facts.gd") const Kit := preload("res://tests/unit/test_kit.gd") # T6 收口:_check/汇总退出样板单点 @@ -98,13 +99,13 @@ func _test_ticket_nine_columns() -> void: func _bare_controller(): var db = ConfigDBScript.new() - # 只取 open_ticket 纯构造面——四个依赖一律传真实实例,不用空桩: - # DamageController 的 db/rng/units/effects 全是定型标注,传无类型的空桩会触发 + # 只取 open_ticket 纯构造面——五个依赖一律传真实实例,不用空桩: + # DamageController 的 db/rng/units/effects/facts 全是定型标注,传无类型的空桩会触发 # 「Trying to assign value of type '' to a variable of type '…'」脚本错误——该错误不改退出码, # 却让赋值静默失败(成员留 null),脚本错误扫描落地后必红。三者均可零消费构造。 var units = UnitContainerScript.new(db) var effects = StatusContainerScript.new(db) - return DamageControllerScript.new(db, RngServiceScript.new(), units, effects) + return DamageControllerScript.new(db, RngServiceScript.new(), units, effects, BattleFactsScript.new()) # ---- B4→B3:增益授予布尔受理口径(受理/拒绝二元面 + 投影一致性) ---- diff --git a/game/tests/unit/core/save_manager_domain_test.gd b/game/tests/unit/core/save_manager_domain_test.gd index 26211e86..4574f1c9 100644 --- a/game/tests/unit/core/save_manager_domain_test.gd +++ b/game/tests/unit/core/save_manager_domain_test.gd @@ -478,7 +478,7 @@ func _smoke_save_slots() -> void: fsrc.store_string(JSON.stringify({"version": 7, "meta": {"keystone_balance": 1234}})) fsrc.close() DirAccess.remove_absolute(slot_tpl % 1) - ml.slots._migrate_legacy_save(legacy_src, slot_tpl % 1, legacy_src + ".migrated.bak") + ml.slots.migrate_legacy_save(legacy_src, slot_tpl % 1, legacy_src + ".migrated.bak") var migrated: Dictionary = JSON.parse_string(FileAccess.get_file_as_string(slot_tpl % 1)) Kit.check("sv12 旧档字节迁入槽 1(逐域相等——余额 1234)〔卡① sv12〕", int((migrated.get("meta", {}) as Dictionary).get("keystone_balance", -1)) == 1234) @@ -489,7 +489,7 @@ func _smoke_save_slots() -> void: var fsrc2 := FileAccess.open(legacy_src, FileAccess.WRITE) fsrc2.store_string(JSON.stringify({"version": 7, "meta": {"keystone_balance": 777}})) fsrc2.close() - ml.slots._migrate_legacy_save(legacy_src, slot_tpl % 1, legacy_src + ".migrated.bak") + ml.slots.migrate_legacy_save(legacy_src, slot_tpl % 1, legacy_src + ".migrated.bak") var slot1_now: Dictionary = JSON.parse_string(FileAccess.get_file_as_string(slot_tpl % 1)) Kit.check("sv12 幂等:槽 1 已存在不重迁(预置 777 零覆盖、源保留)〔卡① sv12〕", int((slot1_now.get("meta", {}) as Dictionary).get("keystone_balance", -1)) == 1234 diff --git a/game/tests/unit/data_config/forge_table_test.gd b/game/tests/unit/data_config/forge_table_test.gd index 226a5114..7bca3562 100644 --- a/game/tests/unit/data_config/forge_table_test.gd +++ b/game/tests/unit/data_config/forge_table_test.gd @@ -216,5 +216,5 @@ func _test_negative_cases() -> void: func _test_effect_kinds_closed() -> void: Kit.check("效果引擎效果类型闭集 32 种(甲案词表退役——overflow/attack_segments 摘名)〔锻造工坊批 V11〕", EffectEngineScript.EFFECT_KINDS.size() == 32) - Kit.check("效果引擎事件词表在册 22 种(迭代 46 换图系扩签 refresh_request/board_refreshed 换代)〔锻造工坊批 V11〕", - EffectEngineScript.EVENTS.size() == 22) + Kit.check("效果引擎事件词表在册 21 种(charge_full 位摘名——蓄力层删键批)〔锻造工坊批 V11〕", + EffectEngineScript.EVENTS.size() == 21)