工程(迭代51连带面随迁): 四红项测试与标注补改,行为零变更

- 归因: 四条红全部由迭代 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 平台绑定成因未查,另条登记待裁。
This commit is contained in:
DKChan committed 2026-11-04 07:51:06 +08:00
1 parent b9c2e86d13
commit 490ea35c53
4 files changed
+9 -8

No files matched your search

+1 -1
View File
@@ -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
@@ -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:增益授予布尔受理口径(受理/拒绝二元面 + 投影一致性) ----
@@ -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
@@ -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)