65 lines
4.1 KiB
YAML
65 lines
4.1 KiB
YAML
# 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 ⑦⑧ 为表不可变 + 单次加成的回归断言载体
|