From 1cdef6bae3c686d970608d8af925f679e78e3712 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Sat, 31 Oct 2026 01:30:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3(=E5=B8=83=E5=B1=80=E5=87=A0?= =?UTF-8?q?=E4=BD=95=E5=8D=95=E7=82=B9=E5=8C=96=E6=89=B9=C2=B7=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E9=9D=A2=E4=B8=8E=E7=99=BB=E8=AE=B0=E9=9D=A2=E7=9B=B4?= =?UTF-8?q?=E6=94=B9):=20battle.md=20=E5=8C=BA=E8=A1=A8/=E7=BA=BF=E6=A1=86?= =?UTF-8?q?/=E6=98=8E=E7=BB=86=E5=B8=A6=E5=8E=BB=E6=95=B0=E5=80=BC?= =?UTF-8?q?=E5=8C=96=E2=80=94=E2=80=94=E5=88=86=E5=8C=BA=E5=87=A0=E4=BD=95?= =?UTF-8?q?=E5=94=AF=E4=B8=80=E4=BA=8B=E5=AE=9E=E6=BA=90=E6=94=B9=E6=8C=87?= =?UTF-8?q?=20battle=5Flayout.tres=20=E4=BA=94=E5=AD=97=E6=AE=B5,=E7=AE=97?= =?UTF-8?q?=E4=BE=8B=E8=A1=A8=E9=80=80=E5=BD=B9=E6=94=B9=E3=80=8C=E7=AE=97?= =?UTF-8?q?=E4=BE=8B=E4=B8=8D=E5=85=A5=E6=96=87=E6=A1=A3=E3=80=8D=E5=8F=A5?= =?UTF-8?q?=E5=B9=B6=E6=B8=85=E9=99=A4=20.py=20=E8=B7=AF=E5=BE=84=E5=BC=95?= =?UTF-8?q?=E7=94=A8(08e=20=E5=88=A4=E6=8D=AE=E6=B8=85=E5=81=BF);=E5=BE=85?= =?UTF-8?q?=E5=8A=9E=E6=B8=85=E5=8D=95=E7=99=BB=E8=AE=B0=E9=9D=A2=E2=80=94?= =?UTF-8?q?=E2=80=94iter43=20=E6=9D=A1=E7=9B=AE=E4=B8=89=E7=82=B9=E2=86=92?= =?UTF-8?q?=E4=B8=A4=E7=82=B9=E6=8D=A2=E4=BB=A3(B=20=E5=8C=BA=E9=AB=98?= =?UTF-8?q?=E5=BA=A6=E5=B7=B2=E8=A3=81=E5=B9=B6=E8=90=BD=E5=9C=B0=E8=AE=B0?= =?UTF-8?q?=E8=BD=BD=E5=9C=A8=E5=AE=9E=E5=86=B5,=E6=A0=87=E9=A2=98?= =?UTF-8?q?=E6=9D=A5=E6=BA=90=E5=AD=97=E6=AE=B5=E6=81=A2=E5=A4=8D=E8=A3=B8?= =?UTF-8?q?=E5=80=BC=3D08c=20=E5=88=A4=E6=8D=AE=E6=B8=85=E5=81=BF)+?= =?UTF-8?q?=E6=88=98=E6=96=97=E5=8C=BA=E8=83=8C=E6=99=AF=E6=9D=A1=E7=9B=AE?= =?UTF-8?q?=E6=94=B9=E8=AF=BB=E5=B8=83=E5=B1=80=E8=A1=A8+=E6=8D=A2?= =?UTF-8?q?=E5=9B=BE=E7=B3=BB=E5=8F=8C=E5=9F=BA=E5=BA=A7=E4=B8=83=E4=BB=B6?= =?UTF-8?q?=E6=9D=A1=E7=9B=AE=E7=8A=B6=E6=80=81=E6=8E=A8=E8=BF=9B(?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E8=AE=BE=E8=AE=A1=E5=B7=B2=E9=97=AD=E5=90=88?= =?UTF-8?q?=EF=BC=8B=E5=B7=B2=E5=86=99=E5=8D=A1)+=E6=B8=85=E5=8D=95?= =?UTF-8?q?=E5=A4=B4=E5=8F=A5=E5=AF=B9=E9=BD=90=E3=80=8C=E6=9D=A1=E7=9B=AE?= =?UTF-8?q?=E8=AE=B0=E8=BF=9B=E5=BA=A6=E3=80=8D=E5=8F=A3=E5=BE=84;?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=82=B9=E6=96=87=E6=A1=A3=E5=9F=9F=E9=97=B8?= =?UTF-8?q?=E5=85=AB=E9=97=B8=E5=85=A8=E7=BB=BF,CI=20=E5=9C=A8=E6=A1=88?= =?UTF-8?q?=E7=BA=A2=E7=94=B1=20post-commit=20=E8=87=AA=E5=8A=A8=E8=BF=BD?= =?UTF-8?q?=E7=BB=BF=E5=A4=8D=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- design/gdd/ux/battle.md | 26 +++--- ...-停机呈报-断点域拆件规格缺口-2026-10-30.md | 38 +++++++++ ...iter45-停机呈报-潜伏红定谳绿-2026-10-30.md | 29 +++++++ reports/iter45-反哺点-2026-10-31.md | 13 +++ reports/iter45-实现报告-2026-10-31.md | 82 +++++++++++++++++++ reports/iter45-验收审计-2026-10-31.md | 46 +++++++++++ 待办清单.md | 27 +++--- 7 files changed, 232 insertions(+), 29 deletions(-) create mode 100644 reports/iter45-停机呈报-断点域拆件规格缺口-2026-10-30.md create mode 100644 reports/iter45-停机呈报-潜伏红定谳绿-2026-10-30.md create mode 100644 reports/iter45-反哺点-2026-10-31.md create mode 100644 reports/iter45-实现报告-2026-10-31.md create mode 100644 reports/iter45-验收审计-2026-10-31.md diff --git a/design/gdd/ux/battle.md b/design/gdd/ux/battle.md index 0bb20299..5c2f5747 100644 --- a/design/gdd/ux/battle.md +++ b/design/gdd/ux/battle.md @@ -115,13 +115,13 @@ ### Layout Zones -采用用户拍板的布局图(2026-09-12),按 1280×800 基座落尺寸: +采用用户拍板的布局图(2026-09-12),按 1280×800 基座落尺寸。**分区几何的唯一事实源 = `game/data/tables/battle_layout.tres`**(经 `ConfigDb.presentation.battle_layout` 读取;字段 `stage_h` / `info_panel_w` / `ap_bar_h` / `log_band_h_dig` / `log_band_h_settle`)。本节只写结构关系与内容职责,不复写数值;任何文档与代码不另立第二份布局值。 -| 区 | 位置与尺寸 | 内容 | +| 区 | 位置与几何 | 内容 | |---|---|---| -| **B 战斗画面** | 全宽 × 270px(2026-10-06 方案二拍板:演出 ≈1/3 屏,原 252) | 主角站桩立绘(左)+ 兑现演出区(中)+ 敌人站桩立绘 ×1–3(右)——**全站桩形态(2026-09-20 用户拍板,敌人卡形态待办裁决完成):主角与敌人均为无框立绘+底座,零卡片**;主角与敌人站桩 = **HP 与状态效果的唯一展示面(2026-09-26 信息归属拍板)**;底部结算明细带(24px 摘要 / 结算期 84px 实时流);顶部中央轮次·阶段指示 | -| **C 角色信息** | 左下 240px × 530px(2026-10-06 方案二:548→530) | 攻击值(含修正显示)、护甲 AC;秘宝槽、奇物列表(现行标题「特性」)——HP 条/RAP 池/状态效果槽/立绘占位/钱包行退役(2026-09-26 信息归属拍板:HP 与状态唯一展示面 = B 区站桩;RAP 迁 D 区 AP 条;GP/钥石迁出战斗屏) | -| **D 扫雷图** | 中下 ~1036px × 530px(2026-10-06 方案二:548→530——压缩全部由面板空档吸收,**棋盘 438×438 原尺寸不缩、格子不变**;原右下面板删除后横向加宽,吸收其宽度) | 顶部 AP 条(44px:左——AP 点阵 + 停手按钮;中——RAP 点阵+数字〔自 C 区迁入,贴弃图刷新按钮,2026-09-26 拍板〕;右——图例按钮 + 弃图刷新按钮〔雷图右上角,2026-09-12 拍板〕);棋盘主体(居中,格边长见下方「棋盘格尺寸公式」);toast 槽(上缘内侧) | +| **B 战斗画面** | 全宽,高读 `stage_h`(2026-10-06 方案二拍板:演出 ≈1/3 屏) | 主角站桩立绘(左)+ 兑现演出区(中)+ 敌人站桩立绘 ×1–3(右)——**全站桩形态(2026-09-20 用户拍板,敌人卡形态待办裁决完成):主角与敌人均为无框立绘+底座,零卡片**;主角与敌人站桩 = **HP 与状态效果的唯一展示面(2026-09-26 信息归属拍板)**;底部结算明细带(挖掘期收起高读 `log_band_h_dig`,结算期展开高读 `log_band_h_settle`);顶部中央轮次·阶段指示 | +| **C 角色信息** | 左下,宽读 `info_panel_w`,高 = 基准屏高 − B 区高 | 攻击值(含修正显示)、护甲 AC;秘宝槽、奇物列表(现行标题「特性」)——HP 条/RAP 池/状态效果槽/立绘占位/钱包行退役(2026-09-26 信息归属拍板:HP 与状态唯一展示面 = B 区站桩;RAP 迁 D 区 AP 条;GP/钥石迁出战斗屏) | +| **D 扫雷图** | 中下,宽 = 基准屏宽 − C 区宽 − 列间距,高同 C 区(2026-10-06 方案二:底行压缩全部由面板空档吸收,**棋盘原尺寸不缩、格子不变**;原右下面板删除后横向加宽,吸收其宽度) | 顶部 AP 条(高读 `ap_bar_h`:左——AP 点阵 + 停手按钮;中——RAP 点阵+数字〔自 C 区迁入,贴弃图刷新按钮,2026-09-26 拍板〕;右——图例按钮 + 弃图刷新按钮〔雷图右上角,2026-09-12 拍板〕);棋盘主体(居中,格边长见下方「棋盘格尺寸公式」);toast 槽(上缘内侧) | > 布局为 B/C/D 三区——关卡进度条不在战斗屏(节点链进度常驻关卡画面,见 Navigation Position;字母不重编沿用 B/C/D)。 @@ -145,11 +145,7 @@ - N 的取值与每关板型的对应关系读[棋盘生成](../systems/排雷循环/棋盘生成.md),现行值的事实源是 `data/tables/board_gen.tres`。 - 数字字号 = max(18, ceil(格边长 × 0.5)),像素字体整数倍缩放(canvas_items stretch 保证清晰)。 -按 1280×800 基准档、棋盘区可用高 486px(D 区 530 减行动点条 44)推算的算例(随布局与板型变化,不是契约值): - -| 板型 N | 10 | 12 | 13 | 14 | -|---|---|---|---|---| -| 格边长 | 43px | 36px | 33px | 30px | +算例不入文档:棋盘区可用面积随布局表与板型变化,不是契约值——现算并绘在整屏样张上,本文件不复写。 ### Component Inventory @@ -196,12 +192,13 @@ ### ASCII Wireframe > **2026-09-26 信息归属拍板**:C 区 HP/RAP/状态槽/立绘占位/钱包行退役——HP 与状态唯一展示面 = B 区站桩,RAP 迁 D 区 AP 条贴弃图刷新按钮,GP/钥石迁出战斗屏;C 区改攻击数据框+两预留区。下方线框图已随拍板重绘;旧线框留档于 git 历史。 -> **2026-09-23 停点前移批**:A 区关卡进度条退役,下方线框图为 B/C/D 三区(28px 纵向空间划归 C/D 底行 520 → 548;关卡内节点进度常驻关卡画面,战斗屏零进度承载);旧四区线框留档于 git 历史。 +> **2026-09-23 停点前移批**:A 区关卡进度条退役,下方线框图为 B/C/D 三区(纵向空间划归 C/D 底行;关卡内节点进度常驻关卡画面,战斗屏零进度承载);旧四区线框留档于 git 历史。 +> **几何标注已撤**:线框只示意结构,各区几何读 `game/data/tables/battle_layout.tres`,图中不标像素值。 > **2026-09-20 全站桩形态改版**:敌人卡形态裁决完成(卡片式退役、主角与敌人均站桩——无框立绘+底座、状态小图标挂血条下),下方线框图 B 区已随裁决重绘;旧卡片式线框留档于 git 历史。 ``` 1280 × 800 ──────────────────────────────────────────────────────────────────── -┌─[B] 战斗画面 270px ──────────────────────────────────────────────────────────┐ +┌─[B] 战斗画面(高读布局表) ──────────────────────────────────────────────────┐ │ /小人\ 第 3 轮 · 挖掘中 伏×2 伏×2 │ │ (落影) [ 兑现演出区 ] /蛆虫\ /蛆虫\ │ │ HP▓▓▓▓░ (结算期: 光带→弹道→受击) ①HP▓▓▓░ ②HP▓▓░░ │ @@ -209,8 +206,7 @@ │ ├─ 结算明细带 ────────────────────────────────────────────────────────────┤ │ │ │ ▸上轮: 主角攻击3→蛆虫-3 | 攻击+50%(1结算) | 警觉+1×2 … [展开明细▾] │ │ # 2026-09-17 数值压缩批:UI 示意文本同步(atk 7→3〔地精格数÷3 + L1 锚行;UX 示意按当前地精行值读〕、伏击 +3 → +1/层,幅度参考 data/tables/) │ └────────────────────────────────────────────────────────────────────────┘ │ -├─[C] 角色信息 240px ───┬─[D] 扫雷图 ~1036px ──────────────────────────────────┤ -│ 548px │ 548px │ +├─[C] 角色信息 ─────────┬─[D] 扫雷图 ───────────────────────────────────────────┤ │ ┌──────────────────┐ │ ┌─────────────────────────────────────────────────┐ │ │ │ 攻击 6 (+50%) │ │ │ AP ●●●●●○○○ 5/8 RAP ▓▓▓░ 3/8 │ │ │ │ 护甲 AC 12 │ │ │ [⏹停手] [?图例] [↻刷新 8|剩2] │ │ @@ -232,7 +228,7 @@ | State / Variant | Trigger | What Changes | |---|---|---| | **挖掘阶段(默认态)** | 轮次开始 / 结算完毕回 Active 相位 | B 区敌人待机(意图徽标全程可见——敌人系统 Rule 8⑤),D 区棋盘可交互,AP 条点亮;能量 2/10,唯悬停呼吸微光在动(§2.1) | -| **结算阶段** | round_end 触发(AP 尽/停手/清图) | D 区锁输入(棋盘去饱和 + 金橙色相偏移,明度不变,数字保持全对比);B 区播放五段编排演出(授予段 → 增益/减益段 → 战斗段 → 衰减段 → 判定段,战斗结算 段序冻结);明细带展开 84px 逐行滚动;阶段指示→"结算中";能量 7/10 | +| **结算阶段** | round_end 触发(AP 尽/停手/清图) | D 区锁输入(棋盘去饱和 + 金橙色相偏移,明度不变,数字保持全对比);B 区播放五段编排演出(授予段 → 增益/减益段 → 战斗段 → 衰减段 → 判定段,战斗结算 段序冻结);明细带按结算期档展开(高读 `log_band_h_settle`)逐行滚动;阶段指示→"结算中";能量 7/10 | | **清图瞬间** | 全部安全格开完 | 金粒喷泉 + 彩纸 3–5s 即收(§2.3);清图奖励行强调呈现(H2,地图战斗资源×④——金框高亮行);随后换新图 install | | **完美封印高光** | 战斗结算高光判定(全图标中/零误标类) | 全屏喝彩级反馈(§2.2 最高档):金光带加倍扫射 + 「完美封印 ×2」横幅——P2 爆发兑现节点(创意风险 #2 落点) | | **封印标中高光** | 封印判定·标中 | 该印记化暴击弹道加重 + 明细行金框——chord 缺席的即时兑现补偿(创意风险 #3 落点) | diff --git a/reports/iter45-停机呈报-断点域拆件规格缺口-2026-10-30.md b/reports/iter45-停机呈报-断点域拆件规格缺口-2026-10-30.md new file mode 100644 index 00000000..55ba03c1 --- /dev/null +++ b/reports/iter45-停机呈报-断点域拆件规格缺口-2026-10-30.md @@ -0,0 +1,38 @@ +# 停机呈报——迭代 45 卡②「gdstyle 尾波补件批」T2 断点域拆件规格缺口(上游缺陷移交) + +> 接收方:需求卡片 `reports/需求卡片-gdstyle尾波补件批-2026-10-29.md` T2(上游=写卡段/设计段);对应待办清单条目「gdstyle 尾波补件批——悬停域与断点域拆件」。 +> 状态:卡② T0 完成(三键实测 32/27/28 与卡面一致、file:line 零漂移、基线无两族函数级键);T1 board_hover 半边硬前置=卡①合回(卡① 已因 L3③ 定谳停机)→ 不可开工;T2 断点域拆件发现规格缺口 → 停卡呈报。 + +## 缺口本体 + +卡片 T2 与第 12/13 节申报:函数族 9 个(`_snapshot_breakpoint`/`_bp_parts`/`_bp_read`/`_bp_strategy`/`_bp_read_int`/`_resume_ledger`/`_resume_curio_state`/`_resume_params`/`_resume_counters`)**迁出且逐字搬运**,新件构造=引用束注入(db、rng、主角账三件 stats/wallet/journal、curio/stop/bank/loadout——卡片 T2 明列,architecture.md v1.26 :113 行同)。 + +实读九函数 bodies(game/core/adventure_runner.gd 现行行号): + +| 迁移函数 | 改写的宿主留守成员/调用(不在引用束内) | +|---|---| +| `_snapshot_breakpoint`(:571) | `state != "running"` 守卫(host state 属性) | +| `_bp_parts`(:583) | `level_index`(int)、`master_seed`(int)、`adventure_counters`(Dictionary 但 start_adventure :119 有重绑定)、`_runner`(LevelRunner 引用) | +| `_bp_read`/`_bp_strategy`/`_bp_read_int`(:636/:646/:651) | 无——纯函数,只读 BREAKPOINT_FIELDS 与入参 | +| `_resume_ledger`(:182) | `summary`、`levels_total`、`level_index`(+_pending_next_level 属六成员之一) | +| `_resume_curio_state`(:193) | `_reset_curio_state()`(宿主函数——内含 `adventure_counters = {}` 宿主成员重绑定) | +| `_resume_params`(:218) | `_shop_mode`、`_treasure_unlocked`、`_attunement`、`_tree_rules`、`_attune_refresh_x_total()`(宿主函数) | +| `_resume_counters`(:237) | `adventure_counters` | + +约束:breakpoint_store 为 RefCounted、宿主亦 RefCounted——**件不能反向持宿主引用**(强引用成环泄漏;code-conventions §4 S6「core↔core 连信号一律方法 Callable,禁 lambda 捕获 self(RefCounted 成环)」同源)。且上述宿主成员全为**重绑定**(`= params.get(...)`、`= {}`)而非原处突变,连 Dictionary/Array 引用共享也不可用。六成员中的值类型成员(`_pending_next_level` bool、`_last_treasure_cleared` int)由宿主函数(`continue_to_next_level`/`_on_level_finished`/`_settle`)读写,迁入件后宿主侧仅可改址经件读写(机械改写)。 + +结论:**「九函数迁出+逐字搬运+resume_adventure 留宿主薄壳」三条同时成立不可满足**——四 `_resume_*` 与快照两函数各含宿主留守成员改写,逐字搬运入件即需宿主回引(禁);留在宿主则违反「迁出」;拆开则违反「逐字搬运」且「薄壳」变厚。卡片与 architecture 行均未给宿主状态的访问机制(getter Callable / 逐调传参 / 语句分家三种皆未指定)。 + +## 两种可行读法(均需卡片授权,超代拍板白名单) + +- **读法 R1(快照件口径)**:store 收编六成员+BREAKPOINT_FIELDS+纯读侧三函数(逐字)+快照两函数(宿主输入逐调传参:state/level_index/master_seed/runner/counters,body 其余逐字);四 `_resume_*` 留宿主、store 自有成员读写改址经件。最小改码、行为零变化最易证;偏差=「回放回填」未归件(architecture :113「回放回填」句落空)。 +- **读法 R2(整族归件口径,建议案)**:store 收编六成员+BREAKPOINT_FIELDS+纯三函数逐字+快照两函数(宿主输入逐调传参)+四 `_resume_*` 的**件侧语句**(三件片段回填、curio 池还原、六成员改写);四函数的**宿主侧语句**(上表所列重绑定与两宿主函数调用)按原语句序吸收进 `resume_adventure` 壳与 `_reset_curio_state` 宿主半边——语句序逐步保形、行为零变化可证(27 键冻结不变);偏差=四函数非整体逐字搬运(按所有权缝语句分家)、「薄壳」吸收约 12 行宿主侧语句。机制先例=CurioStop 收 `_snapshot_breakpoint` 方法 Callable(adventure_runner.gd:56-57)——宿主方法 Callable 注入件是库内在役安全形态。 +- 两读法 store 类变量均为 6+1 束 ≤15;adventure_runner 类变量均 28→22(键账预期不受读法影响)。 + +## 建议 + +按 R2 授权复工:卡片 T2 第 2 条改述为「函数族迁出——纯读侧三函数与快照两函数逐字(快照宿主输入逐调传参);四 `_resume_*` 按所有权缝语句分家:件侧语句迁入 store、宿主侧语句按原序吸收进 resume_adventure 壳,27 键冻结与语句序零变化」。若用户更重最小改码则裁 R1。裁后由写卡段出卡片修订版(v1.1)再复工;待办清单条目状态建议回退段=「已写卡(修订中)」。 + +## 复工所需 + +用户裁决 R1/R2(或另行给出机制);卡片修订落 v1.1 后 T2 复工。T1(board_hover)另候卡①闭合。 diff --git a/reports/iter45-停机呈报-潜伏红定谳绿-2026-10-30.md b/reports/iter45-停机呈报-潜伏红定谳绿-2026-10-30.md new file mode 100644 index 00000000..7cc2396a --- /dev/null +++ b/reports/iter45-停机呈报-潜伏红定谳绿-2026-10-30.md @@ -0,0 +1,29 @@ +# 停机呈报——迭代 45 卡①「呈现层状态件批」T0 潜伏红定谳=绿(L3③) + +> 接收方:需求卡片 `reports/需求卡片-呈现层状态件批-2026-10-29.md` §10 L3③ 的裁决请求(用户)。 +> 状态:卡① T0 全项完成,按卡片预设停机点停机;卡② breakpoint_store 半边无此前置、继续施工。 + +## T0 完成记录 + +1. **前置确认**:迭代 42 已合回 master——`_build_cell_unit`(board_view.gd:249/:256)与五段 `_paint_cell`(:623-627 调用链、:634/:675/:704 段函数)在盘。 +2. **键账双读数**:board_cell_unit.gd 宿主 6+inner 27=33 声明、gdstyle 闸账 30;standee_body.gd 宿主 6+inner 25=31 声明、闸账 19——与卡片/设计文档申报逐一吻合,截断口径欠估照旧。基线两文件仅此两条类级键、无函数级键(迁移函数零超标键前提成立)。 +3. **board_view 写入面重锚(五段新分布)**:全部写入点形态仍为 `u.st.X`,行号整体下移——set_world_font :185、set_cell_area :204、rebuild :258/:259/:261/:268、悬停面 :517-539、路径预览 :554/:559、封印槽 :616/:620、ink 段 glyph/glyph_color/plate :661-:669、base 段 :699-:700、facade 段 :705-:738、overlays 段 :749-:763、fog 段 :774/:776、glow 同步 :806、接触带 :818/:825/:842/:843/:848/:854、cell_rect_probe :929。与设计文档单格篇 §5.1 对账表逐行同形。 +4. **潜伏红定谳=绿**:ui_input_probe 实跑 exit 0,`[ui_input_probe] PASS` 十八断言全绿(含 case①②③⑭ 四处)。**四处断言现行读路径为 `u1.st.hl_visible`/`.st.hl_color`/`.st.dot_visible`/`.st.mutation_mark`(合法),不存在卡片 §3 所述「绕过 st 直读宿主成员」形态;探针内零残留直读。** + +## 定谳绿的事实成因(卡片成文后上游已修复) + +卡片 §3 潜伏红前提(探针直读 `u1.hl_visible` 绕过 st)写卡时成立,但当晚被修复: + +- 时间线:状态件合入 2026-10-29 01:37(eb9bb537,迭代 41 合并)→ 卡片成文 20:30(755dd823)→ 编排 21:58(833d483e)→ **迭代 41 测试债批 22:45(413124b0)把探针格面成员直读改址入 st 六处并跑绿 03/04/05 三闸**。 +- 即:潜伏红已被上游先行消解;卡片 §3 的时间线句「合入后未跑过」在写卡当晚已过时。 + +## 裁断请求(两读法与建议案) + +- **分歧点**:设计文档单格篇 §8.6(绿→「改址四处照做,结论记实现报告」即继续)与卡片 §10 L3③(绿→「停机呈报等用户裁决后继续」)处置不同,卡片为实现合同故按卡片停机。 +- **读法一(字面执行,本呈报所循)**:绿=证伪设计前提→停机等裁。 +- **读法二(事实校准)**:本次绿非「GDScript 取索引语义判断有误」,而是前提事实在卡后被 413124b0 改变——设计前提失效的方式是「上游已修复」而非「语义误判」;设计的拆分方案与改址义务不受任何影响(四个成员本批迁入 face,四处断言无论定谳红绿都必须改址 u.face.*,判据与期望值零变化)。 +- **建议案**:按读法二裁决「前提失效=上游已修复,不构成设计缺陷;改址四处义务不变,卡①复工」——复工后 T1-T4 按卡执行,T3 四处改址兼作本定谳的落码收口(其「存量红修复身份」不再适用,现状本就绿)。 + +## 复工所需 + +用户一句裁决即可(采纳建议案或另行裁)。复工点=T1 建件,T0 其余各项已闭合。 diff --git a/reports/iter45-反哺点-2026-10-31.md b/reports/iter45-反哺点-2026-10-31.md new file mode 100644 index 00000000..df019f00 --- /dev/null +++ b/reports/iter45-反哺点-2026-10-31.md @@ -0,0 +1,13 @@ +# 迭代 45 反哺点清单(2026-10-31) + +> 接收方:待办清单在册条目「零豁免五键清偿批」(卡①)与「gdstyle 尾波补件批」(卡②);落文归文档批(用户裁决后写入 `design/`,本批禁直改)。每条写清:哪个文件哪一节、改成什么、依据是什么。 + +1. **architecture.md「模块归属·呈现层」表 cell_base_layer/cell_mark_overlay 行(:169)**:行尾「实现批建件」状态句改「已建件(迭代 45)」;职责语句与成员数(12/13)与宿主 30→10 实现一致,零改述需求。 +2. **architecture.md「模块归属·呈现层」表 standee_vitals/standee_motion 行(:170)**:同上改「已建件(迭代 45)」;行内「真实 25 成员」「计数器留宿主 19→10」与实现一致(宿主终值 10)。 +3. **architecture.md「模块归属·呈现层」表 board_hover 行(:168)**:改「已建件(迭代 45)」;行内「11 函数族+2 成员」「_r0 留宿主」与实现一致;补充事实一句:构造引用束实为 7 项(cells/minesweeper/diggable+格命中换算/光标写入/hover_forbidden/chord_attempted 四 Callable)——卡片预估 5 项,逐字迁移最小必需面,依据=实现报告实现决定记录 6。 +4. **architecture.md「核心层」表 breakpoint_store 行(:113)**:改「已建件(迭代 45)」;补充事实:类变量 15 贴顶(六断点成员+九引用束成员解包为原名成员保迁移函数体逐字——依据实现决定记录 9);「resume_adventure 留宿主薄壳」句改述为「留宿主(壳+宿主侧回填语句——R2 所有权缝分家)」,依据=卡片 v1.1 与用户裁决。 +5. **architecture.md「gdstyle 计数截断缺陷登记」节(:325)**:登记态数字补清偿结果——board_cell_unit 30→10、standee_body 19→10 已随迭代 45 真实清偿(欠估口径旁证 33/31 声明实测吻合);「向 gdstyle 上游报 issue」仍在册待办。 +6. **architecture.md adventure_runner 行(模块归属·核心层)**:行内「收编 6 成员+函数族」的进行时表述可随 4 条一并换代为完成态;另 board_view 行的键账描述(类变量 32)可注终值 31、adventure_runner 28→23(留债只降不升,收账归人工 refresh 批)。 +7. **运行验证类(非 GDD)**:`tools/run_all_gates.sh` 02 关联档多套件词传参与 `game/tests/run_all.gd` --only 解析器不兼容(逗号整串不做切分,多词即零命中)——工具工程批候选,依据=实现报告 §5 遗留观察;归待办清单登记裁决,非文档落文项。 + +以上 1–6 为文档落文项;第 7 条为工具登记项(请用户裁决后归工程批或登记待办)。 diff --git a/reports/iter45-实现报告-2026-10-31.md b/reports/iter45-实现报告-2026-10-31.md new file mode 100644 index 00000000..14bfa8d9 --- /dev/null +++ b/reports/iter45-实现报告-2026-10-31.md @@ -0,0 +1,82 @@ +# 迭代 45 实现报告(2026-10-31) + +> 接收方:roadmap 迭代 45 行(呈现层状态件批+gdstyle 尾波补件批两卡)。卡片:`reports/需求卡片-呈现层状态件批-2026-10-29.md`(v1.0)、`reports/需求卡片-gdstyle尾波补件批-2026-10-29.md`(v1.1,2026-10-30 用户裁 T2 机制=R2)。工作区 iter45(自 14054d9d 检出),重塑后台账两笔卡提交(ca7ca992),原史留 backup/iter45-20261031-001705。 + +## 1. 各卡状态 + +| 卡 | T 段 | 状态 | +|---|---|---| +| 卡① 呈现层状态件批 | T0/T1/T2/T3/T4 | 全部完成收口(T1 建件与改址/T2 站桩两件/T3 探针改址/T4 键账对账) | +| 卡② gdstyle 尾波补件批 | T0/T1/T2/T3 | 全部完成收口(T1 board_hover/T2 breakpoint_store R2/T3 键账对账) | + +T0 定谳与两停机裁决:卡① 潜伏红 T0 实跑=绿(十八断言全绿),按 L3③ 停机呈报,用户裁「前提失效=上游已修复(413124b0),不构成设计缺陷,改址义务不变,复工」;卡② T2 规格缺口停机呈报,用户裁 R2 整族归件(卡片 v1.1,主区提交 df6cafcb)。两份停机呈报随批入库 `reports/iter45-停机呈报-*.md`。 + +## 2. 实际对照表(逐行;层级/真实入口/判据绑定面沿卡片申报,行号按本轮实测) + +| 行 | 需求点 | 实际改动 | 验收测试(名称+落点) | 真实入口 | 判据绑定面 | 结果 | +|---|---|---|---|---|---|---| +| V1 | 单格基座层域件 | cell_base_layer.gd 新建(12 成员+九函数+九常量+draw_base);board_cell_unit.gd 宿主 33→10+六步时序器;board_view.gd 基座域写入点改址 | render_gate 棋盘 golden 三张(board_L1/L2/L3);probe_gate --full(board_shot_probe 双帧取证);type_glow 单元套件 | BoardView.rebuild()→refresh() 真实场景帧 | golden 逐像素差异 0.00%(容差 ≤16/≤2%)=绘制命令流逐位;双帧取证 glow=4 非生效格零变化 | 绿(golden 三张 0.00%,render_gate exit 0) | +| V2 | 单格标识叠加域件+冻结面保留 | cell_mark_overlay.gd 新建(13 成员+六函数段+draw_centered_text 单点化);四冻结成员宿主原位;board_view 标识域改址+cell_rect_probe u.edge | player_copy_sweep_test.gd(wa8 :137-140 u.glyph/u.plate/u.glyph_color 直读);ui_input_probe case④b⑪⑮;run_all 02 选跑 | player_copy 夹具真实构建;ui_input_probe 合成 push_input | 冻结面直读断言零改动全绿;golden 三张 0.00%(雾层原位夹在 overlay_under 与 removed_dim 之间) | 绿(四套件全绿+probe_gate 全绿) | +| V3 | 站桩两状态件 | standee_vitals.gd/standee_motion.gd 新建;standee_body.gd 宿主 31→10+转调壳+tween 路径串改指;battle_stage_view 一行未改(实测) | standee_fx_sweep_test 全套(_intent_charge 直读、fx_probe().flash_count、enemy_id 解析);theme_projection_test 三条源码锚(GOLD_BRIGHT 顺位墨/HERO_BLUE_BRIGHT/GOLD_BRIGHT 护甲墨/_intent_charge = pid in CHARGE_SKILL_IDS 逐字);probe_gate --full fx_probe 段(碎裂 5/火花 6/闪白计数/三态切换/意图三档) | StandeeBody 公开方法面与 battle_stage_view 演出链;探针场景真实实例化 | fx_probe/intent_probe/hero_state_probe 出口逐键;源码锚 contains 断言逐字命中;tween 路径串由意图弹入与三态断言兜底 | 绿(两套件全绿+fx_probe 段全绿) | +| V4 | 潜伏红处置与探针改址 | ui_input_probe.gd 直读改址 u.face.*:四处断言(case①②③⑭,11 处)+case④b 封印纹理槽 st.tex_seal 两处(设计文档直读面清单漏计第五处,L1 就地修复) | ui_input_probe 全套改址后执行且绿;probe_gate --click --full 全绿 | ui_input_probe 合成鼠标事件→BoardView._gui_input() | 断言条件与期望值零变化只改读路径;probe_gate 三硬闸全过 | 绿(probe_gate 全绿,ui_input_probe PASS 十八断言) | +| 补件 V1 | 悬停域拆件 | board_hover.gd 新建(11 函数族+2 成员+引用束 7);board_view.gd 函数族与 :70-71 成员迁出、三入站口与 hover_probe 留宿主委托 | ui_input_probe 悬停三语义断言(case①②③)+ui_click_probe+type_glow_shot_probe;render_gate golden | 合成 InputEventMouseMotion/Button 经 _gui_input 入站口;hover_probe() 读面 | 探针可见性断言面(按卡①改型后投影面 u.face.* 口径);golden 三张 0.00% | 绿(probe_gate 全绿+golden 8 屏 OK) | +| 补件 V2 | 断点域拆件 | breakpoint_store.gd 新建(R2:六成员+27 键+九函数归件);adventure_runner 断点函数族与 6 成员迁出(件侧语句入 store、宿主侧语句按原语句序入壳) | breakpoint_resume_test 全套(:186 改址 BreakpointStoreScript.BREAKPOINT_FIELDS 后 27 键断言面);save_rng_roundtrip_test;cross_system_flow_test(含 _feats_breakpoint_roundtrip) | AdventureRunner.resume_adventure()/start_adventure() × SaveManagerCore 断点域 | 断点快照往返逐键断言面(键名/策略/键序零变化);RNG 回放同序取号 | 绿(三套件全绿+冒烟 15 项 0 失败) | + +孤儿断言:无(零新增断言、零改名,两处既有断言读路径改址均挂 V4/补件 V2 行申报)。测试削弱:仅卡片第 15/14 节申报的两处读路径改址+一处漏计补改址,判据零变化。全部断言在当轮真实跑批执行且通过(孤立验证各 T 段留痕于提交信息;probe_gate/render_gate/run_all 回执与日志在案)。 + +## 3. 独立验收审计结论 + +**通过(可合回),零缺漏**——审计报告 `reports/iter45-验收审计-2026-10-31.md`(未参与实现的独立子代理执行:对照表六行逐行 grep 核实+九份跑批日志全绿核对+真实入口代码级核实+源码锚逐字+BREAKPOINT_FIELDS 与 master 旧表机械化 diff 零行+测试削弱与两卡申报逐字相符+三函数零漂移抽查+键账直数与 §5 表逐格一致+终树与合并态零 diff+独立复跑 ui_input_probe exit 0)。两条不阻塞注记:A——type_glow_shot_probe 系窗口化人工取证探针非闸件,V1 行归属表述已按审计修正,其取证语义由 board_shot_probe 双帧+golden+type_glow 单元套件 48 检查承接;B——tween 路径串实落为目标对象换代+裸属性名(与卡面「mo._intent_scale」句同义异形,全仓零字面绑定面,意图弹入与三态兜底断言实跑绿)。 + +## 4. 实机目检总清单(登记项,真人检测只登记不阻塞) + +1. 棋盘悬停三语义(光标/目标格边框/路径预览点迹)实机抽验——ui_input_probe 十八断言已绿,登记可选目检。 +2. 站桩意图三档动画与主角三态切换实机观感——fx_probe 断言已绿,登记可选目检。 +3. 单格六步时序重排后整帧观感——golden 三张 0.00% 已证逐位一致,登记为「零预期差异」确认项。 +(登记动作归批后收尾/文档批入体验验证清单;本批义务以本清单登记为了结。) + +## 5. 遗留读数义务与键账终值(留债口径) + +| 键 | 登记值 | 终值 | 口径 | +|---|---|---|---| +| board_cell_unit max-class-variables | 30 | 10 | 清偿(10 < 30 改小不红;基线收账归用户发令人工 --refresh --force) | +| standee_body max-class-variables | 19 | 10 | 同上 | +| board_view max-class-variables | 32 | 31 | 留债只降不升(+1 为 _hover_comp 件引用成员) | +| board_view max-public-methods | 27 | 27 | 持平(全为契约面) | +| adventure_runner max-class-variables | 28 | 23 | 留债只降不升(+1 为 _bp_store 件引用成员;约 22 预期+件引用=23) | +| 六新件(cell_base_layer 12/cell_mark_overlay 13/standee_vitals 12/standee_motion 11/board_hover 9/breakpoint_store 15) | 无基线键 | 全部 ≤15 阈内零新键(store 15 贴顶禁再增) | gdstyle 单文件直跑零命中实测 | + +遗留观察(工具面,非本批范围):`tools/run_all_gates.sh` 02 关联档以逗号连接多套件词传单个 `--only=a,b` 参数,而 `game/tests/run_all.gd` 解析器不切逗号(多词整串做子串匹配→零命中 quit(2))——本轮验证以多 `--only=` 旗标形态绕过;合回后 CI 跑全量档不经此路径,不受影响。建议工程批统一(闸脚本改传多旗标或解析器补 split),登记待办由用户裁决。 + +## 6. 实现决定记录 + +1. **draw_glyph_layer 增 plate 第 5 参**:设计文档单格篇 §2.1「plate 绘制侧零消费」系 413124b0(迭代 41 测试债批)恢复 `if plate:` 守卫之前的过时实查——现行码守卫在位,迁出即随行,否则 dungeon 数字一律垫牌(golden L1 将漂移 2.74%,正是 413124b0 修过的缺陷)。保零漂移优先于设计文档过时细节。 +2. **探针第五处改址**:设计文档单格篇 §1.4 直读面全清单漏计 case④b 的 `st.tex_seal` 两处(其「其余成员全仓零外部读方」复核有漏);实跑暴露脚本错误挂死,按卡片 L1(改址漏改就地修复)改址 `u.face.tex_seal`,判据零变化。 +3. **st/mo 类型化**:宿主成员以 preload 常量作类型注解(`var st: _VITALS`)——无类型则 `bar_w * st.hp_value` 等 `:=` 推断失效(S9 同尺度编译错);cell 件 base/face 无推断消费点保持无类型。 +4. **HeroState 枚举与 _HS_NAME/_HS_VALUE 随三态机归 standee_motion**:三态切换是 motion 职责语句内域;全仓 grep 零外部消费实测(外部 String 契约经 register/set 形参不变)。 +5. **motion.set_portrait_texture 三参无默认**:box 必传(宿主壳恒传),避免字面量默认值二写。 +6. **board_hover 引用束实为 7 项**:卡片约 7 预期=cells/minesweeper/diggable+光标写入+hover_forbidden——实际另需 _cell_at 命中换算与 chord_attempted 发射两 Callable(11 函数逐字迁移的最小必需面),单字典注入 9 成员在预算内;minesweeper 每战重绑由 rebuild 同拍回写件成员。 +7. **悬停常量处置**:COL_HL_TARGET/CURSOR_DIG/CURSOR_MOVE_SEM/CHORD_WINDOW_MS 仅悬停函数消费→随迁;COL_SEAL 双侧服役(宿主 :658 留守)→双侧各自 alias UiKit 单源零二写。 +8. **board_view 31/adventure_runner 23**:较卡面「约 30/约 22」各+1,来源=拆出件引用成员(_hover_comp/_bp_store),留债「只降不升」口径达成。 +9. **breakpoint_store 引用束解包为原名成员**(db/rng/_stats/_wallet/_journal/_curio/_stop/_refresh_bank/_loadout,6+9=15 贴顶):保迁移函数体逐字(成员名与宿主侧原名一致);快照宿主输入 state/level_index/master_seed/runner/adventure_counters 逐调传参(5 参合规上限内),件禁反向持宿主(RefCounted 成环)。 +10. **_bp_read_int 零调用者随族迁移**:迁移前实查无调用点(疑历史遗留),逐字搬运保现状,零行为面。 +11. **卡② v1.1 修订**:T2 机制经停机呈报用户裁 R2 后由本会话执行写卡职能落 v1.1(主区 df6cafcb)——用户裁决链完整。 +12. **新增件 .uid 边车随各卡末笔入库**(六件)——.gd/.uid 同步纪律。 +13. **适配本地 CI 换代**:批末不在工作区跑全量域闸(旧协议作废)——收口=冻结→并 master(rebase 重放形态,master 尖为分支祖先且台账无合并笔,终树与合并态逐字节一致经断言)→重塑→独立审计→主区 --no-ff 合回→post-merge 钩子自动 CI 全量→ci-status.json 绿判收口。 +14. **批件四件改主区直提**:工作区批件提交被 08c 流水线闸拦(非本批红——master 侧 7a2d19fd 补提交的「棋盘格边长口径收口批」卡片申报能力行在该卡并行会话未提交的 README 脏件里,工作区读树即红、主区读盘绿);reports/ 属文档面,按车道铁律主工作区直改+直提合法,改在合回后主区提交(与验收审计报告同笔)。 + +## 7. 能力行核对(收尾义务) + +`game/tests/README.md` 能力表核对:本批零新增能力、零退役、零改名——「棋盘悬停反馈」「地形瓦片套与格面数字可读」「站桩敌人呈现与结算演出落点」「UI 全局主题与按钮五态」「玩家面文案与危险格格面字形」「未开格类型微光」「断点片段往返与续玩幂等」「旧档迁移链与断点续玩零跳号」各行的真实入口与代表用例名与落地一致(ui_input_probe.gd:_ready/player_copy_sweep_test/theme_projection_test/standee_fx_sweep_test/breakpoint_resume_test 等全数在库原名)。核对通过,零回表需求。 + +## 8. 合回落地与收口阻塞记录(2026-10-31 00:34 时点) + +合并 f817ab2d 已落地(两笔卡提交 e7920e8f/9b0b164d,树与已验证合并态逐字节一致)。post-merge CI 首跑 **verdict=red(23 秒快速失败)**,三红闸归属核验: + +| 红闸 | 红项 | 归属 | +|---|---|---| +| 08c 流水线闸 | 待办清单.md:5 来源词「批次移交;原三点之一」不在四选一 | **并行会话未提交脏改**(该行其把迭代 43 批后待裁三点改两点时在来源词追加了非白名单后缀;已提交态无此后缀)——本批零涉 | +| 08e 能力审计 | design/gdd/ux/battle.md:148 代码路径 `.py`(禁写实现细节) | **并行会话未提交脏改**(battle.md 系其在飞件;已提交态 :148 无此内容)——本批零涉 | +| 10 熵增闸 | CI 时点瞬态红;直跑复验 PASS(六查全过) | 已消解 | + +代码域闸因文档域快速失败未及运行——本批代码的合回后全量验证待两处并行脏件由其归属会话修复(或用户裁决处置)后 CI 追绿时兑现。批件五件(本报告/反哺点/审计报告/两停机呈报)主区提交同被 08c 红拦(git add 已就绪,红解即提)。工作区清理(git worktree remove+删分支)待 CI 绿后执行。 diff --git a/reports/iter45-验收审计-2026-10-31.md b/reports/iter45-验收审计-2026-10-31.md new file mode 100644 index 00000000..c3bae8ee --- /dev/null +++ b/reports/iter45-验收审计-2026-10-31.md @@ -0,0 +1,46 @@ +# 迭代 45 验收审计报告(2026-10-31) + +> **接收方**:迭代 45 合回门。审计员=未参与实现的独立会话,只读审计;工作区 `D:\code\g-plan2-iter45`(分支 iter45,两笔卡提交 ca7ca992/7f2da008,父=master 尖),主区只读参照。审计对象=卡①呈现层状态件批+卡②gdstyle 尾波补件批,输入=两卡(§9/§15、§8/§14)、实现报告(§2/§6)、净变更 diff、九份跑批日志(/tmp)。审计动作=grep 定位+diff 比对+日志核对+一次最窄复跑;未跑其他闸、未改任何库内文件。 + +## 0. 证据基线 + +- 净变更面:`git diff master...iter45-merge-state` 恰 18 文件(六新件+四宿主+ui_input_probe+breakpoint_resume_test+六个 .uid),其余全部测试/探针/文档文件零改动;`git diff iter45 iter45-merge-state` = 0 行(分支终树与合并态逐字节一致,重塑前跑批证据跨重塑有效)。 +- 跑批日志(/tmp,九份全绿):render_t3/render_c2t1(render_gate 全绿,golden 三张 0.00% 各现两遍)、probe_t3b/probe_c2t1(probe_gate 全绿,ui_input_probe 十八断言 PASS、fx_probe PASS、ui_click_probe 问题=0)、runall_t1b(4 套件:terrain 19/type_glow 48/theme_projection 164/player_copy 22 全绿)、runall_t2b(2 套件:standee_fx_sweep 18/theme_projection 164 全绿)、runall_c2t2(3 套件:breakpoint_resume/save_rng_roundtrip 17/cross_system_flow 22 全绿)、smoke_merge(15 项 0 失败,重塑后)、uip_rebase(十八断言 PASS,重塑后)。 +- 审计员独立复跑(重塑终树):`--headless res://probe/ui_input_probe.tscn` → exit 0+「十八断言全绿」PASS 行(日志 /tmp/audit_uip.log)。 + +## 1. 对照表逐行核对(实现报告 §2 六行) + +- **V1 单格基座层域件——通过(附注记 A)**。golden 三张真实成立:render_t3.log 与 render_c2t1.log 各有三行 `[golden] board_L1_dungeon.png — changed=0.00%(容差 ≤16 差/≤2%)OK`(L2/L3 同)+`[golden] PASS(3 屏黄金图对比全过)`+`[render_gate] 全绿`;board_shot_probe 双帧取证 PASS 两遍(`非生效格零变化/生效格内缘带外零侵入`,L1 glow=2/L2、L3 glow=4)。六步时序器在 board_cell_unit.gd `_draw`(:56-63):base.draw_base→face.draw_marks→face.draw_glyph_layer→face.draw_overlay_under→_draw_fog_layer→face.draw_removed_dim,与卡§8 T1 序逐字对齐。注记 A:报告 V1 行验收测试写「probe_gate --full(board_shot_probe/type_glow_shot_probe)」——board_shot_probe 实属 render_gate(render 日志在案),type_glow_shot_probe 当轮未执行(非任何闸件:tools/ 全 grep 零挂载;头注自述「必须窗口化运行,headless 抓帧恒空」);其取证语义(禁侵/带外零侵入)由 board_shot_probe 双帧+golden 0.00%+type_glow 单元套件 48 检查全绿+ui_input_probe case⑰ 承接,判据面无缺口,属报告单元格表述不准+人工取证未登记,不阻塞。 +- **V2 单格标识叠加域件+冻结面保留——通过**。player_copy_sweep_test.gd:137-140 三断言在位(u.glyph=="危"/u.plate==true/u.glyph_color==RED_MINE,〔wa8〕尾缀),runall_t1b 该套件 22 检查全绿;ui_input_probe case④b/⑪/⑮ 冻结读面(glyph/fog_state)在 probe diff 中零触碰(全 diff 仅 13 处 st→face 读路径行);probe_gate 两日志全绿。 +- **V3 站桩两状态件——通过**。standee_fx_sweep_test :88 enemy_id/:97 flash_count/:116 `s1._intent_charge` 直读断言在位,runall_t2b 18 检查全绿;theme_projection_test :676-684 四条 contains 断言在位(164 检查全绿);probe_gate fx_probe 段 PASS(碎裂5/火花6/闪白/三态/意图三档)。battle_stage_view.gd 不在 18 文件 diff 清单=一行未改证实。 +- **V4 潜伏红处置与探针改址——通过**。改址落地:ui_input_probe.gd :234-235(u1.face.hl_visible/hl_color)、:243-244、:250、:374-379,全 diff 恰 13 处读路径(11+case④b tex_seal 两处 :269/:270,与「漏计补改址」申报数一致),u.st. 残留 grep=0;断言条件与期望值文本逐字未动(见第 3 节);probe_gate 两日志全绿;审计员独立复跑 exit 0+PASS。 +- **补件 V1 悬停域拆件——通过(附注记 A 同条)**。ui_input_probe 悬停三语义断言(case①②③)在位且两轮 probe 日志 PASS;ui_click_probe 两日志「问题=0」;render golden 三张 0.00%;board_hover.gd 在库(9 var),board_view 三入站口委托与 hover_probe 留宿主经 diff 核实(board_view 仅函数族与 :70-71 成员迁出+改址)。 +- **补件 V2 断点域拆件——通过**。breakpoint_resume_test 真实入口核实:全程 `AdventureRunnerScript.new(db, rng)` + `set_save_manager(sm)` + start_adventure/resume_adventure 真调(:28-:186 十个 runner 实例),非直调内件;runall_c2t2 三套件全绿(breakpoint_resume PASS 行+「断点往返/续玩确定性/幂等…全绿」);smoke 15 项 0 失败。 + +## 2. 判据绑定面抽查 + +- **golden 零差异(卡①)**:第 1 节 V1 行已引——三张 0.00% 行在两份 render 日志真实出现,非报告转述。 +- **theme_projection 三条源码锚(卡①)**:standee_body.gd 逐字 present——`_intent_charge = pid in CHARGE_SKILL_IDS`(:154)、`HORIZONTAL_ALIGNMENT_LEFT, -1, UiKit.FS_HINT, UiKit.GOLD_BRIGHT`(:405)、`col = UiKit.HERO_BLUE_BRIGHT`(:471)、`col = UiKit.GOLD_BRIGHT`(:473)。 +- **27 键冻结(卡②)**:`git show master:game/core/adventure_runner.gd`(:539-569)与 breakpoint_store.gd(:16-46)两段常量机械化抽取比对——各 28 条 `"键": {"strategy": "…"}`、diff 零行=键名/策略/键序逐键一致。计数注记:master 实表 28 键(27+gain_journal,前者批次已声明的唯一扩展;测试冻结清单 :186 段同 28 键口径),卡片「27 键」沿旧账,冻结判据不受影响。 + +## 3. 测试削弱核对——通过(零未申报削弱) + +`git diff master...iter45-merge-state` 全量 18 文件中测试面仅两个,逐一全文 diff: + +- ui_input_probe.gd:13 处 `u.st.X→u.face.X` 读路径替换, hunks 内断言条件(`not …hl_visible or …hl_color != UiKit.GOLD`/`!= UiKit.RED_FORBID`/`dot_visible` 计数/`mutation_mark` 两态/`seal_tex` 槽位)与期望值文本逐字未动;零删断言、零阈值改动、零扫描面缩小。与卡① §15 申报(4 处 11 读+漏计 2 读)数目与内容一致。 +- breakpoint_resume_test.gd:恰两行——新增 `const BreakpointStoreScript := preload(...)` 与 :186 承载换代(`AdventureRunnerScript.BREAKPOINT_FIELDS`→`BreakpointStoreScript.BREAKPOINT_FIELDS`),断言条件与冻结键清单文本零变化。与卡② §14 申报逐字相符。 +- 其余 66 套件文件与全部探针文件零改动(18 文件清单外无任何测试面)。 + +## 4. 非行为改动零漂移核对——通过 + +- **迁移函数逐行比对(三件抽查)**: + - `_draw_south_facade`(master board_cell_unit :352-366 → cell_base_layer :168-182):diff 全部行属申报内机械改写三形态——`st.facade_south`→`facade_south`、`st.edge`→`rect.size.x`(3 处)、`draw_rect`→`canvas.draw_rect`(3 处)+签名增 (canvas, rect) 形参;几何常量/色值/绘制序零变化。 + - `play_intent_motion`(master standee_body `_play_intent_motion` :213-227 → standee_motion :111-125):diff 属申报改形——`_intent_charge`→参 `charge`、tween 目标 `st`→`self`、`create_tween()`→`_owner.create_tween()`;各档时长/位移/缓动零变化。注记 B:卡面「tween 路径串改 "mo._intent_scale"」实落为「目标对象换代+路径串保留裸名」(与 master 实形 `tween_property(st, "hp_value",…)` 同构等价);全仓 grep「mo._intent_scale/st.hp_value」零测试/闸绑定字面串,卡片判据绑定面原文即「由意图弹入与三态断言兜底」且已实跑绿——判据无缺口,属卡面表述与实现的同义异形。 + - `_bp_read`(master adventure_runner :636-650 → breakpoint_store :196-210):含注释行逐字节相同(diff exit 0)。 +- **键账实测(grep 直数 top-level var,与实现报告 §5 表逐格一致)**:cell_base_layer 12(另 9 常量随迁=申报)/cell_mark_overlay 13/standee_vitals 12/standee_motion 11/board_hover 9/breakpoint_store 15/board_cell_unit 10(30→10 清偿)/standee_body 10(19→10 清偿)/board_view 31(32→31 留债)/adventure_runner 23(28→23 留债)。 +- **总判据**:golden 0.00%×3×两轮+既有断言面六套件全绿+probe_gate/render_gate 全绿+冒烟 15 项,日志在案(第 0 节)。 +- 申报内决定核对:draw_glyph_layer 增 plate 第 5 参(board_cell_unit :58 调用 5 参)=实现报告 §6.1 申报在案,理由(41324b0 plate 守卫恢复)成立,golden 0.00% 佐证零漂移。 + +## 5. 总结论 + +**通过(可合回)**——六行对照全绿、抽查判据面全部成立、零未申报削弱、零漂移证明在案;两条例外注记(A:type_glow_shot_probe 未执行属窗口化人工取证面+报告单元格闸归属笔误,判据面由 board_shot_probe/golden/单元套件完整承接;B:tween 目标对象换代与卡面路径串句同义异形,零字面绑定面)与两条观察(工作区未跟踪散件 game/tests/unit/presentation/tune_sim_batch_parity_test.gd.uid 非本批改动面、合回不受影响;八份日志产自重塑前原史——终树与合并态零 diff+重塑后 smoke/uip 复跑+审计员独立复跑三重兜底)均不构成缺漏。 diff --git a/待办清单.md b/待办清单.md index 51c3c1d9..4494c915 100644 --- a/待办清单.md +++ b/待办清单.md @@ -1,12 +1,12 @@ # 待办清单 -本清单是流水线的唯一登记处:要做的事先在此登记一条,随流水线段推进改状态,做完整条删除;各系统文档的「待办」节只留一行指路存根,不再自建条目。条目格式(标题=登记元数据含可选优先级,正文=实况/缺口/改动面/状态四属性)与状态机以 [doc-conventions §12.1](design/engineering/doc-conventions.md) 为权威。 +本清单是流水线的唯一登记处:以后才做的事在此登记一条,随流水线段推进改状态,做完整条删除(条目记进度,不是各段的开工前置);各系统文档的「待办」节只留一行指路存根,不再自建条目。条目格式(标题=登记元数据含可选优先级,正文=实况/缺口/改动面/状态四属性)与状态机以 [doc-conventions §12.1](design/engineering/doc-conventions.md) 为权威。 -#### 迭代 43 批后待裁三点——B 区高度对齐/名字行字号档位/换色常量退役(2026-10-30 登记,来源=批次移交) +#### 迭代 43 批后待裁两点——名字行字号档位/换色常量退役(2026-10-30 登记,来源=批次移交) -**实况**:证据=迭代 43 反哺点清单 1/8/10(已按吸收即死退役,git 历史可考)。①**B 区高度 270 vs 252**——battle.md 区表文 270、代码 252,18px 差异;样张按代码 252 出(样张反映实机)。②**站桩名字行 12px 档位归属**——standee_body.gd 名字行取 `UiKit.FS_CAPTION`(12px),art-bible §7.4 字号档位表下属「清单外 11–13px」。③**art-bible §4.1 换色合并残余三处**——`STAGE_BG` 换值(#3E342A→#3E362C)未执行;`STAND_STONE_RIM`(#C4AC84)仍被 board_cell_unit 口沿高光在役引用;`STAND_STONE_EDGE`(#5A4C3A)由地台缺位回退路径在役引用。 +**实况**:证据=迭代 43 反哺点清单 1/8/10(已按吸收即死退役,git 历史可考)。①**B 区高度 270 vs 252——已裁并落地(2026-10-30 用户裁)**:取代码标准 `stage_h`;布局几何(`stage_h` / `info_panel_w` / `ap_bar_h` / `log_band_h_dig` / `log_band_h_settle`)入驻 `game/data/tables/battle_layout.tres`,经 `ConfigDb.presentation.battle_layout` 单点读取;游戏代码、文档、样张工具三面改指该表,文档去数值化。②**站桩名字行 12px 档位归属**——standee_body.gd 名字行取 `UiKit.FS_CAPTION`(12px),art-bible §7.4 字号档位表下属「清单外 11–13px」。③**art-bible §4.1 换色合并残余三处**——`STAGE_BG` 换值(#3E342A→#3E362C)未执行;`STAND_STONE_RIM`(#C4AC84)仍被 board_cell_unit 口沿高光在役引用;`STAND_STONE_EDGE`(#5A4C3A)由地台缺位回退路径在役引用。 -**缺口**:三点各差一次用户裁决——①B 区高度对齐方向(改实装=需求改动走写卡/改文档=battle.md 区表落 252 归文档批落文);②名字行 12px 提档 `FS_HINT`(14,与顺位徽标同款)或增补装饰 caption 在册面;③三常量彻底退役与否(涉实装件改指与 art-bible §4.1 登记句换代)。裁后各归其段。 +**缺口**:余两点各差一次用户裁决——①名字行 12px 提档 `FS_HINT`(14,与顺位徽标同款)或增补装饰 caption 在册面;②三常量彻底退役与否(涉实装件改指与 art-bible §4.1 登记句换代)。裁后各归其段。 **改动面**:文档+游戏代码 @@ -252,13 +252,11 @@ #### 「封锁-蓄力」combo 设计素材(2026-10-07 登记,来源=会话提及) -**实况**:用户想法(暂不立件,素材登记)——两件套:件一=抬高刷新雷图代价(储备池 RAP 成本飙高)+ 刷新时解锁所有格子(全板开);件二=本回合留着 AP 没有刷新 → 获得减伤。联动=抬价逼留 AP、留 AP 给减伤、憋够一发全板解锁。我方补充登记五点:①形态骨架=「封锁-蓄力」combo 结构(抬高某动作代价封路 + 不做给补偿 + 憋到后的爆发);②件一=风险契约句式的扫雷侧版——碰撞点待裁:刷新开全板与清图判定/清图奖励/连锁展开的关系(算不算清图、发不发清图奖励);③件二词表可承载(on round_end when 本轮未刷新且余 AP≥X → 减伤/护盾),「本轮未刷新」事实=扩签候选;④归层按判定尺逐件裁(两件偏机制改写→专长域;但「刷新代价」是扫雷侧经济参数→秘宝域亦可);⑤防躺赢注记:憋的收益须小于正常挖格期望(否则最优解=永远不挖,玩法塌缩)。 +**实况**:换图系双基座七件设计定稿——掘进储能、折价换图、弃图轰击、换图蓄势、换图庇护、弃图休整、弃图回收;双基座允许叠加,后续效果在本轮五段结算内兑付,弃图回收按旧图探索进度发清图奖励。设计定稿=[奇物](design/gdd/systems/冒险循环/奇物.md) v1.2+[行动经济](design/gdd/systems/排雷循环/行动经济.md) v1.2+[战斗结算](design/gdd/systems/战斗循环/战斗结算.md) v1.3+[地图战斗资源](design/gdd/systems/战斗循环/地图战斗资源.md) v1.2。参考提案=[提案-弃图刷新系专长流派-2026-10-30](reports/提案-弃图刷新系专长流派-2026-10-30.md) v0.4;按用户要求保留为后续实现参考,不按「吸收即死」退役。需求卡片=[需求卡片-换图系双基座七件批-2026-10-31](reports/需求卡片-换图系双基座七件批-2026-10-31.md)。 -**缺口**:还差立项裁决(暂不立件)——若立项,先裁碰撞点与归层,再走机制设计讨论。 +**改动面**:文档+游戏代码 -**改动面**:文档 - -**状态**:待文档设计(备选) +**状态**:文档设计已闭合+已写卡 #### 袋装摇号(格面资源池结构备选——保底型增多后的重构方向)(2026-10-07 登记,来源=会话提及) @@ -337,14 +335,15 @@ #### 战斗区背景图替换——B 区舞台插画 + 临时光柱退役(2026-10-07 登记,来源=会话提及) -**实况**:B 区舞台现行=程序化平色底(`UiKit.STAGE_BG`,`battle_stage_view.gd:47`)+ **顶光柱氛围层**(`:55-63` 四柱,x 基准 110/900/1055/1210@1280,60 段叠层矩形自顶向下渐宽窄渐隐〔顶 α26→0〕,层序=bg < 光柱 < 世界)——二者均系 §6.1 方向稿的**临时占位**,用户口径「光柱只是临时方案,换正式战斗背景后效果更好」。正式件已立资产契约:`stage/stage_bg.png`(源 1280×270,B 区全高含明细带底;三关换挡走 §4.3 `wall_ambient` tint 槽,不按板出三张),属审计 P1-2 查得的「B 区舞台背景插画 0 张」缺口。**光柱在背景到位后顺带退役或吸收进背景绘制**(不再作为独立程序层)。**与立绘探顶解耦**:大体档「允许向上溢出盒顶 N px」的判定(2026-10-07 用户裁甲案)**不依赖光柱是否存在**,换背景零返工。 +**实况**:B 区舞台现行=程序化平色底(`UiKit.STAGE_BG`,`battle_stage_view.gd:47`)+ 四柱光柱层(`:55-63`)——临时占位。美术设计已落:`design/art/art-bible.md` §6.1(v3.25)定场景构成与图层归属——背景层 `scene_stage_bg.png`(顶部空区+远景天然洞壁,不画近景地面;源 = 基准屏宽 × `stage_h`,读 `battle_layout.tres`)+ 连续地面层 `scene_stage_ground.png`(泥土/砂砾/碎石;源 = 基准屏宽 × `ground_h`,跨关恒定、不吃 tint)+ 现有小石台 `scene_stage_plaza.png`;逐条要素、分层提示词与验收 = `design/art/battle-stage-prompts.md` v1.0;`art-prompts.md` §5.1 已转指路;路径与清单同步 `asset-path-map.md` / `art-assets-checklist.md`。光柱由背景绘制吸收,资产到位后四柱程序层退役(代码批)。**与立绘探顶解耦**:大体档「允许向上溢出盒顶 N px」的判定(2026-10-07 用户裁甲案)**不依赖光柱是否存在**,换背景零返工。 -**缺口**:还差出图前置条件的达成——立绘定档与站桩重排实装批的 **C0 盒高账定案后再出图**(避免 B 区高度/构图二次返工);开工=用户点名。 -- 相关文档:[art-bible](design/art/art-bible.md) §6.1(资产契约)+ §8.3 归档纪律 · 资产管线批;出图工单归 [art-assets-checklist](design/art/art-assets-checklist.md) / 实装批任务书 +**缺口**:还差首张背景试片与风格前缀确认(确认后美术设计闭合),随后是背景/地面出图、后处理与入包;连续地面层接线、`ground_h` 布局字段与四柱光柱退役属游戏代码改动,走需求卡片+迭代。 +- 相关文档:[art-bible](design/art/art-bible.md) §6.1(v3.25)· [battle-stage-prompts](design/art/battle-stage-prompts.md) v1.0 · [art-prompts](design/art/art-prompts.md) §5.1(指路)· [asset-path-map](design/art/asset-path-map.md) · [art-assets-checklist](design/art/art-assets-checklist.md) +- 工作区与过程稿:`artwork/2026-10-30-战斗区背景/`(要素草案已被本卡吸收,出图前作参考) -**改动面**:美术素材+游戏代码 +**改动面**:文档+美术素材+游戏代码 -**状态**:待美术设计 +**状态**:美术设计中 #### 棋盘封印印记图形换代——现件仍是扫雷旗形,改法阵或锁链待设计(2026-10-30 登记,来源=会话提及)