chore(批后收尾): 迭代 27 产出物退役——实现报告与探针迁移对照按吸收即死删除(反哺点已落 architecture/code-conventions 2026-10-17 版、追认单十五项已追认、目检已登记 07 ㉖、观察义务已迁 06);roadmap 迭代 27 行实现报告列改退役保留字,reports/README 示例注记退役
This commit is contained in:
1 parent
c5200b6be9
commit
ed19453d25
4 files changed
+2
-126
No files matched your search
+1
-1
@@ -10,7 +10,7 @@
|
||||
| `iter<N>-实现报告-<日期>.md` | 各任务卡状态、实机目检总清单、遗留读数义务 | 迭代批 |
|
||||
| `iter<N>-代拍板-<日期>.md` | 批内 agent 替你拍的决定清单,等你追认或推翻 | 迭代批 |
|
||||
| `iter<N>-反哺点-<日期>.md` | 需要写进 `design/` 权威文档的点,逐条列清"哪个文件哪一节、改成什么、依据是什么" | 迭代批 |
|
||||
| `iter<N>-<交付物名>-<日期>.md` | 需求卡片点名的其它交付物(例:`iter27-探针迁移对照-2026-10-14.md`=11 个探针的成员依赖面清单) | 迭代批 |
|
||||
| `iter<N>-<交付物名>-<日期>.md` | 需求卡片点名的其它交付物(例:`iter27-探针迁移对照-2026-10-14.md`=11 个探针的成员依赖面清单,已随迭代 27 收尾退役) | 迭代批 |
|
||||
|
||||
## 不放什么
|
||||
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
# 迭代 27 实现报告——代码架构技术债修复批(五波全量入库)
|
||||
|
||||
- 日期:2026-10-14(单会话 /goal+iter U0 交付,worktree g-plan2-iter27-techdebt 分支 iter27-techdebt-20261014)
|
||||
- 需求卡片:已退役(git 历史可考)——原「代码架构技术债修复批」v1.2——三点待裁 2026-10-14 用户三裁全按推荐案:①SaveManager/MetaProgression=第三个 autoload/②Ledger=单类持四账/③_settle=审计五段)
|
||||
- 来源审计:代码架构与实现质量审计报告-2026-10-14(双席基线 97de02c;**本批收口时按退役规则 git rm——吸收即死,结论迁本报告与卡片**)
|
||||
- 核心验收(V1):**重构前后同种子完整局输出逐位一致**——parity_anchor 三变体(base/attune/shop)×40 局×RUNSUM+JSONL 剔 ts 双面哈希对拍,**五波出口五跑全同**(锚冻结于 T0,种子面 71000/72000/73000)
|
||||
|
||||
## 一、五波交付
|
||||
|
||||
### 波一 场景拆分+局生命周期物化(P0-1/P0-2,7a0d57d)
|
||||
|
||||
- 三屏壳场景 `presentation/scenes/`:menu_screen/camp_screen/adventure_screen(内含 level_map/battle 两容器)——视图代码原样构建(装配器/视图类零 .tscn 化,契约 2);组合根句柄全部保留(探针挂载假设 main.X 一级路径零迁移);树序=屏壳在前全模态之下(视觉共存对逐对验算:legend/battle、debug/level_screen、shop/level_screen 等全部保序)。
|
||||
- 会话物化 `run_scope.gd`:adventure/runner/settlement/局态旗/账本随会话节点承载;`_begin_session` 建会话(_ready 即建闲时态=永非 null)、终局整节点 queue_free()——`_reset_run_scope` 三项+`_on_battle_end_continue` 置空四件手工清单消亡。
|
||||
- SaveManager/MetaProgression 升格 autoload(裁点①甲;类名加 Core 后缀沿 RngService 先例);探针隔离改 attach_path 原地重置(set_master_seed 先例);**发现并修复**:屏壳根全屏 Control 默认 STOP 吃掉下层模态鼠标输入(ui_input 实证)——三屏壳根 mouse_filter=IGNORE+V2 回归闸。
|
||||
- V2 屏壳独立实例化 11 断言+V3 两连局复位 11 断言进 smoke。
|
||||
|
||||
### 波二 _settle 五段拆 Segment(P1-1,26301ba)
|
||||
|
||||
- `core/settlement/` 五段类:GrantSegment(授予段体+旗判随段迁入+counter_add 五位/grant_material 三位分支单点化)/AuraSegment/CombatSegment/DecaySegment/VerdictSegment(返回裁定,终局早退语义留宿主);编排器 1725→1325 行退为段序编排+行发射原语单点。
|
||||
- 姊妹病灶:`_resolve_hero_attack` 148 行拆四步(ctx 命中面→基值装配→掷点兑现→交付),ctx/redemption 字典穿线算序逐字保留。
|
||||
- V4 settle_segments_test 16 断言进 run_all。
|
||||
|
||||
### 波三 账本收口(P1-2/P1-3/P1-4,6fd7d78)
|
||||
|
||||
- `core/run_ledger.gd` RunLedger 单类持四账(裁点②甲):attune_charges/vision_counter/adventure_counters/bonus;战斗侧只拿 read/append 原语;AR 持账→LR set_run_ledger→enc 单键下传;编排器三裸引用成员退役;调试/单场缺省新账=零扰动面(vision_counter 缺省空=不计,原 enc 缺键守卫语义保留)。
|
||||
- 刷新双账:main 副本删除;presentation_snapshot 成文面升键 refresh_used(can_refresh 邻位)——HUD 余量/遥询单源读快照;V5 快照一致性断言×3。
|
||||
- GP 影子账:summary 增 gp_final 键(close_wallet 清账前快照);gp_shadow_ledger.gd 全件退役;终局面板 GP 行取数=summary 键;ui_probe 断言换代。
|
||||
|
||||
### 波四 组合根可测化+模态协议内聚(P1-5/P2-7,8b9e556)
|
||||
|
||||
- **重估结论(卡片 T4 前置义务)**:场景拆分落地后,模式状态机已随 RunScope 物化、屏构建已随屏壳迁出——抽取面收敛为**模态编排域**:`modal_flow.gd` ModalFlow 纯逻辑类(依赖仅 ModalStack+查询 Callable,审计处方形态)——开合编排(挂起兜底/排播排空/遮挡记账/开合同步)/输入锁谓词(三例外注入)/双形制角标谓词。
|
||||
- **V6 测试抓出并修正一处真分歧**:挂起兜底递归后误加 return(原 main 语义=先结挂起后继续开本层两拍都走)——单测缝的结构价值实证。
|
||||
- ModalStack 互斥域随层登记:register(m, tags)+TAG_NON_LOCKING/TAG_SCREEN_STATE 封闭词表+has_open_excluding_tags 组查询;原调用点排除式拼装(:404-409 输入锁等五处)退役;main._modals=flow.stack(ui_struct _list 断言缝保留)。
|
||||
- 控制器构造收拢 context:curio 16 参→CurioFlowContext/camp 13 参→CampFlowContext(字段逐一同名,控制器可独立实例化)。
|
||||
|
||||
### 波五 类型闸+卫生件(P1-6/P2 组,b605022+T6 笔)
|
||||
|
||||
- 类型闸:`tools/audit_type_hints.py` 机器闸(R1 无类型容器注解/R2 有值返回缺类型/R3 参数缺类型+行级白名单通道);368 处容器注解机械参数化(Array[Variant]/Dictionary[Variant, Variant] 零行为面)、13 处参数真类型;project.godot 拉起 untyped_declaration=1;static_scan 新 S9 规则。
|
||||
- 卫生件:死代码 13 函数删除(审计 16 处复核后其中 ui_kit:486 一处经实读为现役非死码,见追认单)+FeatsEngine 整文件退役;字符串 Callable×10 位换方法引用形态(编译期方法存在性校验);冒险状态机/standee 主角三态 enum 化(外部 String 契约逐位一致);ConfigDB `_fatal` 退出归根(核心层去 quit/crash,置 `_fatal_flag`,退出决策归组合根既有 fail-fast 通道)+resolver 诊断/数据通道全面 Callable 化(ConfigDb↔Resolver 类型环断根)。
|
||||
|
||||
## 二、闸记录(每波出口+批末)
|
||||
|
||||
| 闸 | 基线(T0 冻结) | 波一 | 波二 | 波三 | 波四 | 波五 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| 逐位一致对拍(V1 核心) | 锚冻结 | ✓ 全同 | ✓ 全同 | ✓ 全同 | ✓ 全同 | ✓ 全同 |
|
||||
| 冒烟 | 1055/0 | 1077/0 | 1077/0 | 1079/0 | 1079/0 | 1081/0 |
|
||||
| run_all | 25 套 | 25 | 26 | 26 | 27 | 27 |
|
||||
| probe_gate --click | 绿 | 绿 | 绿 | 绿 | 绿 | 绿 |
|
||||
| render_gate golden | 0.00% | 0.00% | 0.00% | 全绿 | 全绿 | 全绿 |
|
||||
| static_scan | (历史 cd 错位恒跳过) | — | — | — | — | S1/S2/S4/S9 全绿 |
|
||||
|
||||
批末(T6 后)run_all 27 套全绿+冒烟 1081/0+probe/render 全绿+对拍全同(T6 对拍见 /tmp/parity_check6.log 记录,exit 0)。
|
||||
|
||||
## 三、代拍板追认单(白名单九项执行实录+计划外决断)
|
||||
|
||||
> **追认结果(2026-10-17 用户令)**:以下十五项**全部同意,无修改意见**——第 1–9 项白名单执行实录、第 10–15 项计划外决断均认作本批既定做法。第 7 项附带的元素精化(`Array[Variant]`→具体元素型)仍是后续批的渐进面,不随本追认提前。第 15 项的取数面换代已生效。
|
||||
|
||||
1. **屏场景命名/落位**(白名单①):`presentation/scenes/{menu,camp,adventure}_screen.tscn`——三屏壳与卡片三屏一一对应。
|
||||
2. **屏壳内部分层**(白名单②):adventure 屏壳内 battle_root+level_screen 平级(无同时可见态,层内先后零视觉差)。
|
||||
3. **Segment 五类命名/落位**(白名单③):`core/settlement/{grant,aura,combat,decay,verdict}_segment.gd`,类名 XxxSegment。
|
||||
4. **Ledger 命名/原语形状**(白名单④):`core/run_ledger.gd` RunLedger;原语=attune_charge_has/set/consume、vision_count_add、counters_seed_snapshot/merge_export、bonus_add_axis(各站点原语义逐字收拢)。
|
||||
5. **run-scope 物化形态**(白名单⑤):RunScope Node 挂 main;_ready 即建闲时态(永非 null——全组合根免空判);会话更替=旧节点 queue_free+新节点同拍建。
|
||||
6. **探针迁移最小改动**(白名单⑥):组合根句柄保留策略使 10 探针中 7 个零迁移、3 个仅 run_scope 路径换代;pacing 测试改 attach 隔离。
|
||||
7. **类型标注写法**(白名单⑦):368 处机械参数化取 `Array[Variant]`/`Dictionary[Variant, Variant]` 零行为面口径——**元素精化(如 Array[Dictionary])留后续批渐进**(机器闸已封住新增无类型)。
|
||||
8. **死代码删除切分**(白名单⑧):随 T6 单笔提交。
|
||||
9. **enum 命名**(白名单⑨):adventure `State`/standee `HeroState`(+_HS_NAME/_HS_VALUE 双向映射常量)。
|
||||
10. **〔计划外〕P2-2 autoload 直取降格实现**:审计处方「编译期全局名」与本仓 --script 模式编译器不解析裸 autoload 标识符**硬冲突**(run_all.gd 头注在案+pacing 实测 Parse Error)——降格为路径常量单点(AUTOLOAD_PATH_* 四常量)+T1 读视图属性;拼写风险收敛一处,类型面保留。
|
||||
11. **〔计划外〕board_generator 四 db 参白名单**:generate/_attempt/legality/_finalize 的 db 参保持鸭子型(测量面 _BoardRowStub 冒烟夹具注入,typed 参拒 stub)——`# type-hint: ignore` 显式白名单通道首用。
|
||||
12. **〔计划外〕static_scan 历史 cd 错位修复**:9-24 布局迁移后 `dirname/..` 落 game/ 致 `game/core` 守卫恒跳过=静默空转遗产——修 `/../..` 后 S1-S4/S9 首次实跑,暴露并处置两笔存量(S1/S2 main `_seed_value` randi=文档化豁免面→`rng-seed-exempt` 标记豁免通道;S9 即本批闸)。
|
||||
13. **〔计划外〕V6 测试抓出挂起兜底分歧**:ModalFlow 初版在挂起兜底后误加 return(原 main 语义两拍都走)——以原语义为准修正;该处即单测缝价值的直接实证。
|
||||
14. **〔计划外〕审计「死代码 16 处」复核为 13 处**:ui_kit.gd:486 一处实读为现役代码(审计抽样误差),不删;其余 12 函数+FeatsEngine 整文件照删。
|
||||
15. **〔计划外〕刷新遥测取数面换代**:`ux_refresh_attempt` 的 round_refresh_index 从 main 副本改读快照(P1-2 连带,载荷键与数值语义零变化)。
|
||||
|
||||
## 四、GDD 反哺点(两条,已登记 06,待用户逐点裁决另批落文)
|
||||
|
||||
| # | 文档 | 反哺点 |
|
||||
|---|---|---|
|
||||
| 1 | design/dev/architecture/architecture.md | 场景分层陈述(三屏壳+组合根句柄面);会话生命周期(RunScope 物化+_begin_session/_end_session 语义);结算五段 Segment 结构(core/settlement/);RunLedger 四账所有权模型;ModalFlow 模态编排层与互斥域 tags 协议——architecture 现行陈述均滞后于实态 |
|
||||
| 2 | design/dev/code-conventions.md | §4 语言纪律机器化(S9+audit_type_hints.py 三规则);`:= {}` 推断形态=类型推断合法面不算债的口径;`# type-hint: ignore` 行级白名单通道;`# rng-seed-exempt` S1/S2 标记豁免通道;--script 模式禁裸 autoload 标识符纪律(新);Variant 参数化口径与元素精化后续 |
|
||||
|
||||
## 五、实机目检总清单(登记 07 ㉖——真人检测不阻塞,2026-10-12 立规)
|
||||
|
||||
1. 全流程操作观感零变化走查:开始菜单→营地(四柜台)→开新冒险→选路→战斗(挖/旗/刷新/停手)→三选一→商店→Boss→终局逐屏过一遍(场景拆分+会话物化后唯一人闸面)。
|
||||
2. 续玩断点恢复:停点退出→继续上局(断点文案/恢复落点)。
|
||||
3. 调试浮窗对局中可开不锁棋盘(:407-408 事故回归——互斥域 tags 化后行为钉面)。
|
||||
4. 刷新按钮余量显示与受理一致(双账删副本后 HUD 单源读快照)。
|
||||
5. DS_DEBUG=1 启动即开浮窗+两屏角标(同步面随 ModalFlow 迁移)。
|
||||
|
||||
## 六、残留与去向
|
||||
|
||||
- 残留人闸:07 ㉖ 五件(登记不阻塞)。
|
||||
- **卡片核对补登(2026-10-15)**:逐条核对卡片 §2/§4/§6/§7 兑现面,补齐三项——①V8 卫生 grep 断言落地(smoke `_smoke_hygiene_gates`:字符串 Callable 产品码零命中/FeatsEngine 文件退役/死代码抽查/GP 影子账零残留);②卡片 §4「长函数 17 个登记 06 观察」+§2.3「lambda 连接 76 处登记防回归」两条义务补登 06(17 中 3 件已随波一/二消解,余 14 件备忘);③漏网字符串 Callable×2 补装(config_db resolver 通道——T6 新增位点,追认单#15 换装面覆盖)+main 头注死引用清理。核对结论:§1 五波/§3 六契约/§6 T0-T7/§7 V1-V9 其余条目全部兑现(详见各波闸记录)。
|
||||
- 代拍板追认单十五项(上表)待用户逐项追认。
|
||||
- GDD 反哺点两条(06 在册)待裁决另批落文。
|
||||
- 审计报告本体已按退役规则 git rm(吸收即死;修正后计数已由需求卡片 v1.2 承载)。
|
||||
- 元素精化(Array[Variant]→具体元素型)为类型闸后续渐进面(06 反哺点②附带)。
|
||||
@@ -1,28 +0,0 @@
|
||||
# 迭代 27 T0 交付:smoke 探针挂载假设对照表(2026-10-14)
|
||||
|
||||
卡片 T0.3 交付物。11 个挂载面 = 10 个 smoke 探针 + 1 个单测套件(pacing_queue_test,全库唯一直接 load main.tscn 的单元测试)。
|
||||
迁移原则(卡片 🔴 探针契约零破坏):**「实例化 main.tscn 得到完整产品树 + 组合根 API」这一挂载假设本身保留**——
|
||||
场景拆分后 main.tscn 仍是组合根(屏场景为其子节点挂载),探针入口零改动;
|
||||
迁移面 = 探针内部对 main 私有成员的树寻址/状态探视,随成员落位逐个改写(改写即新结构的回归断言)。
|
||||
另两个挂载假设探针(adventure_monte_carlo/level_autoplay,SceneTree 直驱 level_runner 不挂 main.tscn)不在迁移面。
|
||||
|
||||
| # | 探针 | 挂载行 | 挂 main.tscn 得到什么 | 成员依赖面(实测 grep) | 迁移方向(T1 落位后改写) |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | ui_probe.gd | :15 | 完整产品树+驱动 `_start_adventure_from_menu()`(唯一试玩入口) | `_start_overlay/_battle_root/_row_queue/_debug/_is_settling/_on_adventure_finished/_on_camp_closed/_on_wallet_changed/_reset_run_scope/_adventure_gp_final/_adventure_gp_view/_close_modal` + `adventure/ap_bar/board_view/board_zone/camp_overlay/db/debug_overlay/info_panel/level_screen/log_view/meta/runner/settlement/stage` | 屏成员→屏场景属性路径;局态成员→run-scope 节点路径;`_reset_run_scope` 断言随手工清单消亡换代为 run 节点释放断言 |
|
||||
| 2 | ui_click_probe.gd | :45 | 全输入链走查(行进/战斗/营地/商店点击 10935 预算) | 最广:`_adventure_mode/_battle_root/_camp_data/_end_overlay/_exit_level_screen/_input_locked/_inter_overlay/_last_gain_amount/_locked_click/_on_camp_closed/_refresh_resume_button/_refresh_used_round/_row_queue/_settlement_stop_pending/_start_adventure_from_menu/_start_overlay` + 全部屏成员 | `_input_locked` 输入锁随 T4 模态协议内聚落位;`_refresh_used_round` 随 T3 双账删除改快照通道断言;余同 #1 |
|
||||
| 3 | ui_struct_probe.gd | :25 | 模态栈纪律走查(开合/遮挡/输入锁) | `_close_debug_overlay/_end_overlay/_gp_summary_text/_level_active/_modals/_on_camp_closed/_on_career_closed/_on_settings_closed/_on_status_closed/_open_modal/_open_settings/_open_status_panel/_refresh_resume_button/_resume_from_menu/_show_debug_overlay/_start_adventure_from_menu/_start_overlay` + 屏成员 | `_modals`(ModalStack)随 T4 内聚后寻址换代;模态层清单断言随屏场景化改挂屏壳 |
|
||||
| 4 | ui_layout_probe.gd | :17 | 四区布局几何断言 | `_start_adventure_from_menu/board_view/board_zone/debug_overlay/info_panel/get_child/get_children/save_manager/stage` | board_zone/info_panel/stage 随屏场景化改屏壳属性路径;`get_child` 序数寻址须换名寻址(子场景化后序号漂移) |
|
||||
| 5 | ui_input_probe.gd | :27 | 输入锁+宝珠辉光链路 | `_input_locked/_start_adventure_from_menu/_sync_treasure_glow/board_view/board_zone/build_adventure_params/debug_overlay/runner/save_manager/settlement/status_panel` | `_sync_treasure_glow`/`build_adventure_params` 随局态物化落位;余同 #1/#2 |
|
||||
| 6 | ui_audit_probe.gd | :27 | 全屏巡检(12 模态层/入口可达) | `_close_debug_overlay/_end_overlay/_on_settings_closed/_open_settings/_refresh_resume_button/_show_debug_overlay/_start_overlay/board_view/camp_overlay/confirm_dialog/curio_overlay/legend_overlay/level_screen/save_manager/shop_overlay` | 模态层清单随屏场景化改挂屏壳;余同 #1 |
|
||||
| 7 | ui_tune_probe.gd | :36 | 调试浮窗只读巡检(种子框/批量模拟) | `_close_debug_overlay/_input_locked/_seed_value/_show_debug_overlay/_start_adventure_from_menu/_start_overlay/adventure/board_zone/confirm_dialog/db/debug_overlay/level_screen/save_manager/settlement` | `_seed_value` 随种子框落位改路径;debug_overlay 归属屏待 T1 定(全局层 vs 屏内层) |
|
||||
| 8 | shot_probe.gd | :35 | 截图(四屏+营地/设置) | `_start_overlay/board_zone/camp_overlay/career_overlay/level_screen/settings_overlay/settings_store/stage/status_panel` | 屏成员→屏场景路径;settings_store 随升格 autoload 改全局访问 |
|
||||
| 9 | fx_shot_probe.gd | :28 | 特效截图(棋盘 fx) | `_start_overlay/level_screen/settings_store/settlement` | 同 #8 |
|
||||
| 10 | t17_defer_probe.gd | :15 | 延迟模态时序断言(结算行分帧) | `_deferred_modal/_end_overlay/_row_pacer/_start_overlay/db/level_screen/meta/save_manager/settings_store/settlement` | `_row_pacer/_deferred_modal` 随 T4 模态协议落位;meta 随升格 autoload 改全局 |
|
||||
| 11 | tests/unit/presentation/pacing_queue_test.gd | :19 | 行队列节奏单测(真实冒险至首战结算) | `_flush_row_queue/_refresh_resume_button/_row_queue/_start_adventure_from_menu/adventure/db/level_screen/log_view/meta/pace_delay_for/runner/save_manager` | `_row_queue/_flush_row_queue/pace_delay_for` 随 T4 抽取落位(该单测即 V6 新纯逻辑类直接 new() 的前哨);余同 #1 |
|
||||
|
||||
**共性迁移点**(T1 施工照单改写,改写后逐探针全绿=V2 闸):
|
||||
1. `meta`/`save_manager`/`settings_store` → 裁点① 第三/四 autoload 后改全局名访问(探针里的 `main.meta` 全数换代)。
|
||||
2. `runner/adventure/settlement/_adventure_mode/_row_queue` 等局态 → run-scope 节点(`main.run_scope.X` 形态,命名属代拍板白名单#5)。
|
||||
3. `_start_overlay/camp_overlay/level_screen/...` 屏成员 → 屏场景属性(组合根保留装配属性,路径一级化)。
|
||||
4. `get_child`/子序数寻址(ui_layout #4)→ 名寻址(子场景化后序数漂移是 breaking 面)。
|
||||
5. 手工复位断言(ui_probe `_reset_run_scope`)→ run 节点 `queue_free()` 复位断言(V3 配套)。
|
||||
+1
-1
@@ -60,7 +60,7 @@
|
||||
| 迭代 24 | 已完成(2026-10-13) | 已退役(git 历史可考) | 2026-10-13 | — | 已退役(git 历史可考) |
|
||||
| 迭代 25 | 已完成(2026-10-13) | 已退役(git 历史可考) | 2026-10-13 | — | 已退役(git 历史可考) |
|
||||
| 迭代 26 | 已完成(2026-10-14) | 已退役(git 历史可考) | 2026-10-14 | — | 已退役(git 历史可考) |
|
||||
| 迭代 27 | 已完成(2026-10-14) | 已退役(git 历史可考) | 2026-10-14 | — | reports/iter27-实现报告-2026-10-14.md |
|
||||
| 迭代 27 | 已完成(2026-10-14) | 已退役(git 历史可考) | 2026-10-14 | — | 已退役(git 历史可考) |
|
||||
| 迭代 28 | 已完成(2026-10-15) | 已退役(git 历史可考) | 2026-10-15 | — | reports/iter28-实现报告-2026-10-15.md |
|
||||
| 迭代 29 | 已完成(2026-10-16) | 已退役(git 历史可考) | 2026-10-16 | — | reports/iter29-实现报告-2026-10-16.md |
|
||||
| 迭代 30 | 已完成(2026-10-17) | 已退役(git 历史可考) | 2026-10-16 | — | reports/iter30-实现报告-2026-10-17.md |
|
||||
|
||||
Reference in new issue
Block a user