修复: 卡④T5——收口落籍(批末重闸三件全绿=冒烟 844/0 三闸过+probe_gate 含 click 全绿+run_all 18 套件全绿+残留 Godot=0 双点)+出口报告落盘(行字段秒答记录与 provisional 追认单/逐件改动对照/MC 静态论证五点/闸数字改前改后/验收清单六条对账/遗留移交)+台账记账 403(master 0ba3ddf 查撞 398-402 已占、403 预配号空闲未顺延)

This commit is contained in:
DKChan committed 2026-10-08 17:02:57 +08:00
1 parent 8374c9caf1
commit 1b26234ed0
2 files changed
+121

No files matched your search

@@ -0,0 +1,120 @@
# 出口报告——迭代 19 卡④ 提灯载体道具批(2026-10-08)
> 任务书=`design/research/任务书-提灯载体道具批-2026-10-07.md`(v1.2);worktree=`D:\code\g-plan2-iter19-lantern`(分支 iter19-lantern-20261008,基点 568101b=master 卡③落籍态,含卡⓪①缺陷修复=本卡 T1 前置门 S1 天然满足);T0-T5 全履行,S0 行字段秒答已收(「按推荐」全收 2026-10-08),S2 未触发。**停机点:零**。
## 一、行字段秒答记录与 provisional 追认单(S0)
| 字段 | 呈报推荐值 | 用户裁决(2026-10-08) | 追认状态 |
|---|---|---|---|
| display_name | 魔法提灯 | 按推荐(全收) | ✅ 已按推荐落表——本报告即出口追认单,转正 |
| desc | 灯光区半径+2 | 按推荐(全收) | ✅ 转正 |
| 行 id | fog_lantern | 按推荐(全收) | ✅ 转正 |
| slot_cost | 1(与九件同规,schema 强制恒 1) | 按推荐(全收) | ✅ 转正 |
| 稀有度 | 不设字段(KEY_WHITELIST 封闭十七键无此键) | 按推荐(全收) | ✅ 转正 |
| 门槛位 | unlock_requires 键省略(=已解锁合法态,底稿 §2.2) | 按推荐(全收) | ✅ 转正 |
| 机械字段(schema 钉死非裁量) | form="passive"/triggers=[](键显式存在)/effect_kinds=[]/target="none"/magnitude=0/use_phase="active_dig"/dimension_tags=["info"]/行位置=表尾追加 | ——(工程面,任务书 §五.2 案A+主控已裁) | ✅ 落表(treasure_items.tres 表尾) |
**行位置=表尾追加的承重理由**:MC 自动档装配画像(game/smoke/adventure_monte_carlo.gd:70-90)按表序取「前 slots-1 个 passive+首个 active」——fog_lantern 追加表尾后 passives 序=[淬毒刃纹,标中殉爆,惊巢反制,工兵晨令,偏运硬币,三选一刷新件,魔法提灯],slots=3 时取前 2 passive(淬毒刃纹/标中殉爆)+首 active(掘进蓄能)**逐位不变**;slots 现役硬上限 3(attunement_growth.tres slot_cap),表尾位在 slots≤3 下**不可达**=装配画像零漂移(MC 静态论证详见 §四)。
**与 greedy_lantern 零关联消歧**:feats.tres:291 贪婪矿灯=dig_reveal yield_mult 专长(开格产出放大),与视野无关,本批零触碰;行文全称「魔法提灯」不单称「提灯」。
## 二、逐件改动对照(T1-T4,file:line 为改后行号)
### T1——数据行落表(commit 90a39f1)
| # | 位置 | 改动 |
|---|---|---|
| 1 | game/data/tables/treasure_items.tres :7-8 | 头注释追加两行批注(迭代 19 卡④ 出处分批+行字段裁决出处+「激活 vs 封存」形态差注记——fog_lantern 活行空效果形态=triggers 显式空数组,与显影尘 deferred 封存形态对照) |
| 2 | 同 :224-236 | 表尾(pick_refresh 行后)追加 fog_lantern 行十四键:item_id/display_name/dimension_tags=["info"]/desc/effect_kinds=[]/target/magnitude/use_phase/form="passive"/slot_cost=1/triggers=[](**键显式存在——treasure_item_table.gd:111 活行空 effect_kinds 校验豁免以 row.has("triggers") 为条件,漏写=加载红**);unlock_requires 键省略=已解锁 |
**schema 校验面核对(加载零红)**:冒烟「全部表加载+校验通过」闸过(TreasureItemTable.validate 零违例);KEY_WHITELIST 十七键内零新键;真视窄域/board_wide 护栏不涉(无 mine_reveal);magnitude=0 非 N 值 kind 合法;passive 行 charges 缺省 0 合法;attunement_rows() 收录(form 非空活行)=同调目录十件。
### T2——接线生产路径贯通(commit eef343c)
| # | 位置 | 改动 |
|---|---|---|
| 1 | game/core/battle_orchestrator.gd :128-134 | 新增**装配集公共只读出口** `attune_has(item_id) -> bool`(委托既有 private `_attune_has` :124——契约化出口,save v6 只读访问器先例;private 面内部调用零改动;只读零副作用) |
| 2 | game/presentation/main.gd :852-860 | `_on_round_started` 内新增 `if ri == 1: _sync_fog_lantern()` 挂点+时序依据注释:**round_started 首轮发射位在 begin_battle 尾(attunement 注入 :227 之后)**;board_changed 在 `_install_new_board` 内先发(:309)、装配集后注入——同帧直挂 `_on_board_changed` 会读到上一战旧集,故不挂 |
| 3 | game/presentation/main.gd :875-886 | 新增**呈现桥** `_sync_fog_lantern()`——`board_view.set_fog_lantern(settlement.attune_has("fog_lantern"))`,真值显式写给 setter(写入即 refresh 全板重算);settlement/board_view 空防御 |
**复原语义(🔴 契约 7 / Q8.1)**:每战首轮装配链**显式重算含否**——装配=true 写 2、未装配/卸装=false 写 0;禁依赖战斗结束隐式复原(断点续玩/跨关/换装天然正确)。未装配=false 写 0=与既有基线**逐位一致**(缺省零扰动)。off 态生产路径变化=零(`attune_has` 只读、`_sync_fog_lantern` 只写呈现态布尔)。
**ADR-0001 合规**:信号连接与装配判定归组合根(main.gd),board_view 纯呈现零核心依赖;board_zone_view 装配链经由组合根持有别名(main.gd:89 `board_view = battle_ui.board_view`)零改。
### T3——测试三形态(commit f0f2009,契约 9 全守)
| # | 形态 | 位置 | 内容 |
|---|---|---|---|
| 1 | probe=case⑮ 内载体级段(不开新 case) | game/smoke/ui_input_probe.gd :419-441 | ①装配→开局参数面:save_manager.set_attunement_equipped(["fog_lantern"])→`build_adventure_params` 返回含 fog_lantern(卡⓪①缺陷修复面回归断言);②装配集→呈现桥→生效:settlement.attunement 手动注入(模拟 begin_battle enc 注入后运行态)→`main._sync_fog_lantern()`→lantern==2+dist==R+1 格转可见;③卸装显式重算复原:attunement=[]→sync→lantern==0+ring 复原遮蔽+存档装配集复位。**case⑮ 既有断言零删减(实查::331 基线+:395-418 接线段原样在位,ui_input_probe PASS 全绿实证)** |
| 2 | smoke=现有套件加断言(不新开套件文件) | game/smoke/smoke_all.gd :233-263(_smoke_adventure_table 内) | +4 断言:行字段逐键裁值/同调目录投影 display_name=魔法提灯(九件→十件)/装配→战斗贯通(enc.attunement 注入→attune_has=true)/空装配基线(attune_has=false)。冒烟 840→844 |
| 3 | 存档回归 | game/tests/unit/core/breakpoint_resume_test.gd Part 6 | 装配(params.attunement=["fog_lantern"])→选路进首战 attune_has=true→断点→新对象 resume_adventure 受理→回局首战 attune_has 仍 true(停点往返载体态一致;呈现态每战重算归呈现桥,本断言钉核心层装载往返) |
| 4 | 呈现桥判定 stub 单测+行加载单测(game/tests/ 惯例位) | game/tests/unit/core/fog_lantern_wiring_test.gd(新件)+game/tests/run_all.gd manifest 17→18 套 | 真实表 validate 零违例/行字段逐键/attunement_rows 收录/attune_has 双态(["fog_lantern"]→true、luck_coin→false、[]→false)/begin_battle enc 注入面 |
### T4——账务落文(commit 0b5834d)
改道指路句**实查 6 处全部换代**(任务书 §七.5「四处」口径矛盾以实查计数为准):
| # | 位置 | 改前 | 改后 |
|---|---|---|---|
| 1 | board_view.gd :139(常量注释) | 「+2 预留不接效果——效果载体归 Alpha 信息件批;接线时写 _fog_lantern」 | 「+2=拍板值;载体=迭代 19 卡④ fog_lantern 秘宝行落籍 2026-10-08——原指路句随批换代」 |
| 2 | board_view.gd :143-145(setter 注释) | 「〔aux_items 提灯新行——归 Alpha 信息件重定批〕到位后由组合根/库存挂接调用」 | 「〔fog_lantern 魔法提灯——迭代 19 卡④落籍〕已到位,组合根 main._sync_fog_lantern 每战首轮装配链显式重算调用」 |
| 3 | art-bible.md :387 | 「LIGHT_RADIUS_LANTERN_BONUS=+2 预留不接效果(接线归 Alpha 信息件批)」 | 「FOG_LANTERN_BONUS=+2(**常量拟名顺手对齐落码实名**)已接效果落籍(载体=fog_lantern 行+每战装配链接线;呈现画法零改动——本节只管怎么画)」 |
| 4 | HUD框架.md :168(配套拍板段) | 「提灯载体归 aux_items 新行,随 Alpha 信息件重定批一并登记」 | 「登记原文+改道注记(2026-10-07 改道独立卡、2026-10-08 裁案A 落位)」 |
| 5-6 | HUD框架.md :170(实施状态段,同段 2 处) | 「LIGHT_RADIUS_LANTERN_BONUS=+2 预留未接效果(接线归 Alpha 信息件批)」+「提灯载体〔aux_items 新行〕仍归 Alpha 信息件重定批」 | 常量实名对齐+「仍归」句删除,整段追加**〔2026-10-08 迭代 19 卡④落籍注记〕**(载体行/生产路径链/复原语义/测试随批/原登记去向销账声明) |
- **残留核查**:全仓「Alpha 信息件」字样改后余三处——board_view.gd:139(换代声明句)、HUD框架.md:170(销账声明句)、roadmap.md(迭代 14 历史行+迭代 19 卡④改道留痕叙事)——均非活性指路,零旧口径残留。**qa 历史成文零触碰**(m4iter14 出口报告等原样)。
- **06-待办清单.md :27-29**:菜单开局同调传参缺陷条回写落籍态(✅ 卡⓪ merge 9160942 修复面+冒烟 +6+resume tree_rules 受理缺口披露归属用户裁)。
- **秘宝.md**:速览实现面文件名过时残留顺手订正(aux_items.tres→treasure_items.tres)+目录九件→十件(魔法提灯入册、被动六→七)+投放态注记十件口径+版本行 v1.1。
- **roadmap.md :75**:迭代 19 行卡④段落籍登记(T1-T5 全记录+出口报告指路)——落籍顺序串行重放归主控合并时处理。
## 三、MC 对拍——静态论证(任务书 T5/裁 Q3:零实跑)
提灯=**纯呈现层载体件**,静态推演五点:
1. **结算域零入**:fog_lantern 行 effect_kinds=[]+triggers=[]——效果引擎 rebuild 订阅空(`_fx.rebuild` 第三参取 treasure 行 triggers,空数组零订阅)→ 16 发射点零命中 → 结算步骤流/事件流逐位不受扰(🔴 契约 2 同板同动作序列两态逐位一致,case⑮ 既有断言面持续守护)。
2. **装配画像逐位不变**:MC 自动档装配(adventure_monte_carlo.gd:70-90)按表序取前 slots-1 passive+首 active;fog_lantern 表尾追加在 slots≤3(slot_cap 硬上限)下**不可达**——off/formed 两档 equipped 数组逐位不变。
3. **取数面零变化**:本批零触碰 rng_service/board_generator/encounter——流计数器与派生序零 diff。
4. **呈现写入面收敛**:生产写入面唯 `main._sync_fog_lantern`(每战首轮一次)+ui_input_probe 既有 case⑮ 接线断言(探针域非生产);set_fog_lantern 本体零改动(写 `_fog_lantern`+refresh——迭代 14⑤ 已在位)。
5. **off 态逐位一致基线**:未装配 fog_lantern 时 `_sync_fog_lantern` 写 0=既有基线值——`fog_state` 计算式 `fdist > FOG_RADIUS + _fog_lantern` 数值恒等。
结论:MC 两档读数**零漂移**,无需实跑(实跑须走跑批批准制——2026-10-07 用户裁 Q3 静态论证替代,本批遵守)。
## 四、闸数字(改前/改后全列)
| 闸 | 改前(基点 568101b) | 改后(本批头 0b5834d,批末重闸实测 2026-10-08) | 变化 |
|---|---|---|---|
| 冒烟 run_smoke | 840 项 0 失败三闸过 | **844 项 0 失败三闸过** | +4(smoke 集成断言) |
| probe_gate 默认段 | 全绿(input 十七断言/struct/contrast 15 对——本分支基点为卡②合并前旧态 15 对,主控合并时以 master 现役 38 对重放) | 默认段全绿(input PASS/struct PASS/contrast 15 对 PASS) | 零红 |
| probe_gate --click | (基线未单跑——click 走查主菜单开局冒风险问题=0 口径沿卡⓪批) | 全绿(click 段退出码 0 判过+残留 Godot=0+全局 Godot=0) | 零红 |
| run_all | 17 套件全绿 | **18 套件全绿**(+fog_lantern_wiring_test PASS 在列) | +1 套 |
| 残留 Godot | 0 | 0(批末双点:probe_gate 批末闸+批后 powershell 复点) | 持平 |
(改后数字=批末重闸实测逐项在案,无勘误。)
## 五、验收断言清单对账(任务书 §九)
1. ✅ 裁决案数据行在表且加载校验通过(schema 白名单零违例——冒烟表加载闸+新单测 validate 断言)。
2. ✅ 生产路径贯通:载体在位→fog_params_probe()["lantern"]==2、dist==R+1 环带转可见(case⑮ 载体级段);载体缺位→lantern==0 现行为逐位不变(case⑮ 基线+smoke 空装配断言)。
3. ✅ ui_input_probe 载体级断言全绿且 case⑮ 既有零删减(实查计数:基线 1+接线 4+载体级 5 断言组原位共存);smoke 集成与存档回归全绿(844/0+Part 6)。
4. ✅ 重闸全绿+MC 零扰动(静态论证 §三)。
5. ✅ 活性指路句实查 6 处全部换代、零旧口径残留(§二 T4 逐处清单;历史成文除外)。
6. ✅ 出口报告落 design/qa/(本件,含 provisional 追认单+行字段秒答记录);roadmap 迭代 19 行换代。
## 六、遗留与移交
- **在飞避让(Q13)**:本分支基点落后 master(卡①②在飞或已落)——照常施工未 rebase 未追;roadmap 迭代 19 行与 ui_contrast 38 对口径由主控合并时串行重放(probe_gate 改后默认段在本分支以 15 对旧态全绿为验收口径,已在 §四披露)。
- **resume 侧 tree_rules 受理缺口**:卡⓪批已披露(runner resume_adventure 现收 attunement/attune_refresh_y 两键),本批断点 Part 6 走 params 注入不受其影响——缺口处置仍归用户裁,非本批新增。
- **提灯点亮视觉**:挂账不动(「资产升档重产批」+「提灯点亮解禁候选」——S2 未触发)。
- **全局变异案E 解封条件**:「提灯接线落位」随本批落地推进——解封重议归全局变异批 Own,本批不代行。
- **显影尘/地穴全图卷能力封存重定**:仍留 Alpha 信息件重定批,本批零触碰(改道留痕=任务书 §一)。
- **台账记账**:403 号(master 0ba3ddf 查撞:398-402 已占、403 空闲=预配号一致未顺延)。
## 七、提交清单
| commit | 内容 |
|---|---|
| 90a39f1 | T1——treasure_items.tres 表尾追加 fog_lantern 行 |
| eef343c | T2——attune_has 只读出口+呈现桥 _sync_fog_lantern(每战首轮显式重算) |
| f0f2009 | T3——测试三形态(case⑮ 载体级段/smoke +4/存档回归 Part 6/新单测 run_all 18 套) |
| 0b5834d | T4——指路句 6 处换代+06 回写+秘宝十件+roadmap 卡④段 |
| (本笔) | T5——批末重闸+出口报告+台账记账 403 |