docs(迭代26 T6): 文档同步闸+实现报告+roadmap 换代

- 06 五处状态:按钮矩阵/纹理过滤/<4.5:1/元素细节 四条销号(状态标注+去向),氛围层改记
  「九宫格半存续」(光柱半已修);需求卡片条标已收口;新增「迭代26 GDD 反哺点四条」专条
- 08 升 v1.4:三·界面按钮矩阵行→在役;五·表现三行回填(纹理过滤→在役/氛围层→部分在役
  注明九宫格半未结/元素细节→在役)
- 07 增 ㉕ 逐屏巡检目检节(按钮五态/焦点环/Nearest 巡检/布局/诊断钮清零)+v0.9 版本行
- roadmap 迭代26 行→已全批入库;实现报告=design/qa/iter26-实现报告-2026-10-14.md
- 批末重闸全绿:冒烟 1055/0+run_all 25 套+probe click/full+render_gate golden 0.00%+
  doc 三闸/熵增对基线零新增(lint FAIL 集=基线三件;R3 措辞已规避 08 转绿)
This commit is contained in:
DKChan committed 2026-10-14 06:09:19 +08:00
1 parent 260c9bbd9e
commit 900dfe9254
5 files changed
+147 -11

No files matched your search

+112
View File
@@ -0,0 +1,112 @@
# 迭代 26 实现报告——UI 交互与观感批(按钮五态矩阵 · 全局纹理过滤 · 观感四件)
- 日期:2026-10-14(单会话 /goal+iter U0 开工令交付)
- 需求卡片:`design/research/需求卡片-UI交互与观感批-2026-10-13.md` v1.2(零待裁点,开工门=U0)
- worktree:`g-plan2-iter26-ui`(分支 `iter26-ui-20261014`,基点 master 04ec217)
- 基线复读(主区 T0):冒烟 987/0 + run_all 25 套 + probe --click 全绿残留 0
- 批末闸:冒烟 **1055/0**(基线 987 + 本批 68 断言)+ run_all 25 套 + probe click/full + render_gate golden 0.00% + doc 三闸/熵增对基线零新增(详见 §三)
## 一、交付总览
| 卡 | 内容 | 状态 |
|---|---|---|
| T0 | 基线与枚举复核:§2 全部 file:line 开工复核(20+ 处全符);纹理过滤翻转面全枚举(显式 filter 13 处/无显式 3 处=白名单对象/.tscn 零纹理节点);按钮消费点枚举(四工厂 49 处调用全闭合);卡片 §2.2 枚举漏项勘误(12→13) | ✅ |
| T1 | 按钮五态矩阵:`ui_kit.gd` 三工厂五态统一管线(悬停=乙案 modulate 1.06 提亮/禁用=甲案本族底+α0.45 幽灵化/焦点=甲案 INK 2px 内缩 1px 环/危险钮补本族 pressed 深档);逐实例 override,主题层零新增 | ✅ |
| T2 | 全局纹理过滤:`project.godot` `default_texture_filter=0`(Nearest)+ vignette/gradient_base/beams 三件显式 LINEAR 白名单 | ✅ |
| T3 | <4.5:1 换墨:敌顺位徽标+重甲徽标换 GOLD_BRIGHT、魔法护甲徽标换 HERO_BLUE_BRIGHT、RAP 反馈行换 STONE_DEEP;机检断言锚定 | ✅ |
| T4 | 光柱连续 alpha:beams_rect 带内 0→0.05→0 三角过渡+纵向衰减上亮下暗(Q7 裁) | ✅ |
| T5 | 元素细节余②③:BCard 图标槽明度差降档(SLOT_BACKDROP_SOFT 柔和档);商店卡片区垂直居中;营地四栏等高(holder min 336+面板 FILL+锁文居中) | ✅ |
| T5b | 诊断转储钮退役:main.gd 卸载点删除+build_diag_button 工厂退役+转储入口迁调试浮窗(Q8 裁甲,dump_diagnosis 保留) | ✅ |
| T6 | 文档同步闸与全闸:06 五处销号/改写+反哺点新条;08 升 v1.4;07 ㉕ 登记;roadmap 行换代;批末重闸全绿;golden 0.00% 登记即结 | ✅ |
**契约遵守**:🔴 主题层零新增词条(冒烟双红线原样维持绿)· 🔴 零新美术素材(悬停=modulate 提亮,全部改动用既有贴图/程序化生成)· 🔴 棋盘战斗逻辑与棋盘几何零触碰(board_view/board_world 零改动)· 🔴 对比度硬指标(换墨三处 6.47/5.88/5.98:1,图标槽白图标 5.14:1 ≥3:1,机检锚定)· 🔴 旧实现同批清理(诊断钮卸载点真删、disabled=pressed 错配修正、悬停=常态图退役)。
## 二、落位明细
### T1 按钮五态矩阵(ui_kit.gd,+冒烟 35 断言)
- `_apply_button_skin` 五态统一管线:normal=button_stone 九宫格;**hover=常态图+modulate Color(1.06,1.06,1.06) 提亮**(乙案,与 primary_button 现行 `CANDLE.lightened(0.06)` 同纪律,零素材);pressed=button_stone_pressed;**disabled=本族底+modulate α0.45 幽灵化**(甲案,取代旧「disabled=按压图」错配);**focus=INK 2px 内缩 1px 环**(甲案,StyleBoxFlat 无底+负 expand margin 实现内缩,引擎 focus 样式盒叠加绘制不遮钮底)。
- `primary_button`:补 disabled(烛光黄族 α0.45)+focus 环+font_disabled_color(本族墨 α0.45);pressed/hover 承现行不动。
- `danger_button`:补本族 pressed(深红 `Color8(180,78,54).darkened(0.18)` 深档,旧承石纹按压图错配退役)+disabled 幽灵化+focus 环+font_focus/disabled。
- 新常量单点:`BUTTON_HOVER_LIFT`/`BUTTON_GHOST_ALPHA`/`BUTTON_FOCUS_RING_W`/`BUTTON_FOCUS_RING_INSET`+`_focus_ring_sb()` 工厂。
### T2 全局纹理过滤(project.godot + ui_kit.gd,+冒烟 6 断言)
- `[rendering]` 增 `textures/canvas_textures/default_texture_filter=0`。T0 枚举闭合:翻转面=九宫格 UI 皮(button_stone/panel_stone/border_stone)+主题 OptionButton 石纹样式盒与滑轨/勾选/箭头图标(全部像素风 UI 件,crisp 即意图);**无显式 filter 节点仅 3 处**(vignette/beams/gradient_base)挂显式 LINEAR 白名单;既有脚影/状态图标 LINEAR 不动。
### T3 换墨(ui_kit.gd 立 token + standee_body.gd/ap_bar_view.gd,+冒烟 9 断言)
- 新 token 两枚:`GOLD_BRIGHT` #E0B860(值=收益金 e0b860 同门,对舞台底 6.47:1)/ `HERO_BLUE_BRIGHT` #7EBAF0(5.88:1);GOLD_DEEP/HERO_BLUE 常量本尊不动(standee:199 意图判据等语义岗在役)。
- 顺位徽标①②③(13px 行原位)/重甲徽标/魔法护甲徽标换墨;RAP 反馈行 STONE_FAINT→STONE_DEEP(5.98:1,旧 2.9:1 越带)。
### T4 光柱(ui_kit.gd beams_rect,+冒烟 3 断言)
- 带内 alpha 0→0.05→0 三角过渡(带域 d∈[240,340) 中分)+纵向衰减 `v_fall=1-y/560`;连续 alpha(Q7 裁,与暗角/地图渐变保平滑同血统);filter=LINEAR 白名单随 T2 落。结构断言:带心峰值≈0.05(按 8bit 截断量化校验)/连续过渡像素 41373 个/上半亮度>下半 2 倍。
### T5 元素细节(ui_kit.gd/shop/camp,+冒烟 8 断言)
- ②`SLOT_BACKDROP_SOFT` #806A4E 柔和档(对米色卡面 3.69:1,旧深档 8.53:1;白图标 5.14:1 ≥3:1 硬约束);仅 BCard 图标槽换档,B 区状态槽仍用深档(诊断订正③范围)。
- ③商店 `_cards_box` ALIGNMENT_CENTER(三选一同款形制);营地四栏等高=forge/ws/atlas 三 holder 统一 min 高 336(与树/秘宝匣 scroll 对齐,锁定态仅锁文也撑栏高)+四面板纵向 SIZE_FILL 同步拉伸+三处锁文 SHRINK_CENTER。
### T5b 诊断钮退役(main/ui_assembler/debug_overlay + ui_tune_probe,+冒烟 7 断言)
- main.gd 卸载点(build_diag_button 挂载+连接)删除;`build_diag_button` 工厂退役;连接随迁=`debug_overlay.diagnose_requested`→`_on_diagnose_pressed`(dump_diagnosis 卡死取证功能保留)。
- debug_overlay 新增 `diagnose_requested` 信号+区块⑤「诊断转储·转储」钮(`_emit_diagnose_requested` 外发,纯视图边界)。
- 探针同批入册:ui_tune_probe 只读巡检白名单+`_emit_diagnose_requested`、连接数 10→11(七钮);confirm_dialog/main 树序注释订正。
## 三、批末重闸结果
| 闸 | 结果 |
|---|---|
| 冒烟(run_smoke 三闸) | **1055 项检查 0 项失败**(基线 987 + 68 新断言:T1 35/T2 6/T3 9/T4 3/T5 8/T5b 7) |
| run_all 单元全套 | 25 套全绿 |
| probe_gate --click | 全绿,残留 Godot=0 |
| probe_gate --full | 全绿(四探针收编段;ui_tune_probe 只读巡检 11 连接入册生效) |
| render_gate | **golden 0.00%**(三屏逐像素零漂移)+ shot_checker A-D 全过;战斗屏 draw_calls=191(基线 270/目标 <200,诊断钮退役+皮肤管线收敛的附带收益) |
| doc 三闸(gdd_lint/doc_link/doc_term --strict) | 对基线零新增:死链 3(存量)/lint FAIL 集=06/07/术语表(基线三件,08 一度因新增单元格撞 R3 已改措辞回绿)/词命中 2(存量) |
| 熵增闸(repo_structure_audit) | PASS |
| MC | **零跑**(零数值零行为=纯呈现批,按触发细则不发起) |
| V7 读数对拍 | 零游戏逻辑改动——冒烟全量零漂移(逻辑断言全绿)+探针结构断言零漂移+golden 0.00% |
**golden 面处置(T6 第 4 步)**:board golden 三屏 changed=0.00%——站桩徽标换墨面未越容差线(徽标像素占比低于 changed 计量或落在裁剪纸外),按卡片「若闸直接绿=登记即结」处置,**未重制基线**。附带说明:T1/T2 的按钮 crisp 翻转与九宫格皮变化同样零漂移(golden 裁剪区=棋盘视图,HUD 钮不在其内)。
## 四、代拍板追认单(白名单内执行项 + 事实订正,请用户追认)
**白名单内执行**:
1. **hover 提亮档**=modulate Color(1.06,1.06,1.06)(项1:参考主钮 `lightened(0.06)` 量级;INK 字对比不受损——石纹底提亮后对比只升)。
2. **禁用 α**=0.45(项2:基准值,与文字禁用同档;flat 两厂 bg+border 同 α 全幽灵化,与石纹 modulate 整图 α0.45 同纪律)。
3. **焦点环**=INK 2px 内缩 1px(项3:裁值直落;内缩以负 expand margin 实现;引擎 focus 样式盒为叠加绘制——不遮钮底,「三类钮底可辨性实比」设计语言成立)。
4. **换墨 token**(项4/Q6 裁后落值):GOLD_BRIGHT #E0B860(同族亮档优先既有亮族——取收益金同门值)/HERO_BLUE_BRIGHT #7EBAF0;语义岗冲撞,立新 token 走反哺点③。
5. **连续 alpha 曲线**(项5):带内三角过渡 0→0.05→0(带宽 100 中分)+纵向线性衰减至 0(上亮下暗);STRETCH_TILE 平铺在 y=560 整倍数处有衰减重启接缝(α0.05 量级不可察),归 07 目检。
6. **图标槽明度档**(项6):#806A4E,白图标 5.14:1 ≥3:1 硬约束达标(不触发回退案)。
7. **布局修**(项7):商店=ALIGNMENT_CENTER;营地四栏等高=统一 min 高 336 与 EXPAND_FILL 拉伸两选项组合落(holder min 保锁定态栏高,面板 FILL 保任一栏长高时四栏同步)。
8. **诊断钮落点**(项8):调试浮窗区块⑤(④两层调试之后、关闭钮之前),「诊断转储 · 转储」钮常驻可用不置灰——卡死取证在对局中更要能点(原角落钮亦无置灰)。
**卡片措辞与引擎事实的偏差(呈报追认)**:
9. **V4 清零断言自撞**:初版「旧墨清零」全文件扫撞上本批新注记里的旧 token 名(STONE_FAINT 写进了换墨注记)——改回全文件严格扫+注记改语义名(「灰石弱化墨」)。教训:清零类断言扫全文件时,同批注记禁载旧 token 名。
10. **Godot Image 8bit 量化=截断(非四舍五入)**:0.04977×255=12.69 实存 12——T4 峰值断言按截断量化校验(≥12/255 且 ≤0.05),非 bug。
11. **ui_tune_probe 只读巡检同批入册**:连接数 10→11+白名单加 `_emit_diagnose_requested`——T5b 属 ruled 变化,探针机械适配(iter24 旧「十二行」断言换代同款先例)。
12. **卡片 §2.2 texture_filter 枚举漏项**(开工检查发现①,用户裁按建议改法):计 12 实测 13,漏 `board_world.gd:50`(hero 立绘 NEAREST)——已勘误落卡;该点与全局 Nearest 同向、零翻转风险、不进白名单。
13. **主区遗产脏件两处**(开工检查发现②):`game/project.godot` 编辑器对调(theme 两行换序,语义等价)与 `active.md` 编入快照——active.md 台账本批走主区侧写(不入分支,避免合并互撞);project.godot 合并点复检,用户择机自理(提交或丢弃该对调)。
## 五、GDD 反哺点(设计权威文档不随批改,待用户逐点裁;已登记 06 新条)
1. **art-bible §7 按钮五态/焦点态规格缺项**:无条款,本批实现(modulate 1.06/α0.45/INK 2px 内缩 1px)=临时权威——是否立条款、值是否冻结待裁。
2. **平滑渐变件 LINEAR 白名单无例外条款**:全局 Nearest 下三件程序化平滑渐变挂显式 LINEAR,属有意豁免;§8.2 已有状态图标例外先例可援——豁免清单是否入册待裁。
3. **§4.1 新色 token 语义岗登记**:GOLD_BRIGHT/HERO_BLUE_BRIGHT/SLOT_BACKDROP_SOFT 三 token 未登记——语义命名与值是否转正待裁。
4. **氛围层风格一致性**:vignette/gradient_base/beams 保平滑连续 alpha,与 DitherBand Bayer 抖动派并存(Q5 已裁保平滑)——两派不一致性留整屏样张批统一裁决(样张批未开工,06 在册)。
## 六、实机目检总清单(归用户,07 ㉕ 登记不阻塞)
1. 按钮五态反馈:标题屏/营地/商店/设置/三选一逐屏——悬停(石纹钮提亮可感)、按下(本族下沉)、禁用(商店余额不足钮=本族幽灵化)三种反馈可感。
2. 键盘焦点环:Tab 遍历各屏,INK 2px 内缩 1px 环可见不糊、不遮钮底字;三类钮底上环可辨性实比。
3. 全局 Nearest 巡检:立绘/瓦片/图标/九宫格无新增糊感(应更 crisp);暗角与地图渐变无像素块(白名单生效判据);标题屏光带无硬边梯形、有过渡与衰减。
4. 布局均衡:商店卡片区不堆上半;营地四栏视觉等高(含锁定态与图鉴栏)。
5. 诊断钮清零:玩家画面无「诊断转储」钮;转储入口仅在调试浮窗可达。
## 七、遗留与风险
- 渲染闸 PIL 依赖:`render_gate.sh` 的 shot_checker/golden_board_crop 需 gamedev venv 的 PIL——运行前 PATH 前置 `D:/dev/python/envs/gamedev/Scripts`(本批两跑实证:裸 python 直接 ModuleNotFoundError)。
- 遗留人闸不变:迭代 20 实机目检五件 + 21 营地四柜台〔07 ⑳〕+ 22 秘宝解锁装配〔07 ㉑〕+ 23 锻造工作间〔07 ㉒〕+ 24 敌人表三观测〔07 ㉓〕+ 25 全屏巡检〔07 ㉕ 前的 ㉔〕+ **26 逐屏巡检〔07 ㉕〕**。
- 本迭代位仍预留后续追加卡(roadmap 注记维持);M4 数值批顺延 27+ 未排期。
- 光柱 TILE 接缝(追认单 5)与焦点环三类钮底可辨性(追认单 3)归 07 目检,不达走 L2 微调(调宽/内缩/衰减梯度,不动色系不动主题层)。