diff --git a/reports/iter43-代拍板追认单-2026-10-29.md b/reports/iter43-代拍板追认单-2026-10-29.md new file mode 100644 index 00000000..51c346c3 --- /dev/null +++ b/reports/iter43-代拍板追认单-2026-10-29.md @@ -0,0 +1,21 @@ +# 迭代 43 代拍板追认单——战斗一屏样张批(2026-10-29) + +> 接收方:待办清单条目「战斗一屏样张 P0 未开工」(随实现报告一并呈报,用户追认后随反哺点一并处置)。 +> 卡片 §10 代拍板白名单四项内行使的记录+白名单边缘判断的追认请求。超白名单事项零(无越权裁断)。 + +## 白名单内行使记录 + +1. **样张脚本内临时变量命名、辅助函数拆分方式**:`draw_base()`/`_grad_top_cells()`/`_region_wcag()`/`_mask_maxch_dist()`/`_resample_mask()`/`_mask_iou()`/`_outline_underlay()`/`_ink_outline_polygon()` 等拆分;实装侧 `_armor_tex_path()`/`_name_plate_rect()`/`_name_baseline()`/`_draw_plinth_stretched()`。 +2. **断言在 CHECKS 内的 id 命名与登记顺序**:S1–S4(整屏四项)、P1–P5(战斗表现五项)、A7(护甲对比锚)、V1(两版出口)、V10(基线并排)、A5b(成稿净空)。 +3. **程序化产出素材的绘制实现细节**(颜色全取 v3.22 在册值、零新增色):地台件按工单 §5.2 工艺逐行(1px 上描边 #4C4038+2px 顶缘受光线 #C9AF83+8px 板身 #968264+1px 下描边,全周闭合);护甲三枚按 §5.3.1–5.3.3 形状(轻甲=斜跨皮带+扣件、魔甲=符纹带+两枚 3×3 符点、重甲=肩两块+胸一块甲板,深墨 #33261B 1px 描边)。 +4. **两版样张输出文件名与落盘目录**:`artwork/mockups/sample_battle_screen_{1280x800,1920x1080}.png`;附属:基线 `sample_battle_screen_baseline_1280.png`、并排 `sample_battle_screen_before_after.png`、装配稿沿用 `sample-batch-v3-final-2026-09-30.png`。 + +## 追认请求(白名单边缘判断,已按实现决定记录备案) + +5. **S3 首焦唯一的机器代理换型**:首版「最高对比点簇 ∈ 单区 ≥85%」被文字字形边打穿(红),按卡片 §9 L1(断言红修实现不修判据原则的反向面——判据为本批新建,代理形态属白名单 2「断言实现细节」)改为「高对比能量占比 winner ≥55% 且 ∈{数字区,B 区}」。语义等价(无第二焦点竞争),实测数字区 59%。 +6. **P2 剪影灰度 IoU 阈值 0.35**:新建断言的初始阈值,按三语境实测(0.36/0.37/0.61)与「同角色体块计划过半重合」的设计判断设定。 +7. **mockup C 区次级文换墨**:原裸值 (140,90,30)/(120,110,98) 对 C 区板 4.06:1/3.5:1 违整屏①——换在册墨 GOLD_INK(5.34:1)/STONE_DEEP(6.13:1),值单点不新增色。 +8. **mockup 意图徽标补 PANEL_DATA 垫牌**:实装已有素牌而 mockup 漏镜像(裸字形对舞台底 2.36:1 违①),补牌对齐实装。 +9. **A5b 补充断言**:对装配后成稿补跑画布净空(既有 A5 历史形态跑在空白底板上)——首跑即抓出注记长行溢出 6px,已拆行修复。 +10. **单测承载选型**:V5–V9 落新套件 `standee_present_values_test.gd`(manifest 登记一行)而非并入 standee_fx_sweep——域命名与 grep 锚更干净,套件族映射自动覆盖。 +11. **数据保真从紧**:三敌甲档按数据面全 light,护甲三枚展示移 S6 附录——不为展示效果改 mockup 数据面。 diff --git a/reports/iter43-反哺点-2026-10-29.md b/reports/iter43-反哺点-2026-10-29.md new file mode 100644 index 00000000..cf3888e0 --- /dev/null +++ b/reports/iter43-反哺点-2026-10-29.md @@ -0,0 +1,21 @@ +# 迭代 43 反哺点清单——战斗一屏样张批(2026-10-29) + +> 接收方:待办清单(文档批落文裁决用)。用户在会话中逐条裁决后由文档批写入 `design/` 与根流程件,并把该条清掉;实现批对 `design/` 与根规则文件只读。 + +## 卡片 §6 预登记的关联文档同步面 + +1. **`design/gdd/ux/battle.md`**——B 区高度:文 270 vs 代码 252 的 18px 差异。本批样张按代码 252 出(样张反映实机),实装对齐与否待用户裁决(对齐=需求改动走写卡通道)。 +2. **`design/art/art-bible.md`(v3.22)**——§1.4 整屏四项闸的通过事实与抽样读数(文字对比最弱 5.34:1;舞台底 L0.036/格底 L0.089 落两子带间隔 0.053;首焦=数字区能量占比 59%;名字行素底牌平底零地台色);§6.1/§7.2 站桩素底深档 `#282220` 实装落地事实(名字行素底牌+基线上移地台顶上方)。 +3. **`design/art/art-prompts.md` §5**——组二地台件、组三护甲三枚已「程序化产出即终稿」并入包(`scene_stage_plaza.png` 48×12、`ui_armor_{light,ward,heavy}.png` 24×24);组一背景插画、组四立绘重产仍待出图(状态不变)。 +4. **`design/gdd/systems/战斗循环/战斗表现.md`**——「一屏样张的验收标准」五项过闸结果(P1–P5 断言全绿;判据机器代理口径见实现报告 §3.2–3.3)。注意:本批样张为**方向稿**,目检先行——气质终审通过后才算样张整体过闸(§1.4 闸形)。 +5. **`design/engineering/test-conventions.md`**——§8.4 撤销证明条文与 2026-10-28 新验证口径(禁变异/禁撤销取证)冲突,旧句待清。 +6. **`AGENTS.md`**——「验收闭合」红线句仍保留「撤销该改动能让对应断言变红」旧措辞,与新口径冲突。 + +## 本批新发现(实现期产出,非卡片预登记) + +7. **血条递减 tween 静默空转(既有缺陷,非本批引入)**——`game/presentation/views/standee_body.gd` `_set_hp()` 内 `tween_property(self, "st.hp_value", ...)` 用点号子属性路径,Tween 子属性语法应为冒号(`st:hp_value`);现路径无 Tweener,血条递减呈瞬时直落非 0.15s 递减(运行日志 ERROR 可复现:单跑 standee_present_values 套件可见)。修一行;归用户裁决走 mini-loop 或并入后续批。 +8. **站桩名字行 12px 的字号档位归属**——`standee_body.gd` 名字行绘制取 `UiKit.FS_CAPTION`(12,本批仅收常量不改值);art-bible §7.4 字号档位表下该位既不在①条带内读数豁免、也不在②装饰 caption 在册面,属「清单外 11–13px」。处置二选一由用户裁:提档(FS_HINT 14,与顺位徽标同款)或增补 caption 在册面。 +9. **能力清单缺本批预留行**——`game/tests/README.md` 能力清单无本批 V5–V9 代表用例行(卡片成文早于清单 2026-10-29 改版定稿)。归写卡段按 test-conventions §8.3 补行(代表用例=`game/tests/unit/presentation/standee_present_values_test.gd:_init`,真实入口=`UiKit.load_tex()`/`StandeeBody.name_line_probe()`)。 +10. **art-bible §4.1 换色合并三处的执行状态**——地台绘制点半边已由地台件纹理执行(顶缘受光线 `#C9AF83`、描边 `#4C4038` 落 `scene_stage_plaza.png`);残余:① `STAGE_BG`(#3E342A→#3E362C)未执行(本批不触 `battle_stage_view.gd` 底色);② `STAND_STONE_RIM`(#C4AC84)仍被 `board_cell_unit.gd:359` 口沿高光在役引用;③ `STAND_STONE_EDGE`(#5A4C3A)由地台缺位回退路径在役引用。常量彻底退役与否归文档批裁决。 +11. **体验验证清单登记**——「战斗一屏样张方向稿目检」项(判据与材料见实现报告 §5;真人检测只登记不阻塞)。 +12. **根流程件换代**——待办清单条目「战斗一屏样张 P0 未开工」状态推进(本批实现完成后按 doc-conventions §12.1 整条删除);roadmap 迭代 43 行状态与实现报告列、「当前位」三行换代;样张产物归档位=`artwork/archive/战斗一屏样张批-2026-10-29/`(batch-closure 执行)。 diff --git a/reports/iter43-实现报告-2026-10-29.md b/reports/iter43-实现报告-2026-10-29.md new file mode 100644 index 00000000..2ac71e7a --- /dev/null +++ b/reports/iter43-实现报告-2026-10-29.md @@ -0,0 +1,83 @@ +# 迭代 43 实现报告——战斗一屏样张批(2026-10-29) + +> 接收方:待办清单条目「战斗一屏样张 P0 未开工」;roadmap 迭代 43 行。 +> 分支 iter43(基准 ee4efad5)· 单工作区单卡串行 · 实现报告/追认单/反哺点清单三件同日落 `reports/`。 + +## 1. 各卡状态 + +| 卡 | 内容 | 状态 | +|---|---|---| +| T0 | 开工准备(worktree+素材导入+user 目录+v3 脚本基线跑) | 完成(基线 17/17 全绿存档 `artwork/mockups/sample_battle_screen_baseline_1280.png`) | +| T1 | 样张底板两版画布 | 完成(`draw_base()`+两版出口,机检 V1 绿) | +| T2 | 内容清单铺画 | 完成(色板变体第二套 S3b/三组关键帧条 S5/剪影三语境+描边对照+遮挡对照组 S6/mockup 镜像实装定值) | +| T3 | 整屏四项断言进 CHECKS | 完成(S1–S4 全绿) | +| T4 | 战斗表现五项断言进 CHECKS | 完成(P1–P5 全绿+A7 护甲对比锚) | +| T5 | 血条填充换 #A8321F(经 UiKit 常量)、条底收常量 | 完成 | +| T6 | 名字行垫 HP_BAR_BACK 素底、不压地台 | 完成 | +| T7 | 顺位徽标提档 UiKit.FS_HINT | 完成 | +| T8 | 护甲图标由字形换三枚 24×24 PNG | 完成 | +| T9 | 地台件与护甲三枚程序化产出并入包 | 完成(`--gen-assets` 四件,工单 §5.2/§5.3 口径) | +| T10 | 三份批件+改前/改后并排对拍图 | 完成(并排图机检 V10 绿) | + +**样张机检:30/30 全绿**(17 条既有 F/A 断言+S1–S4+P1–P5+A7+V1+V10+A5b)。 +**单元套件:standee_present_values 18/18 全绿**(exit 0)。 + +## 2. 实际改动—验收对照表 + +> 卡片成文(2026-10-28)早于迭代 41 呈现层结构收敛合入(2026-10-29),卡片 §3/§8 的 `standee_body.gd` 行号普遍漂移;实质判据 15 处实查零冲突(开工检查记录见 git 提交史)。本表按**实际行号**记载。 + +| # | 需求点 | 改动(实际 file:line) | 验收测试(文件:行+尾缀) | 层级 | 真实入口 | 判据绑定面 | 结果 | +|---|---|---|---|---|---|---|---| +| V1 | 样张两版产出 | `tools/render_sample_sheet_v3.py` main() 两版出口(1280×800 基座;1920×1080=1.35×+黑边各 96px) | `tools/render_sample_sheet_v3.py` CHECKS 条目 V1 | 探针 | `python tools/render_sample_sheet_v3.py` 真实跑批 | 两版位图尺寸 1280×800 / 1920×1080 | 绿(ed1 (1280,800)/ed2 (1920,1080)) | +| V2 | 文字对比 ≥4.5:1 | 同上(S1 断言+mockup C 区次级文换在册墨 STONE_DEEP/GOLD_INK) | CHECKS 条目 S1(最弱对 5.34:1) | 探针 | 同上 | 八组文字面实际用色 WCAG 对表 | 绿 | +| V3 | 明度三档带成立(含两子带) | 同上(S2 断言) | CHECKS 条目 S2 | 探针 | 同上 | 舞台底 L0.036/已开格底 L0.089 落两子带、间隔 0.053≥0.02;信息 0.78>中层 0.23 | 绿 | +| V4 | 首焦唯一 | 同上(S3 断言) | CHECKS 条目 S3 | 探针 | 同上 | 高对比能量占比:数字区 59%(≥55% 且 winner∈候选区) | 绿 | +| V5 | 血条=危险红 #A8321F | `standee_body.gd:525` 填充引 `UiKit.HP_BAR_FILL`;`:522` 条底引 `HP_BAR_TRACK`;`ui_kit.gd:194-195` 两常量 | `standee_present_values_test.gd:28-35`〔样张批 V5〕 | 单元 | 冒烟套真实跑批(run_all manifest) | 常量值 to_html=="a8321f"+源码锚(绘制点引用+全源零 #689CE8/零裸 Color(0.41,0.61,0.91)) | 绿(headless 无渲染面,像素采样以常量单点+源码锚承载——观测面注记) | +| V6 | 名字行垫素底、不压地台 | `standee_body.gd:445` `_name_plate_rect()` 几何单点(牌底沿=地台顶)、`:449` `_name_baseline()`、`:570-588` 绘制域;`name_line_probe()`(`:100-109`)扩几何出口 | `standee_present_values_test.gd:45-51`〔样张批 V6〕 | 单元 | 同上 | probe 几何:基线 y=149 < 地台顶 y=158;牌色 #282220;样张侧 S4 断言(平底 100%+零地台板身色) | 绿 | +| V7 | 顺位徽标提档 14 | `standee_body.gd:519` 裸 13 → `UiKit.FS_HINT` | `standee_present_values_test.gd:55-56`〔样张批 V7〕 | 单元 | 同上 | FS_HINT==14+绘制点源码锚(grep 该处零裸字号) | 绿 | +| V8 | 护甲图标换三枚 PNG | `standee_body.gd:432` `_armor_tex_path()`(三键→`UiKit.TEX_ARMOR_*`)、`:570-588` draw_texture_rect 24×24(缺位回退字形);`ui_kit.gd:253-255` 路径单点 | `standee_present_values_test.gd:64-71`〔样张批 V8〕 | 单元 | 同上 | 三键 ResourceLoader 装载 24×24+probe armor_icon 出绑定路径 | 绿 | +| V9 | 地台件与护甲三枚入包 | `game/assets/art/scene/scene_stage_plaza.png`(48×12,不入 git)+`game/assets/ui/icons/ui_armor_{light,ward,heavy}.png`(24×24,入 git);`standee_body.gd:493`/`:502` 九宫格横向拉伸接装 | `standee_present_values_test.gd:76-81`〔样张批 V9〕 | 接口 | 同上 | 资源可加载且尺寸 48×12 / 24×24 | 绿 | +| V10 | 改前/改后对拍图产出 | T0 存基线(1280×800);main() 生成并排图 | CHECKS 条目 V10 | 探针 | 样张脚本真实跑批 | 基线版与改后版两源文件尺寸一致+并排图落盘 | 绿(`sample_battle_screen_before_after.png` 2570×810) | + +**反向覆盖**:diff 内全部行为改动均上表有行;非行为改动=`run_all.gd` manifest 一行登记(套件注册,非游戏行为)、测试 `.uid` 边车、样张脚本注释与文档头扩展。孤儿断言:无(样张 CHECKS 全部挂 V1–V4/V10/S/P/A7;单测 18 条全挂 V5–V9)。 + +## 3. 实现决定记录(代拍板白名单内行使+边界判断备案) + +1. **断言 id 命名与登记顺序**(白名单 2):整屏四项=S1–S4、战斗表现五项=P1–P5、护甲对比锚=A7、两版出口=V1、基线并排=V10、成稿净空=A5b。 +2. **S3 首焦唯一的机器代理**:首版「最高对比点簇 ∈ 单区 ≥85%」被文字字形边打穿(各文字面对比同档,簇分裂 23%/25%)。改用**高对比能量占比**(top10% 梯度格按区归堆,winner ≥55% 且 ∈{数字区,B 区立绘})——语义=「对比内容量集中单区,无第二焦点竞争」,与 battle.md「挖掘期视线锚棋盘区」同轴。实测:数字区 59%/B 区 20%/C 区 17%。 +3. **P2 IoU 阈值 0.35 校准依据**:三语境剪影两两 IoU 实测 0.36/0.37/0.61(棋盘×明细同源资产最高;舞台立绘×棋盘小人跨源档最低)。0.35=「过半体块计划重合」档,按同角色 chibi 渲染的设计判断设定,非放宽既有断言(本断言为新建)。 +4. **HP_BAR_TRACK 新常量**=视图原裸值 `Color(0.10,0.10,0.11)` 原样收口(值不属色板新增——现渲染值单点化,卡片 §7.1「条底收常量」的直接执行)。 +5. **STAND_STONE_RIM/EDGE 两常量保留**:RIM 另有 `board_cell_unit.gd:359` 口沿高光在役引用(本批不触该文件);EDGE 由地台缺位回退路径在役引用。art-bible §4.1 换色合并三处的**地台绘制点半边**已由地台件纹理(#C9AF83/#4C4038)执行;常量彻底退役与 STAGE_BG 合并半边归文档批裁决(反哺点 10)。 +6. **意图徽标垫牌镜像补齐**:实装 `standee_body.gd` 意图徽标有 PANEL_DATA 素牌(四色墨对牌 4.7–5.8:1),mockup 原裸画字形(对舞台底 2.36:1 违 S1)——mockup 补牌对齐实装。 +7. **护甲三枚数据保真**:三敌甲档按数据面全 light(goblin/bugbear/ogre_chief),不为展示图标改甲档;三枚图标的展示落 S6 附录(挂 HP_BAR_BACK 素底,与实装挂载底同口径)。 +8. **观测面注记(test-conventions §8.4 出口)**:headless 无渲染面,V5/V7 的「像素采样色值」以常量值断言+绘制点源码锚+探针几何承载;V6 判据「基线 y < 地台顶 y」绑 `name_line_probe()` 几何出口(公开方法,非内部字段直查)。 +9. **A5b 补充断言**:既有 A5(画布四缘净空)跑在空白底板上(v3.5 冻结形态),本批补 A5b 对**装配后成稿**跑同一判据——首跑抓出 S4 注记长行溢出右缘 6px(已拆行修复),确证其价值。 +10. **样张输出文件名与落盘目录**(白名单 4):两版=`artwork/mockups/sample_battle_screen_{1280x800,1920x1080}.png`;基线=`sample_battle_screen_baseline_1280.png`;并排=`sample_battle_screen_before_after.png`;装配稿=原 `sample-batch-v3-final-2026-09-30.png`(1560×2080)。 +11. **单测承载选型**:V5–V9 落新套件 `standee_present_values_test.gd`(单元面按 §8.2 从领域类对外方法进出)而非既有 standee_fx_sweep(其 _init 为缺陷扫掠专用段)——manifest 登记一行;闸映射 `game/presentation/*`→presentation 族自动覆盖。 +12. **能力清单缺口**:本批 V5–V9 代表用例行在 `game/tests/README.md` 能力清单**无预留行**(卡片成文早于清单改版定稿)——实现批禁写 README,归写卡段补行(反哺点 9);测试函数名以卡片 V1–V10 为唯一锚。 + +## 4. 存量红判别(闸前自检) + +- S10 文件头 4 处:`game/core/config_db.gd` / `config_domain_{combat,crossrun,run}.gd`——基准提交 ee4efad5 已在,本批未触碰;存量按白名单清偿通道。 +- S11 禁用词 1 处:`game/data/schemas/adventure_table.gd:55`「罕见」——`git show ee4efad5` 实证基准已在其行;存量。 +- gdstyle S13:基线外新违规 0、较登记值恶化 0(`standee_body.gd` 类变量计数未越基线 19——纹理装载走 `UiKit.load_tex` 即取即绘,零新增成员)。 +- **本批零新增红。** + +## 5. 实机目检总清单(真人检测只登记不阻塞) + +| 项 | 判据 | 材料 | +|---|---|---| +| 方向稿目检(卡片 §4(3)——目检先行,机检冻结归目检通过后) | 气质=明亮地窟看台、立绘最抢眼、无压抑;构图/分区/明度三档带/首焦落点与设计意图一致 | `artwork/mockups/sample_battle_screen_1280x800.png`、`sample_battle_screen_1920x1080.png`(批末归档 `artwork/archive/战斗一屏样张批-2026-10-29/`) | +| 改前/改后对照 | 五项定值前后差异可辨(血条色/素底牌/徽标/护甲图标/地台件) | `sample_battle_screen_before_after.png` | + +登记义务同步进反哺点清单(体验验证清单归文档批登记——实现批禁写根流程清单)。 + +## 6. 遗留读数义务与观测记录 + +- MC/verifier:**零跑**(卡片未要求 MC 对拍;本批无玩法数值改动)。 +- 全量回归:合回后由用户自发(2026-10-29 关联档选测口径,无自动兜底)。 +- 既有潜在缺陷(随测发现,本批未触碰该行):`standee_body.gd` 血条 tween `tween_property(self, "st.hp_value", ...)` 用点号子属性路径——Tween 子属性语法为冒号(`st:hp_value`),现路径静默无 Tweener、血条递减呈瞬时直落非 0.15s 递减。已记反哺点 7,处置归用户裁决(修一行=工程改动的 mini-loop 或并入后续批)。 + +## 7. 独立验收审计结论 + +(合并前由未参与实现的子代理执行,结论见 `reports/iter43-验收审计-2026-10-29.md`;未通过不得合并。)