merge(master): 并入 master 新进提交(变异测试全项目清除/测试规约重编号/撤销证明口径/golden 加严/S13 基线)——本批测试面按现行规约重读复核
This commit is contained in:
commit
353c1c6bb2
39 files changed
+142
-1268
No files matched your search
@@ -613,7 +613,7 @@ func breakpoint_snapshot() -> Dictionary:
|
||||
|
||||
# 旧隐式单档一次性迁移(Q1 甲,sv12):src 字节级原样搬运到 dst(零解析零改造——损坏/高版本
|
||||
# 旧档字节原样落槽 1,读取时由正式进档路径的兜底/拒读链接管,不静默丢数据);
|
||||
# dst 已存在不重迁(幂等判据——变异④锚点:去判据则重复迁移覆盖槽 1);迁移成功后 src 改名
|
||||
# dst 已存在不重迁(幂等判据——判别锚④:去判据则重复迁移覆盖槽 1);迁移成功后 src 改名
|
||||
# bak 留痕(不删——处置字节留痕,防再次隐式读写)。任一步失败:源保留原地,下次启动重试。
|
||||
# tmp+rename 原子形态与 write_to_disk 同纪律。生产调用=src/dst/bak 为 旧单档/槽 1/留痕名。
|
||||
func _migrate_legacy_save(src: String, dst: String, bak: String) -> void:
|
||||
|
||||
@@ -53,7 +53,8 @@ static func validate_graph(nodes: Array) -> Array:
|
||||
var well := _check_nodes_wellformed(nodes)
|
||||
if not (well["errs"] as Array).is_empty():
|
||||
return well["errs"]
|
||||
var by_id: Dictionary = well["by_id"]
|
||||
var by_id: Dictionary[int, Dictionary] = {}
|
||||
by_id.assign(well["by_id"])
|
||||
var edges := _check_edges(by_id, well["indeg"])
|
||||
if not (edges["errs"] as Array).is_empty():
|
||||
return edges["errs"]
|
||||
|
||||
@@ -69,9 +69,9 @@ func _check_one(label: String, main: Node) -> void:
|
||||
elif not vr.encloses(r):
|
||||
_problems.append("[%s] %s 越视口 %s ⊄ %s" % [label, key, r, vr])
|
||||
# 判据覆盖边界(如实记录,勿当已拦截):本探针按名点名三区做几何判定,
|
||||
# 不遍历战斗屏宿主的全部后代。变异验证第二发证——向装配器注入一个全幅 ColorRect
|
||||
# (挂在 battle_root 的内层根下)时探针仍全绿:「未登记兄弟控件」这一缺陷类不在本探针
|
||||
# 拦截面内。要拦它得改为递归遍历全子树找重叠,那是另一套判据(且极易误报容器父子关系),
|
||||
# 不遍历战斗屏宿主的全部后代——「未登记兄弟控件」(如向装配器塞一个挂在
|
||||
# battle_root 内层根下的全幅 ColorRect)这一缺陷类不在本探针拦截面内,探针对此仍全绿。
|
||||
# 要拦它得改为递归遍历全子树找重叠,那是另一套判据(且极易误报容器父子关系),
|
||||
# 本探针不设此判据。
|
||||
var bv: Control = main.board_view
|
||||
if bv == null:
|
||||
|
||||
@@ -444,7 +444,7 @@ func _save_select_contract(main: Node, tpl: String) -> void:
|
||||
if not has_keystone:
|
||||
problems.append("[savesel] 槽1 钥石徽读数缺失(应=钥石 555)〔sl2〕")
|
||||
# sl3 摘要禁项:断点/种子/「继续」/停点/「 关」(关数形——「通关」无空格不误伤)零命中
|
||||
#(裁决 4——零未完冒险读数;词形覆盖=对照表 sl3 变异「断点关数拼进槽卡」的拦截面)
|
||||
#(裁决 4——零未完冒险读数;词形覆盖=对照表 sl3 缺陷形态「断点关数拼进槽卡」的拦截面)
|
||||
for needle in ["断点", "种子", "继续", "停点", " 关"]:
|
||||
for t in all_texts:
|
||||
if t.contains(needle):
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
- **判有效**(changed 远低于 2% 阈值):基线**留在位并在此加注一次判定记录**,不得顺手重制;
|
||||
- **判失效**(changed 超阈值或换代面落在裁剪区外):按迭代 26 T6 先例**显式重制 + 呈报 + 复闸**,
|
||||
禁止先动后判、禁止用「重制一下就绿了」掩盖真实视觉回归。
|
||||
- **加严口径(棋盘三图)**:棋盘图 changed>0 且差异像素落在棋盘裁剪区内(900×760)一律按**判失效**
|
||||
处理——占比远低于 2% 阈值也不判有效,显式呈报后由用户定是否重制。该口径只收紧棋盘三图的判读,
|
||||
不改写 2% 容差本身的语义(`golden_compare.py` 判据不动);启动态菜单不适用本口径。
|
||||
|
||||
## 判定记录
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
# 战斗结算 fresh 池攻击链回归(Bug#2——池空时按掷点档位足额兑现)
|
||||
# 协议照单元侧惯例:extends SceneTree+Kit.check 主通道;--script 模式无 autoload,
|
||||
# ConfigDB 显式实例化构造注入(各套自建 RngService——源套掷点隔离形态,宿主不持统一流);
|
||||
# 表加载失败不中止(沿被迁断言面的源语义——诊断在此展开,表值变异的红由具体断言落,承 G2/G3 同款)。
|
||||
# 表加载失败不中止(沿被迁断言面的源语义——诊断在此展开,表值走偏的红由具体断言落,承 G2/G3 同款)。
|
||||
# 运行:godot --headless --path game --script res://tests/unit/battle_settlement/roll_multiplier_test.gd
|
||||
extends SceneTree
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
# 格面资源资格面(揭示事件 resource 标记 + 封锁格身份查询)
|
||||
# 协议照单元侧惯例:extends SceneTree+Kit.check 主通道;--script 模式无 autoload,
|
||||
# ConfigDB 显式实例化构造注入(各套自建 RngService——源套掷点隔离形态,宿主不持统一流);
|
||||
# 表加载失败不中止(沿被迁断言面的源语义——诊断在此展开,表值变异的红由具体断言落,承 G2/G3/G4 同款)。
|
||||
# 表加载失败不中止(沿被迁断言面的源语义——诊断在此展开,表值走偏的红由具体断言落,承 G2/G3/G4 同款)。
|
||||
# 运行:godot --headless --path game --script res://tests/unit/battle_settlement/seal_polarity_test.gd
|
||||
extends SceneTree
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
# 地图战斗资源·伤害量值区间(中点锚 / 域内 / 流动 / 定值不受扰)
|
||||
# 协议照单元侧惯例:extends SceneTree+Kit.check 主通道;--script 模式无 autoload,
|
||||
# ConfigDB/RngService 显式实例化构造注入(统一流 master 种子 42 沿源);
|
||||
# 表加载失败不中止(沿被迁断言面的源语义——诊断在此展开,表值变异的红由具体断言落,承 G2 同款)。
|
||||
# 表加载失败不中止(沿被迁断言面的源语义——诊断在此展开,表值走偏的红由具体断言落,承 G2 同款)。
|
||||
# 运行:godot --headless --path game --script res://tests/unit/core/board_gen_reward_test.gd
|
||||
extends SceneTree
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
# 天赋树六键行为(先手窗/危险直觉限次/守侧五场景/财富之道聚散)
|
||||
# 协议照单元侧惯例:extends SceneTree+Kit.check 主通道;--script 模式无 autoload,
|
||||
# ConfigDB 显式实例化构造注入;表加载失败不中止(沿被迁断言面的源语义——诊断在此展开,
|
||||
# 表值变异的红由具体断言落,承 G2/G3/G4/G5 同款);全局 class_name(Attunement/EffectEngine/
|
||||
# 表值走偏的红由具体断言落,承 G2/G3/G4/G5 同款);全局 class_name(Attunement/EffectEngine/
|
||||
# EffectContext)裸用(--script 模式全局类在册,G3 先例)。
|
||||
# 运行:godot --headless --path game --script res://tests/unit/core/meta_progression_forge_test.gd
|
||||
extends SceneTree
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# tests/unit/core/save_boot_no_activate_test.gd — 卡① sv2/sv3:启动态钉死类级契约
|
||||
# (无参实例=无激活态、内存=默认合法空态、无激活写盘一律拒绝并返回 false 且盘面零触碰
|
||||
# 〔含空路径派生的裸 ".tmp" 退化写目标——拆闸变异的可判别锚〕、MetaProgression.settle_adventure
|
||||
# 〔含空路径派生的裸 ".tmp" 退化写目标——拆闸缺陷的可判别锚〕、MetaProgression.settle_adventure
|
||||
# 生产链无激活触达写盘被拒、访问器 fail-safe 合法空值、越界槽号拒绝。
|
||||
# 真实 autoload boot 链断言在冒烟 V2-s1..s4 段——--script 模式无 autoload,本套件为类级
|
||||
# 白盒面+生产链对照,双落点在实现报告实际对照表对账。)
|
||||
@@ -38,7 +38,7 @@ func _test_no_arg_instance_has_no_activation() -> void:
|
||||
|
||||
# ② 无激活态写盘一律拒绝并返回 false,盘面零触碰(sv3 类级——真实入口=冒烟 V2-s3 生产链)
|
||||
# 判别锚:空 _path 的退化写目标=裸 ".tmp"(落 res://,拆闸实验实测杂散落点)——
|
||||
# 断言先清退化目标再核零新增,闸短路变异(拒绝口旁路、写盘真实发生)必红。
|
||||
# 断言先清退化目标再核零新增,闸短路缺陷(拒绝口旁路、写盘真实发生)必红。
|
||||
func _test_write_rejected_without_target() -> void:
|
||||
var sm := SaveManagerScript.new()
|
||||
var before := {}
|
||||
|
||||
@@ -388,7 +388,7 @@ func _smoke_save_slots() -> void:
|
||||
Kit.check("sv6 删槽 2 槽 1 字节不动(位间互隔离)〔卡① sv6〕",
|
||||
FileAccess.get_file_as_bytes(slot_tpl % 1) == slot1_before)
|
||||
|
||||
# ③ 新档原语(sv4):非白板旧内容覆盖为全零可玩白板(判别锚:新档禁读旧档——变异可红),
|
||||
# ③ 新档原语(sv4):非白板旧内容覆盖为全零可玩白板(判别锚:新档禁读旧档——判据撤除即红),
|
||||
# 创建即激活并落盘(生产路径只在空槽调用;本段预置旧内容是对原语白板保证的钉死,超生产面)
|
||||
var fold := FileAccess.open(slot_tpl % 3, FileAccess.WRITE)
|
||||
fold.store_string(JSON.stringify({"version": 7, "meta": {"keystone_balance": 999,
|
||||
|
||||
@@ -119,7 +119,7 @@ func _has_cat(errs: Array, cat: String) -> bool:
|
||||
return false
|
||||
|
||||
|
||||
# 多字段变异器(lambda 单表达式装不下的用例——命名函数承载)
|
||||
# 多字段改值器(lambda 单表达式装不下的用例——命名函数承载)
|
||||
func _mut_spear_initial(t) -> void:
|
||||
t.routes[1]["initial_owned"] = true
|
||||
t.routes[1]["prereq_route"] = ""
|
||||
|
||||
@@ -70,10 +70,10 @@ func _test_negative() -> void:
|
||||
_row(2, 9, 0.5, [0.5, 0.2, 0.15, 0.15], 2, 2, 6),
|
||||
_row(3, 13, 0.7, [0.55, 0.15, 0.15, 0.15], 2, 3, 8)]
|
||||
Kit.check("合法三行域校验零错误(夹具自证)〔fv2〕", _table(base).validate().is_empty())
|
||||
# ① L1 出口改 2 → 出口恒 1 断言红(变异步同款)
|
||||
# ① L1 出口改 2 → 出口恒 1 断言红(负样本夹具)
|
||||
var bad_l1_exit := [_row(1, 6, 0.3, [0.5, 0.2, 0.2, 0.1], 1, 2, 4), base[1], base[2]]
|
||||
Kit.check("L1 出口=2 被拒(出口 L1 恒 1 已锁)〔fv2〕", not _table(bad_l1_exit).validate().is_empty())
|
||||
# ② 配比合计 0.5 → 合计 1 断言红(变异步同款)
|
||||
# ② 配比合计 0.5 → 合计 1 断言红(负样本夹具)
|
||||
var bad_ratio := [_row(1, 6, 0.3, [0.2, 0.1, 0.1, 0.1], 1, 1, 4), base[1], base[2]]
|
||||
Kit.check("配比合计 0.5 被拒(四类合计 1 已锁)〔fv2〕", not _table(bad_ratio).validate().is_empty())
|
||||
# ③ 层深低于下限
|
||||
|
||||
Reference in new issue
Block a user