fix(核代码补审): A-1 _face_liveness 补 alive-null 臂(激活 13 条对象缺位拦截,both 合法 null 不受影响);A-2 V2-s4 补结构例外注;B×3 标签收口(V2d 删按钮承接叙事/V3h 删不复用冗余/V3 删续玩联动残留);C-1 重复注释删除——代码域闸 --code 全绿验证通过(激活臂零误红)
This commit is contained in:
1 parent
9f8beb3507
commit
5644d30c6b
17 files changed
+34
-12
No files matched your search
@@ -173,7 +173,7 @@ func _smoke_boot_chain() -> void:
|
||||
# ④-1 boot 路径:启动态钉死(卡① sv2)——boot 无激活态、断点在档恒否,续玩钮恒隐
|
||||
#(原「按钮态==真实档断点态」关系判据随启动态换代改写:test-conventions §9.5 申报在案,卡② mn8 再承接)
|
||||
check(not sm.has_breakpoint(),
|
||||
"V2d 续玩钮族退役·boot 无断点在档(启动态不隐式激活——卡① sv2 钉死;恒隐判据随钮退役由本断言+V2d 三钮在位承接)〔装配生命批 V2·卡② mn8 改写〕")
|
||||
"V2d boot 无断点在档(启动态不隐式激活——卡① sv2 钉死)〔装配生命批 V2·卡② mn8 改写〕")
|
||||
# ④-1b 启动态三断言+旧单档迁移不变式(卡① sv2/sv12——真实 autoload boot 链)
|
||||
check(sm.active_slot() == 0 and not sm.has_write_target(),
|
||||
"V2-s1 boot 后无激活态(active_slot=0、写盘目标空)〔卡① sv2〕")
|
||||
@@ -182,7 +182,7 @@ func _smoke_boot_chain() -> void:
|
||||
check(not sm.write_to_disk(),
|
||||
"V2-s3 boot 无激活写盘拒绝(write_to_disk=false 生产入口)〔卡① sv3〕")
|
||||
check(not (FileAccess.file_exists("user://save.json") and not FileAccess.file_exists(sm.slot_path(1))),
|
||||
"V2-s4 旧单档迁移不变式(旧档在则槽 1 必在——Q1 甲一次性迁移已发生)〔卡① sv12〕")
|
||||
"V2-s4 旧单档迁移不变式(旧档在则槽 1 必在——Q1 甲一次性迁移已发生;旧档在盘面罕见,迁移逻辑本体由 save_manager_domain v0 迁移链断言覆盖)〔卡① sv12·核代码增补注〕")
|
||||
# ④-2 三钮承接(卡② mn8——V2d 续玩钮族随钮退役废止:钮可见性联动面由卡① V2-s 启动态断言与
|
||||
# sv11 attach 语义段承接;attach 原地重置语义保持——绝不碰真实档 user://save.json)
|
||||
for p in ["user://smoke_boot_chain.json", "user://smoke_boot_chain.json.tmp"]:
|
||||
@@ -213,10 +213,6 @@ func _smoke_boot_chain() -> void:
|
||||
DirAccess.remove_absolute(p)
|
||||
|
||||
|
||||
# ---- 生命周期存活性矩阵(九阶段×五引用面;驱动复用 V3 debug seed 开局路径+
|
||||
# _auto_play_round 活战斗模式+ui_struct resume 夹具模式,不另起点击链)----
|
||||
# 阶段映射说明:计划书十阶段中「开局停点」与「地图选路」在本现行流程同为关卡画面停点态
|
||||
#(level_started→choices_presented 同步到达,无可观测中间态)——合并为 V3b 一处断言。
|
||||
func _smoke_run_lifecycle() -> void:
|
||||
print("--- 迭代27 T1 会话物化(V3:两连局复位+脏状态不残留)---")
|
||||
var main: Node = load("res://presentation/main.tscn").instantiate()
|
||||
@@ -259,7 +255,7 @@ func _smoke_run_lifecycle() -> void:
|
||||
"V3 局态封印/账本全复位(queue_free 物化——注入脏状态零残留)")
|
||||
check(main._start_overlay.visible, "V3 回开始菜单(终局出口路径)")
|
||||
# ---- 第二局:放弃终局无断点残留→直进开局→全新会话 ----
|
||||
check(not sm.has_breakpoint(), "V3 放弃终局清断点(无残留断点——续玩按钮态联动)")
|
||||
check(not sm.has_breakpoint(), "V3 放弃终局清断点(无残留断点)")
|
||||
main.debug_overlay.seed_edit.text = "43"
|
||||
main._start_adventure_from_menu()
|
||||
await process_frame
|
||||
@@ -362,6 +358,8 @@ func _stage_faces(main: Node, tag: String, adv: String, run: String, set: String
|
||||
func _face_liveness(name: String, v, want: String) -> String:
|
||||
if want == "null":
|
||||
return "" if v == null else " %s 应缺位(实测非空)" % name
|
||||
if want == "alive" and v == null:
|
||||
return " %s 应在座(实测 null)" % name
|
||||
if v != null and not is_instance_valid(v):
|
||||
return " %s 悬挂(失效对象)" % name
|
||||
return ""
|
||||
@@ -519,7 +517,7 @@ func _smoke_lifecycle_matrix() -> void:
|
||||
for i in range(6):
|
||||
await process_frame
|
||||
check(main.run_scope.adventure != null and main.run_scope.adventure != first_adv,
|
||||
"V3h 两连局第二会话全新对象(与第一局不复用)〔装配生命批 V3〕")
|
||||
"V3h 两连局第二会话在座(开局停点——新冒险会话非空)〔装配生命批 V3〕")
|
||||
await _stage_faces(main, "V3h 两连局·开局停点", "alive", "alive", "null", {"mf_start": false, "level_vis": true})
|
||||
check(main.run_scope.adventure.abandon(), "V3h 放弃受理(第二局)〔装配生命批 V3〕")
|
||||
for i in range(12):
|
||||
@@ -558,7 +556,4 @@ func _smoke_lifecycle_matrix() -> void:
|
||||
for p in ["user://smoke_lifecycle.json", "user://smoke_lifecycle.json.tmp",
|
||||
"user://smoke_lifecycle_resume.json", "user://smoke_lifecycle_resume.json.tmp"]:
|
||||
if FileAccess.file_exists(p):
|
||||
DirAccess.remove_absolute(p)
|
||||
|
||||
|
||||
# 引用面快照(五承载物的会话相关面+恒活面——逐个调用现值回调,与 run_scope 成员并采)
|
||||
DirAccess.remove_absolute(p)
|
||||
Reference in new issue
Block a user