From 79c077eb9d81d4393ef525d2822cbd125bb13a79 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Sat, 7 Nov 2026 07:58:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9E=B6=E6=9E=84=E6=94=B6=E7=AA=84=E6=89=B9?= =?UTF-8?q?=E7=AC=AC4=E6=AD=A5(oracle=E9=87=8D=E9=94=9A):=2032=E5=A4=84=20?= =?UTF-8?q?architecture.md=20=E8=A1=8C=E5=8F=B7=E9=94=9A=E6=94=B9=E8=8A=82?= =?UTF-8?q?=E9=94=9A=E5=BD=A2=E6=80=81+2=E5=A4=84=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=A4=B4=E6=B3=A8=E5=8F=98=E6=9B=B4=E5=8F=99=E4=BA=8B=E5=B0=BE?= =?UTF-8?q?=E5=B7=B4=E5=88=A0=E9=99=A4=E3=80=82=E9=94=9A=E6=98=A0=E5=B0=84?= =?UTF-8?q?:=20:10=C3=973=E2=86=92test-conventions=E3=80=8C=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E5=B1=82=E4=B8=89=E5=85=83=E7=BB=84=E3=80=8D(?= =?UTF-8?q?=E5=88=A4=E6=8D=AEowner);=20:89=C3=974=E2=86=92=E3=80=8C?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=BD=92=E5=B1=9E=C2=B7=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E5=B1=82=E3=80=8Deffect=5Fengine=20=E8=A1=8C;=20:90=C3=976?= =?UTF-8?q?=E2=86=92RngService=20=E8=A1=8C;=20:103=E2=86=92minesweeper=5Fr?= =?UTF-8?q?ules=20=E8=A1=8C;=20:107=C3=978=E2=86=92CurioDeck=20=E8=A1=8C;?= =?UTF-8?q?=20:144=C3=978=E2=86=92=E3=80=8C=E6=A8=A1=E5=9D=97=E5=BD=92?= =?UTF-8?q?=E5=B1=9E=C2=B7=E5=8A=9F=E8=83=BD=E5=B1=82=E3=80=8Dbattle=5Forc?= =?UTF-8?q?hestrator=20=E8=A1=8C(=E5=9F=9F=E6=96=87=E4=BB=B6=E9=9B=86?= =?UTF-8?q?=E5=90=AB=20EffectPort);=20:168=C3=974=E2=86=92=E3=80=8C?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=BD=92=E5=B1=9E=C2=B7=E5=91=88=E7=8E=B0?= =?UTF-8?q?=E5=B1=82=E3=80=8DD1=20=E8=A1=8C(screen=5Fflow=5Fprobe=20?= =?UTF-8?q?=E4=B8=A4=E5=A4=84=E2=86=92=E3=80=8C=E5=91=88=E7=8E=B0=E5=B1=82?= =?UTF-8?q?=E8=A3=85=E9=85=8D=E4=B8=8E=E4=BC=9A=E8=AF=9D=E7=94=9F=E5=91=BD?= =?UTF-8?q?=E5=91=A8=E6=9C=9F=E3=80=8D=E8=8A=82);=20smoke=5Fboot=20?= =?UTF-8?q?=E7=BB=84=E5=90=8D=E6=97=A7=E5=8F=A3=E5=BE=84=E3=80=8C=E5=9B=9B?= =?UTF-8?q?=E7=BA=A7=E3=80=8D=E6=94=B9=E3=80=8C=E4=B8=89=E5=85=83=E7=BB=84?= =?UTF-8?q?=E3=80=8D=E3=80=82=E5=A4=B4=E6=B3=A8:=20battle=5Forchestrator?= =?UTF-8?q?=20=5Ffx=5Fhost/=5Freward=5Fgrant=20=E5=88=A0=E3=80=8C=E6=8B=86?= =?UTF-8?q?=E4=BB=B6=E5=AE=9A=E7=A8=BF=E8=BD=B4=E4=BB=B6=E4=B8=80/?= =?UTF-8?q?=E4=BA=8C=E3=80=8D=E5=B0=BE=E5=B7=B4,=20attune=5Floadout=20?= =?UTF-8?q?=E5=A4=B4=E6=B3=A8=E5=88=A0=E3=80=8C=E5=86=92=E9=99=A9=E5=9F=9F?= =?UTF-8?q?=E6=8B=86=E5=88=86=E5=A7=8A=E5=A6=B9=E6=89=B9=E8=BF=81=E7=A7=BB?= =?UTF-8?q?=E3=80=8D=E5=B0=BE=E5=B7=B4=E3=80=82=E5=87=AD=E6=8D=AE:=20?= =?UTF-8?q?=E5=86=92=E7=83=9F=20PASS(15=E6=A3=80=E6=9F=A50=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E4=B8=89=E9=97=B8=E5=85=A8=E8=BF=87)+=E5=8D=95?= =?UTF-8?q?=E5=85=83=E9=80=89=E8=B7=91=2013=E5=A5=97=E4=BB=B6=20all=20gree?= =?UTF-8?q?n(=E7=BA=AF=E6=B3=A8=E9=87=8A=E6=94=B9=E5=8A=A8,=20=E5=8F=97?= =?UTF-8?q?=E5=BD=B1=E5=93=8D=E9=9D=A2=E8=A6=86=E7=9B=96)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/core/attune_loadout.gd | 2 +- game/core/battle_orchestrator.gd | 4 ++-- game/probe/screen_flow_probe.gd | 4 ++-- game/probe/ui_struct_probe.gd | 2 +- game/probe/ui_tune_probe.gd | 2 +- game/tests/smoke_boot.gd | 6 +++--- game/tests/unit/battle_settlement/effect_port_test.gd | 8 ++++---- game/tests/unit/contracts/system_contracts_test.gd | 8 ++++---- game/tests/unit/core/battle_driver_drive_test.gd | 8 ++++---- game/tests/unit/core/curio_refresh_paid_test.gd | 2 +- game/tests/unit/core/effect_words_t1_test.gd | 2 +- game/tests/unit/core/level_shop_economy_test.gd | 2 +- game/tests/unit/core/minesweeper_rules_test.gd | 2 +- game/tests/unit/core/pool_case_d_test.gd | 10 +++++----- game/tests/unit/cross_system_flow_test.gd | 2 +- game/tests/unit/data_config/forge_table_test.gd | 2 +- game/tests/unit/data_config/rng_service_test.gd | 2 +- game/tests/unit/data_config/rng_stream_boot_test.gd | 2 +- 18 files changed, 35 insertions(+), 35 deletions(-) diff --git a/game/core/attune_loadout.gd b/game/core/attune_loadout.gd index 55fabc8e..385bc9b6 100644 --- a/game/core/attune_loadout.gd +++ b/game/core/attune_loadout.gd @@ -1,4 +1,4 @@ -## 同调配装件:装备中的秘宝件对象集唯一所有者(每件内含充能单位与重置周期——冒险域拆分姊妹批自共享充能账字典轨迁移)。 +## 同调配装件:装备中的秘宝件对象集唯一所有者(每件内含充能单位与重置周期)。 ## 同调充能单源化:物化行(treasure_inventory 内 source_class="attunement" 行)为使用面唯一事实源—— ## 剩余次数由行的未用数派生(唯一读法,无影子账);字典轨与三处事后差额对账退役,改「写时种行/补行」。 ## 种行/补行写时同步:冒险开始全量种行(不筛周期——battle/level 周期件开局即有行,C 区投影行数不变); diff --git a/game/core/battle_orchestrator.gd b/game/core/battle_orchestrator.gd index d30b320e..38194218 100644 --- a/game/core/battle_orchestrator.gd +++ b/game/core/battle_orchestrator.gd @@ -49,8 +49,8 @@ var _enemy_system: UnitContainer var _status_effects: StatusContainer var _reward_economy: RewardEconomy var _damage: DamageController # 伤害控制器(单据唯一兑付管线) -var _fx_host: BattleFxHost # 效果引擎宿主件(fx 族持有与兑付——拆件定稿轴件一) -var _reward_grant: RewardGrant # 奖励授予件(授予管线与秘宝使用——拆件定稿轴件二) +var _fx_host: BattleFxHost # 效果引擎宿主件(fx 族持有与兑付) +var _reward_grant: RewardGrant # 奖励授予件(授予管线与秘宝使用) var round_index := 0 var battle_result := "" # "" / "victory" / "defeat" / "fatal_error" diff --git a/game/probe/screen_flow_probe.gd b/game/probe/screen_flow_probe.gd index db6b9082..2aa7786c 100644 --- a/game/probe/screen_flow_probe.gd +++ b/game/probe/screen_flow_probe.gd @@ -76,14 +76,14 @@ func _seals_text(f: Dictionary) -> String: # ---- 流程状态位(与可见性是两回事,逐步单独判)---- func _expect_adventure_seal(step: String, expect: bool) -> void: - # oracle: design/engineering/architecture/architecture.md:168 (状态位判据组) + # oracle: design/engineering/architecture/architecture.md「呈现层装配与会话生命周期」 (状态位判据组) var got: bool = main.run_scope != null and main.run_scope.is_adventure if got != expect: _problems.append("%s:流程状态位 is_adventure 应为 %s,实测 %s" % [step, str(expect), str(got)]) func _expect_exclusive(step: String, expect: String) -> void: - # oracle: design/engineering/architecture/architecture.md:168 (屏级互斥组) + # oracle: design/engineering/architecture/architecture.md「呈现层装配与会话生命周期」 (屏级互斥组) var f: Dictionary = _screen_seals() var pairs := [["菜单", "营地"], ["菜单", "冒险"], ["营地", "冒险"], ["终局", "营地"], ["终局", "菜单"]] for pair in pairs: diff --git a/game/probe/ui_struct_probe.gd b/game/probe/ui_struct_probe.gd index 5c452c57..15ab29f0 100644 --- a/game/probe/ui_struct_probe.gd +++ b/game/probe/ui_struct_probe.gd @@ -743,7 +743,7 @@ func _in_scroll(c: Control) -> bool: func _audit(screen: String, roots: Array) -> void: - # oracle: design/engineering/architecture/architecture.md:168 组合根交接面与呈现装配——屏结构审计宿主面(结构审计组) + # oracle: design/engineering/architecture/architecture.md「模块归属·呈现层」D1 行(组合根交接面) 组合根交接面与呈现装配——屏结构审计宿主面(结构审计组) for r in roots: if r != null and is_instance_valid(r): _force_layout(r) diff --git a/game/probe/ui_tune_probe.gd b/game/probe/ui_tune_probe.gd index e7509d2d..8bd00160 100644 --- a/game/probe/ui_tune_probe.gd +++ b/game/probe/ui_tune_probe.gd @@ -199,7 +199,7 @@ func _ready() -> void: _overlay_zero_motion_contract(main, problems) # ⑩ 种子三分单点断言(18卡⑦ C1——判定只落 _seed_value() 单点;对局态不影响本判定面): # 显式合法整数全场景优先(含首局)→ 首局(存档布尔 false)恒 42 → 非首局空框引擎熵连抽不全等 42 - # oracle: design/engineering/architecture/architecture.md:168 seed_value=组合根公开服务面(⑩种子三分判定单点组) + # oracle: design/engineering/architecture/architecture.md「模块归属·呈现层」D1 行(组合根交接面) seed_value=组合根公开服务面(⑩种子三分判定单点组) main.ui.modals.menu.debug_overlay.seed_edit.text = "777" if main.seed_value() != 777: problems.append("显式种子输入未优先(_seed_value != 777——C1 ①失守)") diff --git a/game/tests/smoke_boot.gd b/game/tests/smoke_boot.gd index 40b4f767..f49d092f 100644 --- a/game/tests/smoke_boot.gd +++ b/game/tests/smoke_boot.gd @@ -16,7 +16,7 @@ var _checks: int = 0 func check(cond: bool, label: String) -> void: -# oracle: design/engineering/architecture/architecture.md:10 (测试层级四级——冒烟存活检查组) +# oracle: design/engineering/test-conventions.md「测试层三元组」冒烟测试行 (测试层三元组——冒烟存活检查组) _checks += 1 if cond: print(" [PASS] " + label) @@ -35,7 +35,7 @@ func _ready() -> void: # 开机前置面:autoload 注册与资源可加载(挂主屏之前先查,失败时主屏断言整段跳过) func _check_autoloads() -> void: -# oracle: design/engineering/architecture/architecture.md:10 (测试层级四级——冒烟存活检查组) +# oracle: design/engineering/test-conventions.md「测试层三元组」冒烟测试行 (测试层三元组——冒烟存活检查组) for autoload_name in ["ConfigDB", "RngService", "SaveManager", "MetaProgression"]: var node: Node = get_node_or_null(NodePath("/root/" + autoload_name)) check(node != null, "autoload %s 在位" % autoload_name) @@ -64,7 +64,7 @@ func _boot_main_scene() -> Node: # 主屏存活面:组合根装配句柄在位(main.X 一级句柄契约,探针挂载假设的启动侧证明) func _check_main_scene(main: Node) -> void: -# oracle: design/engineering/architecture/architecture.md:10 (测试层级四级——冒烟存活检查组) +# oracle: design/engineering/test-conventions.md「测试层三元组」冒烟测试行 (测试层三元组——冒烟存活检查组) check(main != null and main.is_inside_tree(), "主屏场景已实例化并在树") if main == null: return diff --git a/game/tests/unit/battle_settlement/effect_port_test.gd b/game/tests/unit/battle_settlement/effect_port_test.gd index 9394c55c..b7b2d31f 100644 --- a/game/tests/unit/battle_settlement/effect_port_test.gd +++ b/game/tests/unit/battle_settlement/effect_port_test.gd @@ -19,7 +19,7 @@ var _db func _init() -> void: -# oracle: design/engineering/architecture/architecture.md:144 (效果端口宿主——装载组) +# oracle: design/engineering/architecture/architecture.md「模块归属·功能层」battle_orchestrator 行(域文件集含 EffectPort) (效果端口宿主——装载组) _db = ConfigDBScript.new() var load_ok: bool = _db.load_tables("res://data/tables", true) Kit.check("前置:表加载零 error", load_ok and _db.diagnostics_count("error") == 0) @@ -54,7 +54,7 @@ func _hero_attack_value(rows: Array) -> int: # ---- V1 端口单实例与真实发射路由 ---- func _smoke_effect_port_wiring() -> void: -# oracle: design/engineering/architecture/architecture.md:144 (端口单实例与六 Callable 路由组) +# oracle: design/engineering/architecture/architecture.md「模块归属·功能层」battle_orchestrator 行(域文件集含 EffectPort) (端口单实例与六 Callable 路由组) print("--- 效果端口:装配链单实例+真实发射路由 ---") # 充能跑(蓄力周转 charge_rotation 在册——attack_commit 订阅行 attack_bonus per 蓄力周转计数器) var orch_c = _orch(TEST_SEED) @@ -88,7 +88,7 @@ func _smoke_effect_port_wiring() -> void: # ---- V2 业务类零引擎直连(源码契约锚——theme_projection_test 源码锚惯例)---- func _test_business_classes_engine_free() -> void: -# oracle: design/engineering/architecture/architecture.md:144 (业务类零引擎直连组) +# oracle: design/engineering/architecture/architecture.md「模块归属·功能层」battle_orchestrator 行(域文件集含 EffectPort) (业务类零引擎直连组) print("--- 效果端口:业务类零引擎直连源码锚 ---") for path in ["res://core/damage_controller.gd", "res://core/action_economy.gd"]: var src := FileAccess.get_file_as_string(path) @@ -100,7 +100,7 @@ func _test_business_classes_engine_free() -> void: # ---- V3 伤害域事实面闭集(合成行两对照——damage_taken 真实单据流)---- func _test_biz_fact_face_closed() -> void: -# oracle: design/engineering/architecture/architecture.md:144 (闭面四键 biz_fact 组) +# oracle: design/engineering/architecture/architecture.md「模块归属·功能层」battle_orchestrator 行(域文件集含 EffectPort) (闭面四键 biz_fact 组) print("--- 效果端口:业务发射事实面闭集 ---") var orch = _orch(TEST_SEED) Kit.check("V3 begin_battle 受理", orch.begin_battle(_enc([]))) diff --git a/game/tests/unit/contracts/system_contracts_test.gd b/game/tests/unit/contracts/system_contracts_test.gd index 2a499efc..c307aa66 100644 --- a/game/tests/unit/contracts/system_contracts_test.gd +++ b/game/tests/unit/contracts/system_contracts_test.gd @@ -41,8 +41,8 @@ func _init() -> void: # ---- B1 兑付配方词表:五配方/三目标规则/双结账政策——常量非空且互异(封闭枚举负空间) ---- func _test_damage_controller_vocabularies() -> void: -# oracle: design/engineering/architecture/architecture.md:89 (事件/事实/效果类型/算子四词表封闭——契约词表组) -# oracle: design/engineering/architecture/architecture.md:89 (事件/事实/效果类型/算子四词表封闭——契约词表组) +# oracle: design/engineering/architecture/architecture.md「模块归属·基础层」effect_engine 行 (事件/事实/效果类型/算子四词表封闭——契约词表组) +# oracle: design/engineering/architecture/architecture.md「模块归属·基础层」effect_engine 行 (事件/事实/效果类型/算子四词表封闭——契约词表组) var kinds: Array = [ DamageControllerScript.KIND_HERO_ATTACK, DamageControllerScript.KIND_ENEMY_SKILL, DamageControllerScript.KIND_BOARD_TYPED, DamageControllerScript.KIND_BOARD_BLAST, @@ -72,8 +72,8 @@ func _test_damage_controller_vocabularies() -> void: # ---- D2↔B1:掷点用途标签 ∈ RngService 封闭词表(EC12——跨系统字面量契约的成员性断言) ---- func _test_rng_tag_closure(db) -> void: -# oracle: design/engineering/architecture/architecture.md:90 (流 scope 封闭词表组) -# oracle: design/engineering/architecture/architecture.md:90 (流 scope 封闭词表组) +# oracle: design/engineering/architecture/architecture.md「模块归属·基础层」RngService 行 (流 scope 封闭词表组) +# oracle: design/engineering/architecture/architecture.md「模块归属·基础层」RngService 行 (流 scope 封闭词表组) var stream_label: String = String(db.combat.settlement.damage_roll.armor_roll_stream) Kit.check("settlement.armor_roll_stream ∈ RngService 封闭标签词表(EC12)", RngServiceScript.PURPOSE_TAGS.has(stream_label)) diff --git a/game/tests/unit/core/battle_driver_drive_test.gd b/game/tests/unit/core/battle_driver_drive_test.gd index 7df68bd3..35e0e68d 100644 --- a/game/tests/unit/core/battle_driver_drive_test.gd +++ b/game/tests/unit/core/battle_driver_drive_test.gd @@ -55,7 +55,7 @@ func _init() -> void: # ① 缺省两参(真编排器):同种子两跑整轮驱动逐位(确定性自证——动作序列快照经 cell_revealed 事件流) func _smoke_drive_round_contract() -> void: -# oracle: design/engineering/architecture/architecture.md:144 (效果端口件:收事件交结算取回命中批——驱动循环契约组) +# oracle: design/engineering/architecture/architecture.md「模块归属·功能层」battle_orchestrator 行(域文件集含 EffectPort) (效果端口件:收事件交结算取回命中批——驱动循环契约组) var db = load("res://core/config_db.gd").new() var load_ok: bool = db.load_tables("res://data/tables", true) and db.diagnostics_count("error") == 0 Kit.check("前置:表加载零 error", load_ok) @@ -81,7 +81,7 @@ func _smoke_drive_round_contract() -> void: # ② provider 形态:策略回调产出 dig/seal_place/refresh 各一——提交与日志回调四元组在案 func _provider_shapes() -> void: -# oracle: design/engineering/architecture/architecture.md:144 (端口应答束形状组) +# oracle: design/engineering/architecture/architecture.md「模块归属·功能层」battle_orchestrator 行(域文件集含 EffectPort) (端口应答束形状组) var st := _StubSettlement.new() var script := [ {"kind": "dig", "cell": Vector2i(1, 1)}, {"kind": "seal", "cell": Vector2i(2, 2)}, {"kind": "refresh"}, {"kind": "stop"} ] var logs: Array = [] @@ -102,7 +102,7 @@ func _provider_shapes() -> void: # ③ max_rejects:策略恒返被拒动作——第 3 拒后停手出环(循环次数=3) func _max_rejects() -> void: -# oracle: design/engineering/architecture/architecture.md:144 (拒绝通道组) +# oracle: design/engineering/architecture/architecture.md「模块归属·功能层」battle_orchestrator 行(域文件集含 EffectPort) (拒绝通道组) var st := _StubSettlement.new() st.minesweeper.accept = false st.minesweeper.reject_cells = {Vector2i(9, 9): true} @@ -122,7 +122,7 @@ func _max_rejects() -> void: # ④ 合步 next:move 后相位变更即断弃 dig(桩 on_submit 钩子把 phase 推离 Active) func _combined_step_next() -> void: -# oracle: design/engineering/architecture/architecture.md:144 (合并步进组) +# oracle: design/engineering/architecture/architecture.md「模块归属·功能层」battle_orchestrator 行(域文件集含 EffectPort) (合并步进组) var st := _StubSettlement.new() st.minesweeper.on_submit = func(action: String) -> void: if action == "move": diff --git a/game/tests/unit/core/curio_refresh_paid_test.gd b/game/tests/unit/core/curio_refresh_paid_test.gd index 6be57be7..dae7e8f3 100644 --- a/game/tests/unit/core/curio_refresh_paid_test.gd +++ b/game/tests/unit/core/curio_refresh_paid_test.gd @@ -8,7 +8,7 @@ const Kit := preload("res://tests/unit/test_kit.gd") func _init() -> void: -# oracle: design/engineering/architecture/architecture.md:107 (CurioDeck:三选一/商店共享池、抽签、cap 库存——刷新付费组) +# oracle: design/engineering/architecture/architecture.md「模块归属·核心层」CurioDeck 行 (CurioDeck:三选一/商店共享池、抽签、cap 库存——刷新付费组) var db = load("res://core/config_db.gd").new() if not db.load_tables("res://data/tables", false): print("[curio_refresh_paid_test] FAIL — 数值表加载失败") diff --git a/game/tests/unit/core/effect_words_t1_test.gd b/game/tests/unit/core/effect_words_t1_test.gd index c9902171..264ddac1 100644 --- a/game/tests/unit/core/effect_words_t1_test.gd +++ b/game/tests/unit/core/effect_words_t1_test.gd @@ -11,7 +11,7 @@ const EffectEngineScript = preload("res://core/effect_engine.gd") func _init() -> void: -# oracle: design/engineering/architecture/architecture.md:89 (效果词表封闭——扩签封闭性组) +# oracle: design/engineering/architecture/architecture.md「模块归属·基础层」effect_engine 行 (效果词表封闭——扩签封闭性组) # ① 词表在册断言(扩签面:2 事件+8 事实+7 效果类型+1 算子) Kit.check_quiet(EffectEngineScript.EVENTS.has("dig_stop") and EffectEngineScript.EVENTS.has("battle_won"), "新事件在册:dig_stop/battle_won〔专长批 V1〕") diff --git a/game/tests/unit/core/level_shop_economy_test.gd b/game/tests/unit/core/level_shop_economy_test.gd index ca61382d..4cb82397 100644 --- a/game/tests/unit/core/level_shop_economy_test.gd +++ b/game/tests/unit/core/level_shop_economy_test.gd @@ -1254,7 +1254,7 @@ func _paths_all_one_shop(nodes: Array) -> bool: # ---- ⑤ 商店共享池(三选一同构/乘法价/跨渠道共账/切边/断点扩键)---- func _smoke_shop_pool() -> void: -# oracle: design/engineering/architecture/architecture.md:107 (商店共享池组) +# oracle: design/engineering/architecture/architecture.md「模块归属·核心层」CurioDeck 行 (商店共享池组) print("--- 商店共享池(抽3买1全重抽 · 乘法定价 ceil · 池空硬闸 · 切边零入店)---") var autoplay = load("res://sim/level_autoplay.gd") var shelf_kinds: Array = [] diff --git a/game/tests/unit/core/minesweeper_rules_test.gd b/game/tests/unit/core/minesweeper_rules_test.gd index c6d52fd4..2e0abbd2 100644 --- a/game/tests/unit/core/minesweeper_rules_test.gd +++ b/game/tests/unit/core/minesweeper_rules_test.gd @@ -122,7 +122,7 @@ func _test_reject_out_of_catalog() -> void: # ---- V14 棋盘揭示预览只读口(架构整改——preview_reveal 与实挖揭示集同口径、零状态写入零事件)---- func _test_preview_reveal_readonly() -> void: -# oracle: design/engineering/architecture/architecture.md:103 (preview_reveal 只读预览口——零写入零事件组) +# oracle: design/engineering/architecture/architecture.md「模块归属·核心层」minesweeper_rules 行 (preview_reveal 只读预览口——零写入零事件组) var events := 0 _rules.cell_revealed.connect(func(_evt): events += 1) # 零发射哨兵(preview 全程不触发揭示事件) # 形态 A:封印在场——preview(未开格) 不越封印且零状态写入 diff --git a/game/tests/unit/core/pool_case_d_test.gd b/game/tests/unit/core/pool_case_d_test.gd index 96002e48..f6da6b97 100644 --- a/game/tests/unit/core/pool_case_d_test.gd +++ b/game/tests/unit/core/pool_case_d_test.gd @@ -9,7 +9,7 @@ const Kit := preload("res://tests/unit/test_kit.gd") func _init() -> void: -# oracle: design/engineering/architecture/architecture.md:107 (池结构案 D:候选抽取与池纪律组) +# oracle: design/engineering/architecture/architecture.md「模块归属·核心层」CurioDeck 行 (池结构案 D:候选抽取与池纪律组) var db = load("res://core/config_db.gd").new() if not db.load_tables("res://data/tables", false): print("[pool_case_d_test] FAIL — 数值表加载失败") @@ -66,7 +66,7 @@ func _tiers_of(cands: Array) -> Array: func check_v7(a, db) -> void: -# oracle: design/engineering/architecture/architecture.md:107 (池案 D V7 组) +# oracle: design/engineering/architecture/architecture.md「模块归属·核心层」CurioDeck 行 (池案 D V7 组) if not a.start_adventure(201): Kit.check_quiet(false, "V7 前置:冒险启动") return @@ -112,7 +112,7 @@ func check_v7(a, db) -> void: func check_v6(b, db) -> void: -# oracle: design/engineering/architecture/architecture.md:107 (池案 D V6 组) +# oracle: design/engineering/architecture/architecture.md「模块归属·核心层」CurioDeck 行 (池案 D V6 组) if not b.start_adventure(202): Kit.check_quiet(false, "V6 前置:冒险启动") return @@ -142,7 +142,7 @@ func check_v6(b, db) -> void: func check_v12(m, db) -> void: -# oracle: design/engineering/architecture/architecture.md:107 (池案 D V12 组) +# oracle: design/engineering/architecture/architecture.md「模块归属·核心层」CurioDeck 行 (池案 D V12 组) if not m.start_adventure(401): Kit.check_quiet(false, "V12 前置:冒险启动") return @@ -161,7 +161,7 @@ func check_v12(m, db) -> void: func check_v8(c, db) -> void: -# oracle: design/engineering/architecture/architecture.md:107 (池案 D V8 组) +# oracle: design/engineering/architecture/architecture.md「模块归属·核心层」CurioDeck 行 (池案 D V8 组) if not c.start_adventure(203): Kit.check_quiet(false, "V8 前置:冒险启动") return diff --git a/game/tests/unit/cross_system_flow_test.gd b/game/tests/unit/cross_system_flow_test.gd index 5c0e8610..cb84e014 100644 --- a/game/tests/unit/cross_system_flow_test.gd +++ b/game/tests/unit/cross_system_flow_test.gd @@ -47,7 +47,7 @@ func _fresh_rng(seed_val: int): # ---- ① RNG 事件日志会话落盘(源 `_initialize` :70,主会话裁决一改判跨系统闭环承载—— # 驱动沿源 :60–70 取号序列自持:master 种子 42 → 前置取号 → new_adventure 开日志会话 → 会话内取号)---- func _rng_event_log_session() -> void: -# oracle: design/engineering/architecture/architecture.md:90 (事件日志落盘会话组) +# oracle: design/engineering/architecture/architecture.md「模块归属·基础层」RngService 行 (事件日志落盘会话组) var rng = load("res://core/rng_service.gd").new() rng.set_master_seed(42) rng.open_stream("board_gen") diff --git a/game/tests/unit/data_config/forge_table_test.gd b/game/tests/unit/data_config/forge_table_test.gd index f4d4bc34..becda9cd 100644 --- a/game/tests/unit/data_config/forge_table_test.gd +++ b/game/tests/unit/data_config/forge_table_test.gd @@ -219,7 +219,7 @@ func _test_negative_cases() -> void: # 32→31:改写族清退批摘 spike(CI run 87 追绿——词表合法收窄的断言随动)。 func _test_effect_kinds_closed() -> void: -# oracle: design/engineering/architecture/architecture.md:89 事件/事实/效果类型/算子四词表封闭(特效闭集组) +# oracle: design/engineering/architecture/architecture.md「模块归属·基础层」effect_engine 行 事件/事实/效果类型/算子四词表封闭(特效闭集组) Kit.check("效果引擎效果类型闭集 31 种(甲案词表退役 overflow/attack_segments+改写族清退摘 spike)〔锻造工坊批 V11〕", EffectEngineScript.EFFECT_KINDS.size() == 31) Kit.check("效果引擎事件词表在册 21 种(charge_full 位摘名——蓄力层删键批)〔锻造工坊批 V11〕", diff --git a/game/tests/unit/data_config/rng_service_test.gd b/game/tests/unit/data_config/rng_service_test.gd index b2c31fd6..07aaf5c7 100644 --- a/game/tests/unit/data_config/rng_service_test.gd +++ b/game/tests/unit/data_config/rng_service_test.gd @@ -77,7 +77,7 @@ func _test_stream_draw_determinism() -> void: # 负输入 abs 归一化(警告通道)——|−s| 与 s 同派生 func _test_negative_seed_normalization() -> void: -# oracle: design/engineering/architecture/architecture.md:90 RngService:master_seed 与各流 scope 计数器单点(种子规约组) +# oracle: design/engineering/architecture/architecture.md「模块归属·基础层」RngService 行 RngService:master_seed 与各流 scope 计数器单点(种子规约组) var pos = _fresh_service() var neg = RngServiceScript.new() neg.set_master_seed(-TEST_SEED) diff --git a/game/tests/unit/data_config/rng_stream_boot_test.gd b/game/tests/unit/data_config/rng_stream_boot_test.gd index 179d5591..08a03abb 100644 --- a/game/tests/unit/data_config/rng_stream_boot_test.gd +++ b/game/tests/unit/data_config/rng_stream_boot_test.gd @@ -22,7 +22,7 @@ func _init() -> void: # 单元宿主改由 `_init` 显式调用,断言逐字未动;源 :70 事件日志落盘条经主会话裁决一 # 改判跨系统闭环套件——不随本宿主,见迁移账本转办清单)---- func _smoke_initialize() -> void: -# oracle: design/engineering/architecture/architecture.md:90 RngService autoload:open_stream 有状态门面与启动初始化(启动流组) +# oracle: design/engineering/architecture/architecture.md「模块归属·基础层」RngService 行 RngService autoload:open_stream 有状态门面与启动初始化(启动流组) print("=== Dungeon Sweeper 垂直切片冒烟 ===") var db = ConfigDBScript.new() var load_ok: bool = db.load_tables("res://data/tables", true)