合并(架构审查presentation层封装修复批·写卡·用户裁): 处置记录+需求卡片v1.1(设计闭合2026-11-04用户两裁:三内部数据类字段公开化+四族一批; 数字换代227→443行/14文件; B族设计规则六条+main.gd指标例外申报28-32; 五T卡4.125工作日; grilling复核六项折入+引擎三查零命中; 对照表R1-R7能力行在册; 零待裁点开工门U0)+待办条目推进(文档设计已闭合); 已并master(1224aed0含迭代51收口)解清; pipeline_gate PASS
ci / gates (push) Successful in 42s
ci / gates (push) Successful in 42s
This commit is contained in:
commit
7b5308c192
3 files changed
+351
-4
No files matched your search
@@ -0,0 +1,109 @@
|
||||
# 处置:presentation 层封装修复批(2026-11-04)
|
||||
|
||||
> **性质**:设计讨论段过程稿(裁决记录+取证事实)。**接收方**=reports/需求卡片-架构审查presentation层封装修复批-2026-11-04.md + 待办清单条目「架构审查余项——闸面缺口、豁免存废、零测试点名与架构文档漂移」。**寿命**:需求卡片成立即退役(吸收即死——结论吸收进卡片,未决迁待办清单)。
|
||||
> **输入**:reports/审计-全库架构审查-2026-10-29.md §5.1 扩面普查(presentation 层私取面,初读约 227 行)+ 2026-11-04 设计讨论会话用户逐项裁决 + 2026-11-04 会话逐文件取证(worktree archpres-card,基点 61995733,复核零漂移)。
|
||||
|
||||
## 一、总判据(用户 2026-11-04 裁,本批一切设计遵循)
|
||||
|
||||
1. **修复框架=每处先答「该不该访问」,再定公开形态**:访问该存在的,把被访问方需要暴露的东西做成正式公开面(表达操作或契约的公开方法/公开数据成员),访问方改走公开面;访问不该存在的,改设计(逻辑归位、依赖交付),禁把违规调法直接改名合法化。
|
||||
2. **三个内部数据类按登记表定位(改法A,用户裁)**:它们是只被宿主文件填读的登记表,字段转公开数据成员。
|
||||
3. **全部一批做完(方案一,用户裁)**:四族修法一张卡、一个实现批、一次合回。
|
||||
4. **零行为变更**:同 core 5.1 批口径——玩家可观测面逐位不变;职责归属零改动(代码位置不动,只改往来方式)。
|
||||
5. **修复依据**=code-conventions §1.6(拆分交接定义+封装边界:任何代码不得访问其他对象的下划线成员,跨对象往来只走公开方法与属性)。
|
||||
|
||||
## 二、数字换代(2026-11-04 实查,取代初读口径)
|
||||
|
||||
初读「约 227 行/8 文件」**作废**。现行口径=剔除注释行与 `self._` 后的码行计数:**443 行/14 文件**。取证 grep:`grep -rnE '\._[a-zA-Z]' game/presentation --include='*.gd'` 后剔除注释行与 `self._`;行号与逐行账以写卡段复核为准(5.1 卡同款义务)。
|
||||
|
||||
| 文件 | 码行 | 归族 |
|
||||
|---|---|---|
|
||||
| views/level_map_screen.gd | 88 | A1(87)+C(1,UiKit) |
|
||||
| main_ui_build.gd | 70 | B |
|
||||
| views/battle_end_overlay.gd | 69 | A1 |
|
||||
| views/standee_body.gd | 55 | A2 |
|
||||
| views/debug_overlay.gd | 50 | A1 |
|
||||
| main.gd | 45 | B |
|
||||
| main_adventure_flow.gd | 26 | B |
|
||||
| main_overlay_flow.gd | 15 | B |
|
||||
| main_debug_flow.gd | 11 | B |
|
||||
| views/board_view.gd | 7 | A2 |
|
||||
| views/settings_overlay.gd | 2 | C(UiKit) |
|
||||
| views/cell_mark_overlay.gd | 2 | C |
|
||||
| main_esc_flow.gd | 2 | B |
|
||||
| ui_assembler.gd | 1 | C(UiKit) |
|
||||
|
||||
四族合计:A1=206 行/42 字段;A2=62 行/16 字段+6 成员;B=169 行/80 名字;C=6 行/4 名字。
|
||||
|
||||
## 三、逐族裁决
|
||||
|
||||
### A1·三个内部数据类——字段公开化(用户裁改法A)
|
||||
|
||||
| 宿主文件 | 内部类 | 被宿主摸的字段(42 个,今日逐文件 grep 提取) |
|
||||
|---|---|---|
|
||||
| views/level_map_screen.gd:37 `_MapState` | 实例 `_map`(:59) | _abandon_timer _attr_value _bonus_row _bonus_value _canvas _drawn_disp _feat_value _gp_value _hp_bar _hp_value _layer_decor _level_label _runner _title |
|
||||
| views/battle_end_overlay.gd:15 `_EndOverlayState` | 实例 `st`(:32) | _board_rect _bonus_name _bonus_row_l _bonus_val _cele _crest_bricks _dim _fx_counts _ks_name _ks_row _ks_val _rows_box _seal _verdict |
|
||||
| views/debug_overlay.gd:16 `_DebugState` | 实例 `st`(:33) | _atk _atk_val _base_atk _base_hp _ctx_locked _db _eff _hp _hp_val _run_data _run_labels _sim_count _sim_out _sim_running |
|
||||
|
||||
裁决与依据:三个类只被宿主文件填读(全 presentation 域 grep `_MapState|_EndOverlayState|_DebugState|._map\.`,文件外消费者**零命中**,2026-11-04 实证),内容全是宿主的界面控件引用与运行数值,没有需要保护的处理规则——按改法A,42 个字段去下划线转公开数据成员,宿主 206 处访问点随改。字段公开后访问本就合法,**规约零改动**。内类自用、宿主不碰的字段维持下划线不动。附回归义务:三个类的「文件外零消费者」落成 sweep 断言。
|
||||
|
||||
### A2·拆件子件——构造交付+行为归位+读投影
|
||||
|
||||
**standee_body.gd → st(standee_vitals.gd 实例,9 字段)**,逐字段归属(2026-11-04 逐行判读):
|
||||
|
||||
| 字段 | 现役访问 | 归属 |
|
||||
|---|---|---|
|
||||
| _kind | :39 写(生成时);:265/:275/:300/:309/:365/:409 读 | 身份——构造期一次交付;读走公开读法 |
|
||||
| _display_name / _enemy_id / _armor / _hp_max | :82-85/:96 写(配置/重置时);:48/:53/:66-69/:340-342/:419/:465-482 读 | 同上——构造/配置公开口一次交付;读走公开读法 |
|
||||
| _order | :131 写;:410 读 | 同上 |
|
||||
| _dead | :173/:262 写(击杀/复活);:91/:98/:138/:171/:248/:277 读 | 生命周期行为——归位为子件公开方法(标记死亡/复位),宿主停写 |
|
||||
| _hp_cur | :419 读 | 子件自管(宿主零直写)——读走公开读法 |
|
||||
| _hp_flash_tw | :254-258 宿主自建 tween 改宿主自身 modulate | 归位为子件行为方法 `play_hp_flash()`——vitals 已自持 `_owner: Node2D` 与 tween 先例(apply_hp/_hp_tween 同型),句柄留 vitals,宿主成员零增 |
|
||||
|
||||
**standee_body.gd → mo(standee_motion.gd 实例,7 字段)**:_hero_state :40 写(生成时置 IDLE)→ 走既有公开方法 apply_hero_state(:300 在役先例);_intent_visible/_glyph/_col/_scale/_rot 写 :140/:145/:159-161/:181、读 :58/:431-458 → 意图显示是演出行为——归位为子件公开方法(显示/隐藏/复位),绘制所需状态经一个公开读取口交付(宿主 _draw 消费,:439-458 现役);_portrait_sprite :284/:431 读、生成期挂载 → 挂载走公开口,绘制读取走公开读法。
|
||||
|
||||
**board_view.gd → _hover_comp(board_hover.gd 实例,6 成员/7 行)**::249 每战重绑 `_minesweeper` → 公开重绑口(bind_save_manager 先例);:260 复位 `_hover`、:309 `_refresh_hover_after_paint()`、:464 `_hover_at`、:479 `_detect_chord`、:146 连接 `_on_shell_mouse_exited`、:828 读 `_hover` → 各自公开化(悬停操作本来就是该件对外职责,公开化=给应有的身份)。
|
||||
|
||||
### B·组合根与五个分文件——正式交接面(169 行/80 名)
|
||||
|
||||
**结构判定(2026-11-04 实查)**:main 与五个分文件(main_ui_build/main_adventure_flow/main_overlay_flow/main_debug_flow/main_esc_flow——main 拆出的分步执行件,main 侧留同名单行转发)之间是**成对的单行转发**关系:分文件把信号接到 main 的 `_on_xxx` 处理器,main 里该处理器一行转调分文件同名方法(例:main_adventure_flow.gd:12 `connect(root._on_adventure_finished)` ↔ main.gd:234 `MainAdventureFlow._on_adventure_finished(self, summary)`)。需求是真的(互相需要对方的服务),错在服务没有正式公开身份。
|
||||
|
||||
**设计规则(六条,全部落卡)**:
|
||||
|
||||
1. **分文件入口方法公开化**:main 转发调到的 `MainXxxFlow._方法` 去下划线公开化(45 行方向)。各分文件公开方法现值 0,公开化后 3–15 个,全部在默认阈值 ≤20 内。
|
||||
2. **main 的 on_* 处理器保持私有**(探针/测试按 main._on_* 名字引用 104 处,保名=测量面零波及);分文件接线语句里的 `connect(root._on_xxx)` 改收 **Callable 束**:main 调用分文件接线入口时以参数交付处理器束(键=用途名,值=main 自建 Callable——main 内自引合法),分文件 connect 语句消费束值。引用束注入先例=architecture.md:124 BoardInstaller、5.1 卡束形态。
|
||||
3. **main 的服务方法被分文件调的,去下划线公开化**(_refresh_presentations 11 次、_sync_status_entry 5 次、_fatal_screen 4 次、_quit_game 2 次、_begin_session 2 次、_start_debug_levels、_check_board_hints、_show_board_fx_for_node、_replay_locked_click、_sync_settlement_visuals、_wire_battle、_sync_debug_overlay、_open_settings、_open_save_select、_status_data、_gp_summary_text、_tune_sim 等)。
|
||||
4. **main 的句柄成员被分文件读写的,成员保持私有,补公开读投影/设置方法**(BreakpointStore 先例):_camp_pres(24 次)、_bonus(9 次)、_debug(6 次)、_confirm_consumer(4 次)+_confirm_consumer_slot、_treasure_ui(3 次)、_seed_value、_current_master_seed 等读写面逐名落卡。
|
||||
5. **探针/测试独占、互调不涉及的名字零触碰**(_is_settling 等)——测量面直构既有例外维持。
|
||||
6. **main.gd 指标例外申报**:公开方法现值 1,规则 3+4 落地后预计 25–30(T1 实数)——组合根服务面超默认阈值 ≤20,理由与先例=level_runner.gd(公开方法 33 在册基线);基线落法=实现批 `python tools/gdstyle_gate.py --refresh` 人工专用通道。
|
||||
|
||||
80 名完整清单=写卡段逐名 grep 实核落卡(本次会话已提取:main 侧被摸 60 名+分文件侧被摸 20 名,按上述规则 1–5 逐名归位)。
|
||||
|
||||
### C·杂项(6 行)
|
||||
|
||||
- **UiKit 三个私有工厂方法被跨文件调**:_gradient_base(level_map_screen.gd:69)、_beams_rect(ui_assembler.gd:106)、_switch_toggle(settings_overlay.gd:88/:105)→ 去下划线公开化(无状态工厂本来就是公用设施,公开化=给应有的身份)。
|
||||
- **cell_mark_overlay.gd:13-14 摸宿主 board_view 的 _glow_layer**:board_view 是贴顶件(基线在册 27 公开方法/31 成员,禁再增面)→ 走**构造交付**:board_view 建 cell_mark 时把标记遮罩下发口(引用或 Callable)一并交付,cell_mark 持自有引用,宿主零新增公开面。
|
||||
|
||||
## 四、S13 预算核查(触件现值与预期,2026-11-04 实测)
|
||||
|
||||
| 触件 | 公开方法现值 | 成员现值 | 本批预期 |
|
||||
|---|---|---|---|
|
||||
| main.gd | 1 | 15(默认顶) | 公开方法升 28–32(构成=既有 1+服务 17+句柄口 12)——**指标例外申报**(规则 B6);成员零增 |
|
||||
| 五分文件 | 各 0 | 各 0 | 公开方法 3–15,预算内 |
|
||||
| level_map_screen / battle_end_overlay / debug_overlay | 8/6/19 | 7/5/4 | A1 只改字段名,两键零变化 |
|
||||
| standee_body | 20(顶) | 10 | 公开方法与成员双零增(flash 行为归位 vitals 自持) |
|
||||
| standee_vitals / standee_motion | 1/6 | 12/11 | 行为归位+读投影公开方法净增(各 ≤20 内);成员零增 |
|
||||
| board_view | 27(基线在册) | 31(基线在册) | **零净增**(C 族走构造交付;A2 走 board_hover 公开面) |
|
||||
| board_hover | 0 | 9 | 公开方法 +6,预算内 |
|
||||
| ui_kit / cell_mark_overlay | 0/5 | 0/13 | ui_kit +3;cell_mark 成员 +1(构造交付的引用),预算内 |
|
||||
|
||||
基线在册 5 键(tools/gdstyle_baseline.txt)中 board_view 两键与本批相关:达成「只降不升」=board_view 零新增面;main.gd 例外键经申报落基线。
|
||||
|
||||
## 五、探针与测试连带面(2026-11-04 实测)
|
||||
|
||||
`grep -rE 'main\._[a-zA-Z]' game/probe game/tests`=**104 处引用/36 个名字/14 个文件**(ui_probe、system_test.gd、ui_input_probe、shot_probe、layout_probe、ui_tune_probe、ui_struct_probe、screen_flow_probe、t17_defer_probe、ui_click_probe、fx_shot_probe、probe_ui_util、unit/presentation/pacing_queue_test、unit/core/breakpoint_resume_test)。设计规则 B2 保 on_* 处理器名不变 → 连带替换面收敛为「探针引用名字 ∩ 公开化名字」的交集(预计 10–20 处,T1 落精确底账);替换属「随被测改动同步的引用形态迁移」,按测试削弱申报登记,断言内容零改动。
|
||||
|
||||
## 六、验证框架
|
||||
|
||||
- **结构性主证**:presentation 私取 sweep 测试(新增,1 件)——四族逐组「扫描面非空前置+私取模式零命中+新公开面正锚」,手法沿 5.1 卡 encapsulation_sweep_test(复用源 token 扫描手法不并件,同 5.1 卡 :257 论证)。
|
||||
- **零行为变更证明**:探针套件与渲染 golden 全程零转红(呈现面逐位同)+冒烟/单元既有套件零转红+探针/测试替换后当轮真实跑绿。
|
||||
- **能力清单**:本批零新增能力(零行为变更,玩家可观测能力面零变化),能力行全部「既有」,`game/tests/README.md` 零编辑。
|
||||
@@ -0,0 +1,240 @@
|
||||
# 需求卡片:架构审查 presentation 层封装修复批(2026-11-04)
|
||||
|
||||
来源:待办清单「架构审查余项——闸面缺口、豁免存废、零测试点名与架构文档漂移」条目 presentation 层私取面部分(**唯一事实源**:reports/处置-presentation层封装修复-2026-11-04.md——处置记录与本卡并行成文,本卡开工时 T1 首步核其已落盘且与本卡第 3 节逐条一致,冲突即 L3 停卡。设计闭合凭据=2026-11-04 设计讨论会话用户逐项裁决〔改法A=三个内部数据类字段公开化;方案一=四族一批做完〕+审计报告 presentation 普查+code-conventions §1.6)。验收档:**中**(零行为变更批——做错的后果玩家可见但不损持久状态:存档/RNG/结算/数值零触碰)。状态:已写卡(v1.1,2026-11-04 grilling 复核折入——T2/T5 时序修正+main.gd 例外区间实数化+flash 归位形态修正+T3 签名定稿+削弱申报追加)。改动面:游戏代码(含随逻辑改的测试代码)。
|
||||
|
||||
## 1. 目标与完成定义
|
||||
|
||||
**这批做什么**:把 presentation 层 14 文件 443 行跨对象下划线私取按四族修法全部落码——封装收口、零行为变更:
|
||||
|
||||
| 族 | 处置对象 | 现状 | 终态 |
|
||||
|---|---|---|---|
|
||||
| A1 | 三个内部数据类(level_map_screen `_MapState`/battle_end_overlay `_EndOverlayState`/debug_overlay `_DebugState`) | 宿主直读写内类私有字段 206 行/42 字段 | 42 字段去下划线转公开数据成员,宿主访问点随改;文件外零消费者落 sweep 断言 |
|
||||
| A2 | 拆件子件(standee_vitals/standee_motion/board_hover)及其宿主(standee_body/board_view) | 宿主直读写子件私有成员 62 行 | 身份数据构造/配置期一次交付;行为归位子件公开方法;读走公开读法;board_hover 6 成员公开化 |
|
||||
| B | 组合根 main ↔ 五个分文件 | 双向私取 169 行/80 名字(成对单行转发梯) | 分文件入口公开化;接线改收 Callable 束;main 服务方法公开化+句柄读投影/设置口;main on_* 处理器保私有(探针零波及);main.gd 指标例外申报 |
|
||||
| C | UiKit 私有工厂被外调;cell_mark_overlay 摸宿主 _glow_layer | 6 行 | UiKit 三方法公开化;cell_mark 走构造交付(board_view 零净增) |
|
||||
|
||||
**什么状态算完**:四族每处改动落码、都有第 8 节对照表配对的验收断言当轮真实跑批通过;结构性证据=presentation 私取 sweep 恒零(扫描面非空前置+新公开面正锚);零行为变更证据=探针套件与渲染 golden 全程零转红+冒烟/单元既有套件零转红+探针/测试替换后当轮真实跑绿;代码域闸全绿(冒烟+单元+探针+渲染/静态);两份 reports/ 产出物(实现报告+反哺点清单)写齐。
|
||||
|
||||
## 2. 设计事实源
|
||||
|
||||
- **处置记录(输入合同,逐条一致)**:`reports/处置-presentation层封装修复-2026-11-04.md`——四族裁决、字段/名字清单、设计规则六条、S13 预算核查、探针连带面。本卡第 3 节现状与第 7 节落法是其机械承载;T1 复核两件一致(冲突=上游缺陷,L3 停卡)。
|
||||
- **审计背景**:`reports/审计-全库架构审查-2026-10-29.md` §5.1 扩面普查(presentation 私取面;行号已换代,以本卡第 3 节实查为准)。
|
||||
- **法律**:`design/engineering/code-conventions.md` §1.6(拆分交接定义+封装边界——本批修复依据)。
|
||||
- **架构锚点**:`design/engineering/architecture/architecture.md` 呈现层节(:167 起——main 组合根、五分文件、ui_registry、views 各行);:124(BoardInstaller 引用束注入先例——B 族 Callable 接线束依据)。
|
||||
|
||||
## 3. 现状事实(2026-11-04 worktree archpres-card 实查,基点 61995733,开工自行复核)
|
||||
|
||||
### 3.1 私取面盘点
|
||||
|
||||
口径=`grep -rnE '\._[a-zA-Z]' game/presentation --include='*.gd'` 剔除注释行与 `self._`:**443 行/14 文件**(T1 以同 grep 重跑落底账)。逐文件行数与归族、A1 三类 42 字段名单、A2 逐字段归属、B 族 80 名处置规则、C 族 4 名——**全部以处置记录第二、三节为准**(逐条一致义务,本节不复制)。关键锚点:
|
||||
|
||||
- A1:level_map_screen.gd:37(内类)/ :59(实例)/ :100(`_map._level_label = …` 形态样例);battle_end_overlay.gd:15/:32;debug_overlay.gd:16/:33。
|
||||
- A2:standee_body.gd:39-40(生成期直写)/ :82-85(配置直写)/ :173/:262(_dead 直写)/ :254-258(_hp_flash_tw 宿主 tween 误放子件)/ :419(_hp_cur 只读);board_view.gd:146/:249/:260/:309/:464/:479/:828(hover 六成员)。
|
||||
- B:main_adventure_flow.gd:12(`connect(root._on_adventure_finished)`)↔ main.gd:234(一行转发 `MainAdventureFlow._on_adventure_finished(self, summary)`)——成对转发梯样例;main_ui_build.gd:64(`root._treasure_ui = …` 直写句柄);main.gd:180-495(45 行转发面)。
|
||||
- C:level_map_screen.gd:69+ui_assembler.gd:106+settings_overlay.gd:88/:105(UiKit 私有工厂);cell_mark_overlay.gd:13-14(`_owner._glow_layer`)。
|
||||
|
||||
### 3.2 写 T 卡依据的其他现状
|
||||
|
||||
- **S13 现值(2026-11-04 实测)**:main.gd 公开方法 1/成员 15(默认顶);五分文件公开 0;standee_body 公开 20(顶)/成员 10;board_view 公开 27/成员 31(两键在册基线,**贴顶禁再增**);standee_vitals 1/12;standee_motion 6/11;board_hover 0/9;ui_kit 0/0;cell_mark_overlay 5/13;三 A1 宿主 8-7/6-5/19-4。基线在册 5 键见 tools/gdstyle_baseline.txt。
|
||||
- **探针/测试连带**:`main._` 引用 104 处/36 名/14 文件(ui_probe、system_test.gd、ui_input_probe、shot_probe、layout_probe、ui_tune_probe、ui_struct_probe、screen_flow_probe、t17_defer_probe、ui_click_probe、fx_shot_probe、probe_ui_util、unit/presentation/pacing_queue_test、unit/core/breakpoint_resume_test)。规则 B2 保 on_* 处理器名 → 替换面=「引用名字 ∩ 公开化名字」,T1 落精确清单。
|
||||
- **mo 既有公开方法先例**:standee_body.gd:300 `mo.apply_hero_state(state, …)` 在役——A2 归位沿同型。
|
||||
|
||||
## 4. 设计契约(违反即返工红线)
|
||||
|
||||
- 🔴 **逐条一致**:本卡与处置记录逐条一致;冲突=上游缺陷停卡退写卡段(L3)。
|
||||
- 🔴 **零行为变更**:呈现逐位同(渲染 golden 零转红)、RNG 消费序零触碰、数值表零触碰、信号顺序逐位同;玩家可观测面零变化。
|
||||
- 🔴 **公开形态三规则**(用户的「先判该不该、再定形态」框架落法):①公开**数据成员**仅限 A1 三类 42 名(登记表定位);②A2 子件字段保持私有,一律走构造/配置交付、行为方法、读投影;③main 句柄成员保持私有,走读投影/设置方法对——**任何族禁「顺手把字段改公开」替代设计**。
|
||||
- 🔴 **main on_* 处理器保私有**:探针/测试 104 处引用面零改名;分文件经 Callable 束取得处理器。
|
||||
- 🔴 **禁留壳**:去下划线公开化后禁留旧私有名别名/转发壳;main 侧既有单行转发层**保留**(非新增——探针 main.X 路径契约承载,反哺点登记进架构)。
|
||||
- 🔴 **贴顶件零净增**:board_view(27/31 基线在册)公开方法与成员零净增;standee_body 公开方法零增(成员 10→11 仅 _hp_flash_tw 归位);main.gd 成员零增。
|
||||
- 🔴 **S13/S9**:全部新增公开方法签名注解完整(S9 R3);main.gd 例外键按第 14 节申报落基线,实现段禁自行豁免。
|
||||
- 🔴 **测试纪律**:禁变异类测试、禁撤销类取证;禁删断言/放宽阈值换绿(第 8 节申报清单之外零删改)。
|
||||
|
||||
## 5. 范围边界
|
||||
|
||||
**收件**=第 1 节表四族全部(含调用点改址、探针/测试交集名字替换、新增 sweep 测试件、main.gd 例外键落基线)。
|
||||
|
||||
**不收件**(去向已指认):
|
||||
- core 层五处封装修复——reports/需求卡片-架构审查5.1封装修复批-2026-11-03.md(另批,文件面零交叠无避让义务)。
|
||||
- 探针/测试的测量面直构惯例与受控例外——零清扫(仅「引用名字 ∩ 公开化名字」交集随批替换)。
|
||||
- 架构结构零改动:组合根与五分文件的职责划分、信号接线所有权(连接语句留在分文件)、三数据类的内类形态全部不动;ui_registry/ModalFlow 零触碰。
|
||||
- 闸件(static_scan.sh 等)零改动;MC/模拟零跑(无数值改动);`game/tests/README.md` 零编辑(零行为变更=能力清单零新增)。
|
||||
|
||||
## 6. 关联文档同步面
|
||||
|
||||
实现批禁写 `design/` 整个目录与根规则文件;下表每条落文义务进 `reports/iter<N>-反哺点-<日期>.md`,由用户裁决后归文档批落文:
|
||||
|
||||
| 文档 | 关联点(本批实现会改变它的哪条陈述) | 同步义务(反哺点清单逐条承载) |
|
||||
|---|---|---|
|
||||
| design/engineering/architecture/architecture.md | 呈现层节:main 组合根行+公开服务/句柄面新增登记;五分文件行+公开入口面;level_map_screen/battle_end_overlay/debug_overlay 行+内部数据类定位句(字段公开的登记表);ui_kit 行+三工厂公开化;standee_vitals/standee_motion/board_hover 行+新公开面 | 反哺点清单逐条列行号与改后登记内容——**机械面文档禁直改** |
|
||||
| 术语表 | 无新术语(读投影/引用束/公开数据成员均仓库现行词) | 确认行「零新增术语」 |
|
||||
| game/tests/README.md | 零行为变更=能力清单零新增(判断依据见第 8 节) | 批末核对「表上名字与对照表引用一致」,零编辑 |
|
||||
|
||||
(机检口径:本表同步义务格无一条写「随批」。)
|
||||
|
||||
## 7. 任务卡 T1..T5
|
||||
|
||||
### 卡前·文件结构图
|
||||
|
||||
全部行为面=非行为改动(零行为变更批),行标【非行为】+对照表 R 行号;测试件为随逻辑改的测试代码。
|
||||
|
||||
```
|
||||
A1 三件
|
||||
game/presentation/views/level_map_screen.gd 【非行为 R1】_MapState 14 字段公开化+87 处改址+:69 UiKit 公开名+头注
|
||||
game/presentation/views/battle_end_overlay.gd 【非行为 R1】_EndOverlayState 14 字段公开化+69 处改址+头注
|
||||
game/presentation/views/debug_overlay.gd 【非行为 R1】_DebugState 14 字段公开化+50 处改址+头注
|
||||
A2 五件
|
||||
game/presentation/views/standee_vitals.gd 【非行为 R2】构造/配置交付口+死亡/复位行为方法+读投影(成员 12 零增)
|
||||
game/presentation/views/standee_motion.gd 【非行为 R2】意图显示/隐藏/复位行为方法+绘制状态读口+挂载口(成员 11 零增)
|
||||
game/presentation/views/standee_body.gd 【非行为 R2】55 处改址+头注(成员零增——flash 行为归位 vitals 自持 tween)
|
||||
game/presentation/views/board_hover.gd 【非行为 R2】+6 公开面(重绑口/复位/刷新/悬停/chord/连接目标/读口)
|
||||
game/presentation/views/board_view.gd 【非行为 R2】7 处改址(公开方法与成员零净增——贴顶件)
|
||||
B 七件
|
||||
game/presentation/main.gd 【非行为 R3】45 行转发改调公开入口+接线调用点交付 Callable 束+服务公开化+句柄读投影/设置口(例外键申报见第 14 节)
|
||||
game/presentation/main_ui_build.gd 【非行为 R3】70 处改址(服务/句柄走 main 公开口)
|
||||
game/presentation/main_adventure_flow.gd 【非行为 R3】入口公开化+29 处改址+接线语句消费 Callable 束
|
||||
game/presentation/main_overlay_flow.gd 【非行为 R3】入口公开化+15 处改址
|
||||
game/presentation/main_debug_flow.gd 【非行为 R3】入口公开化+11 处改址
|
||||
game/presentation/main_esc_flow.gd 【非行为 R3】入口公开化+2 处改址
|
||||
C 四件
|
||||
game/presentation/views/ui_kit.gd 【非行为 R4】_gradient_base/_beams_rect/_switch_toggle 公开化(体逐字)
|
||||
game/presentation/views/cell_mark_overlay.gd 【非行为 R4】构造收遮罩下发口(成员 13→14)+2 处改址
|
||||
game/presentation/ui_assembler.gd 【非行为 R4】1 处改址
|
||||
game/presentation/views/settings_overlay.gd 【非行为 R4】2 处改址
|
||||
测试件(随逻辑改)
|
||||
tests/unit/presentation/presentation_encapsulation_sweep_test.gd 【非行为 R1–R4·新增】四族结构性扫描(非空前置+零命中+正锚)
|
||||
game/probe 12 件+game/tests 2 件引用替换 【非行为 R3】main._ 交集名字随批替换(当轮真实跑绿)
|
||||
文档件
|
||||
game/tests/README.md 写卡段判断=零编辑(第 8 节判断依据)
|
||||
```
|
||||
|
||||
**T1 基线与底账**(估时 0.25 工作日;区间 0.25–0.5)
|
||||
取用:无。产出:四族 grep 底账+探针替换精确清单+S13 对账基线+零行为变更基线读数。
|
||||
|
||||
- [ ] 核对处置记录 `reports/处置-presentation层封装修复-2026-11-04.md` 已落盘且与本卡第 3 节逐条一致(冲突=L3 停卡)
|
||||
- [ ] grep 底账落实现报告(改前账,T5 sweep 的对照面):第 3.1 节同口径 grep 全量命中行清单(14 文件逐文件行号)
|
||||
- [ ] 探针/测试替换精确清单:`grep -rnE 'main\._[a-zA-Z]' game/probe game/tests` 104 处逐条标注「替换/保留」(判据=名字 ∈ 公开化名单),清单落实现报告
|
||||
- [ ] S13 对账基线:第 3.2 节 16 触件现场读数登记;main.gd 例外键实数(规则 3+4 名单逐一数出)核与第 14 节申报区间一致
|
||||
- [ ] 零行为变更基线:冒烟 `python tools/run_smoke.py` 全绿读数+渲染 golden 现值(改前即基线)落实现报告
|
||||
|
||||
**T2 A1 三类字段公开化**(估时 0.5 工作日;区间 0.25–0.75)
|
||||
取用:T1 底账。产出:A1 族 206 行清零。
|
||||
|
||||
- [ ] level_map_screen.gd:处置记录 §三 A1 表 14 字段去下划线(体零改动),87 处 `_map._x` → `_map.x`;头注补一句内部数据类定位(:69 UiKit 调用改址随 T5 同批生效)
|
||||
- [ ] battle_end_overlay.gd:同型 14 字段+69 处;debug_overlay.gd:同型 14 字段+50 处
|
||||
- [ ] sweep 测试件骨架与 A1 断言组先行落盘(presentation_encapsulation_sweep_test.gd:三文件非空+class 正锚+`_map\._|st\._` 模式零命中+公开字段正锚+`_MapState|_EndOverlayState|_DebugState` 文件外零消费者断言〔pres封装 V1〕)
|
||||
- [ ] 孤立验证:sweep A1 组+冒烟——出红只跑红件最小单元
|
||||
|
||||
**T3 A2 standee 与 board_hover**(估时 1.0 工作日;区间 0.75–1.5)
|
||||
取用:T1 底账、处置记录 §三 A2 逐字段归属表。产出:A2 族 62 行清零。
|
||||
|
||||
- [ ] standee_vitals.gd 公开面 14(既有 apply_hp+新增 13,成员 12 零增):`configure_identity(kind: String, display_name: String, enemy_id: String, armor: String)`、`set_max_hp(v: float)`、`set_order(i: int)`、`set_dead(v: bool)`、读投影 `is_dead()/kind()/armor()/display_name()/enemy_id()/order()/hp_cur()/hp_max()`——宿主 :39/:82-85/:96/:131/:173/:262 写点与 :48/:53/:66-69/:91/:98/:138/:171/:246-248/:277/:340-342/:419/:465-482 读点逐一对口
|
||||
- [ ] standee_motion.gd 公开面 14(既有 6+新增 8,成员 11 零增):`show_intent(glyph: String, col: Color)`、`hide_intent()`(:140/:145/:181 三处同型归位);绘制路径读投影逐个 getter `intent_visible()/intent_glyph()/intent_col()/intent_scale()/intent_rot()/portrait_sprite()`(_draw 每帧调用,免逐帧字典分配——性能预算依据);_hero_state 生成期走既有 apply_hero_state;非绘制路径沿用现役 state_probe() 字典形态
|
||||
- [ ] standee_body.gd:55 处改址(逐字段按归属表;flash_hit() 体改调 `st.play_hp_flash()`,tween 逻辑整体归位 vitals——宿主成员零增);头注「外部直访冻结成员」句按新面改写
|
||||
- [ ] board_hover.gd:+6 公开面(rebind(minesweeper)/reset()/refresh_after_paint()/hover_at(pos)/detect_chord(c)/on_shell_mouse_exited 更名公开化/hover_pos() 读口——七处消费逐一对口);board_view.gd 7 处改址
|
||||
- [ ] sweep A2 断言组(standee_body `\bst\._|\bmo\._` 零命中+board_view `_hover_comp\._` 零命中+新公开面正锚〔pres封装 V2〕)
|
||||
- [ ] 孤立验证:sweep A2 组+渲染 golden+战斗探针——出红只跑红件最小单元
|
||||
|
||||
**T4 B 族正式交接面**(估时 2.0 工作日;区间 1.5–2.5)
|
||||
取用:T1 探针替换清单、处置记录 §三 B 设计规则六条与 80 名清单。产出:B 族 169 行清零+探针替换跑绿。
|
||||
|
||||
- [ ] 五分文件入口公开化(main 转发调用的方法去下划线,名表=处置记录 80 名清单分文件侧;体逐字);main.gd 45 行转发改调公开入口
|
||||
- [ ] 接线语句改 Callable 束:五个接线入口签名各加 handlers 束参(键=用途名),main 调用点自建束传入(`"adventure_finished": _on_adventure_finished` 型,main 内自引);分文件 connect 语句消费束值——`root._on_xxx` 引用清零
|
||||
- [ ] main.gd 服务方法公开化(处置记录 §三 B 规则 3 名单,体逐字);句柄成员补公开读投影/设置方法对(规则 4 名单,方法体一行转发,成员零增)
|
||||
- [ ] 五分文件 124 处 root._ 改址(服务走公开方法、句柄走读投影/设置口、处理器经束)
|
||||
- [ ] 探针/测试替换:按 T1 精确清单逐条替换(引用形态迁移,断言内容零改动)
|
||||
- [ ] main.gd 例外键实数核 对与第 14 节申报一致;S13 键对账
|
||||
- [ ] sweep B 断言组(六文件 `root\._|main\._|MainOverlayFlow\._|MainAdventureFlow\._|MainDebugFlow\._|MainEscFlow\._` 零命中+新公开面正锚〔pres封装 V3〕)
|
||||
- [ ] 孤立验证:sweep B 组+探针替换件当轮真实跑+冒烟+系统测试——出红只跑红件最小单元
|
||||
|
||||
**T5 C 族+批收口**(估时 0.375 工作日;区间 0.25–0.5)
|
||||
取用:全部前卡。产出:C 族清零+结构性恒零证据+批收口两件。
|
||||
|
||||
- [ ] ui_kit.gd 三工厂公开化(体逐字);cell_mark_overlay 构造收遮罩下发口(board_view 构造点随改,board_view 面零净增)+2 处改址;ui_assembler/settings_overlay 改址;level_map_screen :69 `UiKit.gradient_base` 改址(与本步 ui_kit 公开化同批生效)
|
||||
- [ ] sweep C 断言组(ui_kit 私有工厂全库零外调+cell_mark `_owner\._` 零命中+正锚〔pres封装 V4〕);run_all.gd manifest 追加 1 行(sweep,expect 0)
|
||||
- [ ] 全量 sweep 复核+冒烟+渲染 golden+探针套件终读数(零行为变更证据链闭合)
|
||||
- [ ] **实现报告** `reports/iter<N>-实现报告-<日期>.md`:各卡状态+S13 键改前改后对账(T1 基线逐件核+main.gd 例外键落基线记录)+探针替换清单执行账+实现决定记录
|
||||
- [ ] **反哺点清单** `reports/iter<N>-反哺点-<日期>.md`:第 6 节同步面逐条落点(architecture.md 呈现层各行登记内容、术语确认行)
|
||||
- [ ] 批末核对:game/tests/README.md 零编辑核对;独立验收审计(第 8 节末)未过不合并;.uid 收口=`--editor --quit` 一次后确认新测试件 .uid 随批提交
|
||||
|
||||
### 估时汇总
|
||||
|
||||
T1 0.25|T2 0.5|T3 1.0|T4 2.0|T5 0.375。区间合计 3.5–5.25 工作日;**精确汇总 4.125 工作日**(切分预案:若 T4 超 2.5 工日,把 T5 切出为独立半日卡顺延,其余不动)。
|
||||
|
||||
## 8. 验证闸(改动—验收对照表)
|
||||
|
||||
测试方式两分法:下表全部走**调试接口验证**(sweep 源扫描+既有套件+探针真实跑);**正常流程体验验证**=零项(零行为变更批,实机观感逐位同改前)。判据绑被测改动特有的可观测提交面(源码私取模式零命中带非空前置与正锚/探针可见性与信号面零漂移)。
|
||||
|
||||
| 需求点 | 改动(文件:行为) | 验收测试(名称+落点+尾缀) | 层级 | 真实入口 | 判据绑定面 | 能力行 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| R1 A1·战末弹层 | battle_end_overlay 14 字段+69 处改址 | sweep A1 组〔pres封装 V1〕;冒烟+战末弹层既有探针回归 | 探针 | `BattleEndOverlay.open_victory()`(战末弹层真实开合链) | 私取模式零命中+公开字段正锚+文件外零消费者;弹层可见性与载荷零漂移 | 既有:站桩敌人呈现与结算演出落点 |
|
||||
| R2 A1·调试浮窗 | debug_overlay 14 字段+50 处改址 | sweep A1 组〔pres封装 V1〕;调参相关探针既有回归 | 探针 | `TuneSimController.run()`(调试浮窗批量模拟入口) | 同 R1 判据面;浮窗呈现与批量模拟读数零漂移 | 既有:调参测速批量模拟(逐帧步进与统计读数) |
|
||||
| R3 A1·关卡画面 | level_map_screen 14 字段+87 处改址 | sweep A1 组〔pres封装 V1〕;冒烟+选路集成既有回归 | 集成+探针 | 选路集成链(起关→选路→断点重生成)+冒烟全链 | 私取模式零命中+公开字段正锚;选路链零漂移 | 既有:起关/选路/断点重生成同图(集成) |
|
||||
| R4 A2·站桩三件 | standee 三件改址+_hp_flash_tw 归位 | sweep A2 组〔pres封装 V2〕;渲染 golden 逐像素零转红;站桩探针既有回归 | 探针+golden | `BattleStageView` 真实实例化(站桩渲染链) | 站桩呈现逐位同;子件私取模式零命中+新公开面正锚 | 既有:站桩敌人呈现与结算演出落点 |
|
||||
| R5 A2·悬停子件 | board_hover 六公开面+board_view 7 处改址 | sweep A2 组〔pres封装 V2〕;ui_input_probe 既有回归 | 探针 | `ui_input_probe` 合成鼠标事件→`BoardView._gui_input()` | 悬停三语义零漂移;子件私取零命中+六公开面正锚 | 既有:棋盘悬停反馈(三语义光标/目标格边框/路径预览点迹) |
|
||||
| R6 B·组合根交接面 | main+五分文件+探针/测试替换 | sweep B 组〔pres封装 V3〕;14 件替换后当轮真实跑绿;冒烟+系统测试 | 集成+探针 | `ui_click_probe` 大门两分支段(main 处理器→分文件→营地态全链)+探针套件其余件 | 六文件私取模式零命中+新公开面正锚;探针断言零删改引用改址后全绿 | 既有:营地大门两分支确认与断点续玩接线 |
|
||||
| R7 C·杂项公开面 | ui_kit 三工厂+level_map :69+cell_mark 构造交付+改址 | sweep C 组〔pres封装 V4〕;layout/shot 探针既有回归 | 单元+探针 | 界面装配真实链(ui_kit 工厂消费面) | 私有工厂零外调+cell_mark 私取零命中+呈现零漂移 | 既有:站桩呈现定值与素材绑定 |
|
||||
|
||||
**零行为改动面的证据义务**:本卡全部行为面为非行为改动(零行为变更批)——不设「行为改动」行;每行零变更证明=渲染 golden 零转红+探针套件零转红+冒烟/单元零转红+sweep 恒零。能力行全部「既有」、零新增——判断依据:玩家可观测能力面零变化,无新能力可登记,`game/tests/README.md` 零编辑(批末核对义务在 T5)。
|
||||
|
||||
**闸口径**:重闸=`tools/run_all_gates.sh` 按本批改动域选档(改动含 game/ 下非 .md 行为载体 → `--code`);所选域全绿才合并。卡内不写死闸件名单。回归措辞:里程碑卡(T 段)出口跑一次全套闸;卡内修复只做出红最小单元的最窄确认;新增测试先行孤立验证再并入全套。
|
||||
|
||||
**测试削弱申报**(允许改/删的旧断言全清单;未申报的删改由独立验收审计判红):
|
||||
1. 探针/测试 14 件中与公开化名字交集的 `main._x` 引用 → 改公开名(清单=T1 精确清单)——随被测改动同步的引用形态迁移,断言内容零改动,无一条删除断言或放宽阈值。
|
||||
|
||||
**测试削弱申报补充(v1.1)**:2. ui_struct_probe.gd:144-146 退出调用链源码串断言两处("MainEscFlow._on_quit(self)"→"MainEscFlow.on_quit(self)"、"root._quit_game()"→"root.quit_game()")——随公开化改址的引用形态迁移,断言意图(调用链完整)不变;同函数 :141 `get_method() == "_on_esc_quit"` 断言零改动(处理器保私有)。
|
||||
|
||||
**独立验收审计**:入口=批末 T5 后、合并前;报告=`reports/iter<N>-验收审计-<日期>.md`;由没参与实现的会话或子代理执行,核对:对照表逐行断言真实存在且当轮跑批通过、零行为变更证据链在案(golden/探针/冒烟改前改后零转红读数)、测试削弱申报 1 条之外零删改、第 13 节无效成员零残留、S13 键对账(含 main.gd 例外键申报一致)。未过不合并。
|
||||
|
||||
## 9. 异常分级
|
||||
|
||||
- **L1 自救**:改址遗漏一处编译级报错、字段名笔误、注释错字——就地改,记录进实现报告。
|
||||
- **L2 记录继续**:行号 ±5 行内漂移(grep 符号锚定位后继续);探针失败经排查属既有缺陷且与本批无因果——登记跳过并报用户。
|
||||
- **L3 停机写报告等用户**:①卡面与处置记录冲突、或处置记录未落盘/与本卡第 3 节不一致(上游缺陷,退写卡段);②零行为变更契约被破(golden/探针/套件任何非预期漂移=停卡,禁就地调和);③S13 预算互斥——任一触件实测键超第 14 节预期(含 main.gd 实数超申报区间、board_view/standee_body 贴顶件需增面)=上游缺陷停卡退写卡段,禁实现段自拆或砍面;④实现中发现处置记录 80 名清单之外的第 81 个私取名字或未登记消费面(语义不明,禁代裁);⑤机检键与卡片契约互斥=停卡呈报,不得自造第三条路。
|
||||
|
||||
## 10. 代拍板白名单
|
||||
|
||||
- 测试内部夹具命名与组织(sweep 正则具体写法、断言消息措辞——判据面不变,尾缀〔pres封装 Vn〕保留)。
|
||||
- 注释与头注改写措辞(模块介绍职责不变)。
|
||||
- A2 读投影/行为方法的命名风格(`xxx()` 读投影与 `apply_xxx` 动词族内一致化——签名面按第 7 节 T3 定死的职责句,不改归属)。
|
||||
- Callable 束的键名(用途名)与断言/报错文案。
|
||||
- 逐卡内「孤立验证→出红最小单元→并入全套」的执行顺序细节。
|
||||
超清单的决断记入实现报告「实现决定记录」节。
|
||||
|
||||
## 11. 待裁点
|
||||
|
||||
**零待裁点,开工门=U0**——四族修法、三个内部数据类定位(改法A)、一批做完(方案一)、B 族设计规则六条、main.gd 指标例外申报方向均已在 2026-11-04 设计讨论会话由用户裁决;字段/名字清单、方法签名、T 卡分解、验收断言由本卡写卡期实查定死(第 3/7 节)。本卡未新增任何备选案。
|
||||
|
||||
## 12. 落位与可复用性预检
|
||||
|
||||
**新增文件(1 件,测试件)**:
|
||||
- tests/unit/presentation/presentation_encapsulation_sweep_test.gd——为什么不能复用 core 的 encapsulation_sweep_test:四族结构性零命中是本批特有扫描面(A1 三类+A2 子件+B 六文件+C 杂项,与 5.1 卡的 core 七文件集完全不同面);player_copy_sweep_test 扫 presentation 文案面——**复用其源 token 扫描手法但不并件**(并件让两批扫描面与尾缀语义混乱——5.1 卡 :257 同款论证)。落点 tests/unit/presentation(被扫对象全在 presentation);grep 同名零命中。
|
||||
|
||||
**新增函数/成员(逐条唯一性核查义务,grep 同名全库实核)**:
|
||||
- A1:仅字段改名公开化,零新增函数/成员(grep 确认公开名与既有成员名无冲突)。
|
||||
- A2:standee_vitals/motion 新公开方法(构造交付口/行为方法/读投影)——grep 方法名全库零第二处;命名与既有动词族同型(apply_hero_state/mo 现役方法族先例);board_hover 六公开面 grep 唯一;`_hp_flash_tw` 归位 standee_body(成员迁移非新增语义)。
|
||||
- B:main.gd 服务公开化为既有方法去下划线(禁别名);句柄读投影/设置方法对命名 grep 零同名(BreakpointStore set_/get 同族先例);Callable 束键名 grep 零冲突。
|
||||
- C:ui_kit 三方法去下划线公开化(体逐字,禁留旧名);cell_mark 构造参数(成员 13→14)。
|
||||
|
||||
**复用既有(不新增)**:Callable 束交付形态=BoardInstaller/5.1 卡束先例;读投影形态=has_write_target/active_path 先例;句柄方法对=BreakpointStore 13 方法先例;源扫描测试=player_copy_sweep_test 手法;manifest 登记=run_all.gd 既有条目族。零新增生产文件(全部落既有件)。
|
||||
|
||||
**分层与交互面**:本批零跨层新增路径——presentation 内部往来改公开面,对 core/data 的调用面零触碰(settle_batch 等组合根写口现役形态不变);Core 零 UI 红线零触碰;数值单一事实源零触碰;RngService 红线零触碰(零新增随机源)。
|
||||
|
||||
## 13. 禁为机检文本保留无效成员
|
||||
|
||||
本卡为重构类卡,全卡适用(code-conventions §1.1 ⑤同款):禁止为迎合机检消息文本(含计数、sweep 正则、grep 面)保留或新增无效成员/别名/转发壳;A1 字段公开化后禁留私有旧名;B 族去下划线后禁留旧私有名;main 侧既有单行转发层为登记的探针契约承载(非无效成员,反哺点登记),除此之外禁新立转发层;sweep 正则与签名冲突时停卡呈报,不得自造第三条路。
|
||||
|
||||
## 14. 实现规范预算
|
||||
|
||||
新增 .gd 仅 1 个测试件(SceneTree 测试脚本,全类型标注、零公开生产面)。生产代码全落既有件,按「存量触面一查」对账(S13 默认阈值:公开方法 ≤20/类变量 ≤15/分支 ≤8/返回 ≤6):
|
||||
|
||||
- **指标例外申报(main.gd)**:键=`game/presentation/main.gd|quality/max-public-methods`,现值 1,预期 28–32(构成=既有 1+服务公开化 17+句柄读写口 12;T1 实数核);理由=组合根服务面(分文件消费的公开口集中于此),架构先例=level_runner.gd 公开方法 33 在册基线、adventure_runner.gd 类变量 23 在册基线;落法=实现批 `python tools/gdstyle_gate.py --refresh`(人工专用通道,随批重生成)。
|
||||
- **贴顶件约束**:board_view 27/31(基线在册)**零净增**(本批对 board_view 的全部动作=7 处改址+构造点传参);standee_body 公开方法 20 贴顶零增(成员零增——flash 归位 vitals 自持);debug_overlay 公开方法 19——A1 只改字段名不动方法,零变化。
|
||||
- **类变量净增件**:cell_mark_overlay 13→14(构造交付的遮罩口引用);其余触件零增(A1 改名不增数;vitals/motion 成员零增)。
|
||||
- **公开方法净增件**:五分文件 0→3–15;board_hover 0→6;standee_vitals 1→预算内、standee_motion 6→预算内(均 ≤20);ui_kit 0→3;main.gd 见例外申报。
|
||||
- **迁移函数对账**:本批公开化方法全部「体逐字去下划线」,无跨文件迁移体;唯一迁移=_hp_flash_tw 归位(standee_body 内自用逻辑随迁,非跨件函数迁移);若 T1 读数发现源函数 branches/returns 超默认登记值,随迁即拆函数(拆分不改语义,与第 13 节区分)。
|
||||
- **存量触面 S13 预期**:16 触件 S13 键较 T1 现场基线**只降不升**(board_view 两基线键持平为达标);降不达=检查是否夹带超预算面,L3 ③兜底。
|
||||
|
||||
## 15. 拆分边界纪律
|
||||
|
||||
见第 4 节红线(判据权威=code-conventions §1.1):本批**零新拆件**——全部落架构在册既有件(组合根 main、五分文件、三数据类、standee 三件、board_hover/board_view、ui_kit、cell_mark),只做往来形态换代。逐件职责语句不变:A1 三类=宿主画面文件的登记表(数据类定位,用户裁);A2 子件=各自职责域件(身份命值态/资产演出态/悬停呈现域件——architecture.md 在册),行为归位=误放宿主的操作回归所有者;B 族=组合根委托层公开契约化(接线所有权不动);C 族=公用设施身份归位。单一变化原因=封装边界(跨对象私取清零),非阈值驱动。禁凑计数袋。
|
||||
@@ -12,13 +12,11 @@
|
||||
|
||||
#### 架构审查余项——闸面缺口、豁免存废、零测试点名与架构文档漂移(2026-11-03 登记,来源=批次移交)
|
||||
|
||||
**实况**:2026-10-29 全库架构审计(reports/审计-全库架构审查-2026-10-29.md;3.1+3.2 已随迭代 50 合回,凭据 reports/处置-架构审查3.1+3.2整改-2026-11-02.md)的待裁余项,自同名讨论条目迁入。现状(2026-11-04 对账):①闸面缺口(扫描面不扩 sim/probe/tests,适用域落 code-conventions §4 第 13 条)②S13 豁免存废(豁免已清偿,基线 5 键,commit 9eedf896)③零测试点名(定性=无按文件登记惯例,承接面落 test-conventions §8.3「新增 core 件的覆盖登记义务」)三组已随 §4 批裁决并落地(2026-11-03 用户逐项点头,CI 66407117 green);④架构文档漂移三处已随 arch51-docs 批落文档合回;§5.1 封装修复已写卡(reports/需求卡片-架构审查5.1封装修复批-2026-11-03.md v1.1,5 张 T 卡 2.875 工作日,凭据含 reports/处置-架构审查5.1封装修复-2026-11-03.md,排序在 3.1+3.2 卡后);§5.3 已写卡(reports/需求卡片-架构审查P2代码面批-2026-11-03.md v1.1,0.25 工作日,排序在 5.1 卡后);EC8 热重载侧经用户裁撤卡(实装去向=用户另立条目)。
|
||||
|
||||
**缺口**:还差 presentation 层私取面(约 227 行)的设计讨论——本条最后余项;另 §5.1/§5.3 两卡待编迭代。
|
||||
**实况**:2026-10-29 全库架构审计(reports/审计-全库架构审查-2026-10-29.md)的待裁余项,自同名讨论条目迁入。现行:①闸面缺口(适用域落 code-conventions §4 第 13 条)②S13 豁免清偿(commit 9eedf896)③零测试点名(承接面落 test-conventions §8.3)三组随 §4 批落地(2026-11-03 用户裁决,CI 66407117 green);④架构文档漂移随 arch51-docs 批合回;§5.1 卡=reports/需求卡片-架构审查5.1封装修复批-2026-11-03.md v1.1(2.875 工作日);§5.3 卡=reports/需求卡片-架构审查P2代码面批-2026-11-03.md v1.1(0.25 工作日);EC8 热重载经用户裁撤卡(实装去向=另立条目);presentation 层私取面 2026-11-04 设计闭合并写卡(443 行/14 文件;用户两裁=三内部数据类字段公开化+四族一批)=reports/需求卡片-架构审查presentation层封装修复批-2026-11-04.md v1.0(4.125 工作日,凭据=reports/处置-presentation层封装修复-2026-11-04.md)。
|
||||
|
||||
**改动面**:文档+游戏代码+工具代码
|
||||
|
||||
**状态**:文档设计中+已写卡+已编迭代 51
|
||||
**状态**:文档设计已闭合+已写卡+已编迭代 51
|
||||
|
||||
#### 三关色相 × 五组微光互辨抽测——三关图类型色板终值冻结的前置抽测(2026-10-28 登记,来源=会话提及)
|
||||
|
||||
|
||||
Reference in new issue
Block a user