# Architecture Registry — Dungeon Sweeper # 生成:2026-09-12(/architecture-decision solo 批:ADR-0001~0004;用户授权代决) # 规则:只增不改;立场变更 = 旧条目标 status: superseded_by + 新增条目(永改既有条目) # 设计层立场(状态归属/接口契约/锚验收)登记在 design/registry/entities.yaml——本文件只登记实现级架构立场 interfaces: - name: a2_event_surface adr: ADR-0001 signals: [cell_revealed, flag_judged, round_end_board] note: GDD 概念名 round_end 的 A2 实现实名 = round_end_board;A3 直发 = round_end_stopped(payload 同构) - name: b1_settlement_trigger adr: ADR-0001 contract: B1 订阅 A3 相位→Waiting 触发结算;只读 last_round_end + 相位观测量;不依赖事件到达序 - name: presentation_subscription_rule adr: ADR-0001 contract: 呈现层永不直接订阅 A2/A3——只订 B1 步骤流 / level_runner(切片缺陷②教训固化) api_decisions: - name: renderer adr: ADR-0002 decision: gl_compatibility(Forward+ 否决——D3D12 新驱动线降险;B5 出现 HDR 2D 需求时复议) - name: window_base adr: ADR-0002 decision: 1280×800 基座 + stretch canvas_items + aspect expand(全部键显式落盘,防引擎默认漂移) - name: autoload_set adr: ADR-0003 decision: 仅 {ConfigDB, RngService}(定名锁定);战斗编排器等核心类由组合根按局实例化,非 autoload - name: board_rendering adr: ADR-0003 decision: MVP 沿用切片 GridContainer + 逐格控件形态(探针耦合事实);_draw() 迁移 = D1 正式化候选工作项(含三探针改造 + push_input 端到端探针 + 命中测试自建) - name: cjk_font adr: ADR-0003 decision: CJK 字体随包发行并设 theme 默认字体(运行时默认字体无 CJK 字形)——D1 正式化硬性前置 + 导出 checklist 项 - name: test_carrier adr: ADR-0004 decision: 双载体(--headless --script 逻辑冒烟 + headless 场景探针)+ 静态扫描域 S1–S8 + CI 外部 wall-clock 超时;gdUnit4 deferred(D2 OQ1 关闭形态) - name: save_contract adr: ADR-0005 decision: SCHEMA_VERSION 比较逻辑归 D3(存档版本 > 当前 = 拒读);RNG 快照 = master_seed + 各流 scope 计数器 + 意图/窗口选择序列,切出须在 scope 事件边界外(无在飞 open_stream 实例——B1 编排保证) forbidden_patterns: - pattern: autoload_global_event_bus adr: ADR-0001 detail: 否决中心事件总线——组合根直连 signal 接线 - pattern: lambda_capture_self_cross_lifetime adr: ADR-0001 detail: core↔core 信号连接只许方法 Callable;发射者禁持有订阅者反向引用(防循环引用/生命周期延长) - pattern: bare_autoload_global_identifier_in_core adr: ADR-0004 detail: core/ 禁裸引用 ConfigDB/RngService 全局标识符(--script 模式不注册——parse error;构造注入 only) - pattern: global_rand_functions_in_gameplay adr: ADR-0004 detail: randi()/randf()/randf_range() 与 randomize() 同禁(全局 RNG 绕开 RngService——D2 Rule 5 补全) - pattern: core_extends_control_or_tscn_preload adr: ADR-0004 detail: core/ 禁 extends Control/Node2D、禁 .tscn preload(D2 Rule 7) - pattern: second_caller_of_battle_domain_apis adr: ADR-0004 detail: B2/B3/B4 战斗域 API 唯一调用方 = B1;A2/B3/B4 零相互直调(静态扫描 S7——B1 AC-43) - name: hero_override_parameter_passing adr: ADR-0009(候选——切片机制正式化批) decision: 主角加成值经 encounter 显式参数传入(begin_battle 增 hero_atk/hero_max_hp 字段;B2.spawn 增 atk_override/max_hp_override 参数,-1 = 表值兜底)——db.hero 表值运行期只读(切片原表写通道 _apply_hero_override/runner 写表废除) note: 2026-09-13 E4 收口;接口漂移 = B2.spawn 签名 +2 参数、B1 encounter +2 字段(正式侧 B1/B2 GDD 修订随 ADR-0009 批);ui_tune_probe ⑦⑧ 为表不可变 + 单次加成的回归断言载体