6.2 KiB
6.2 KiB
双审复核 · 立绘显示档批(grilling + godot-master,2026-11-01)
性质:卡片 v1.0 的独立复核产出物(req-card 纪律「grilling 复核门」+迭代 47 双审先例)。两个未参与撰写的会话各自只读复核,本报告记发现与处置去向。 被审对象:
reports/需求卡片-立绘显示档批-2026-11-01.mdv1.0。 总判:方案本体成立(引擎语义、乙类条款、闸纪律全部咬合),卡片改后可开工——两条阻断均为「补执行步骤」级,不动设计。
一、阻断(两条,双审同指)
| # | 发现 | 证据 | 处置 |
|---|---|---|---|
| B1 | 原稿输入面在实现 worktree 必然缺位,且管线对缺件静默零产出:artwork/ 整目录不入 git,sync_worktree_assets.sh 只同步 game/assets/art+.import,不同步 artwork;pixelize_candidates.py 缺件走 isfile 跳过,exit 0、零文件、零报错 |
tools/sync_worktree_assets.sh:26-34;tools/pixelize_candidates.py:474-478,507-508 |
卡 v1.1 T1 补「显式传主区原稿根路径」+「产物计数自证 = 9 件,不足即停」 |
| B2 | 素材落递主工作区无收口步,合回后验收有洞:素材不入 git、worktree 合回即删;本地 CI 在主区跑,主区仍是旧 46×48 稿,只有 V16「主角源高 ≥92」会报警,敌侧「原稿分辨率落位」在册闸件 standee_asset_check 不在闸清单,等于无人看守 |
game/tests/run_all.gd:191;tools/run_all_gates.sh(grep 无 standee_asset_check);盘上主区素材实测 |
卡 v1.1 ①V13 逐件加钉源高=原稿表值(旧降采样稿必红);②T3 补「9 件落递主区再触发 CI」收口步 |
二、建议(已并入卡 v1.1)
| # | 发现 | 出处 | 卡片处置 |
|---|---|---|---|
| S1 | 样张脚本 A4 硬锁 PORTRAIT_SRC.size==(46,48),T1 换代必红;另有 :1501 强制 96×96 方框 mockup |
tools/render_sample_sheet_v3.py:1135-1139,1501 |
列入 F11 现状与 T3 随动步(显式解冻重校) |
| S2 | T1 未明写主角源从 *_1x.png 切 *_2x.png |
tools/pixelize_candidates.py:476,481 |
T1 补独立步 |
| S3 | PORTRAIT_DISPLAY_H.get(key, 96.0) 兜底字面量 = 档值第二处散落,与契约 2/6 自相矛盾 |
卡 v1.0 §7.3 | 改「查表必中+键集覆盖自检」,禁静默兜底 |
| S4 | 灰矮人 126→96 是全批唯一 <0.8 档(0.76× 真降档,NEAREST 抽行约每 4 行断 1px 描边),不在已接受清单 | 双审同指 | 补进契约 5 已接受项+目检①点名(头号回退候选) |
| S5 | 关卡地图头像由 ≈1× 变 0.52× 降采样,是全消费面降级最狠一处 | level_map_screen.gd:176-190 |
§4 不做面点名+目检③专列 |
| S6 | 主角三态宽度不一(88/92/88)且 apply_hero_state 换纹理不重摆,态切换有约 3–6px 横跳(现行 2px 的放大版) |
standee_motion.gd:85-86 |
§4 明列不做(重摆=行为改动,禁实现批顺手加)+目检清单登记 |
| S7 | T1/T3 闸件口径切换时点三处互斥(T1 说「T2 未就绪允许红」、闸件排在 T3、§15 说已提前到 T1) | 卡 v1.0 §7.2/§7.4/§15 | 统一:闸件口径改造并入 T1(素材与闸件同批),删矛盾句 |
| S8 | 注释随动面漏 standee_motion.gd:38-39,59,65(反向引用已不存在的「禁非整数缩放」禁令)与 level_map_screen.gd:176 |
双审同指 | T2 补点名 |
| S9 | 「两表同值」观测面局限申报说重了:grilling 判 Godot editor 版 FileAccess 可读 ../tools/,godot-master 判无稳定通路——两审相左 |
双审 §6/§O5 | 卡 v1.1 改「尝试真断言(读 ../tools/pixelize_candidates.py 逐键对账),读不到走 L2 记录退回双端字面钉值+审计对账」,禁把争议当定论 |
| S10 | §14 所核 gdstyle_baseline.txt 无该测试键,且 gdstyle 扫描面只含 `game/core |
data | presentation`(tests 不在面) |
| S11 | 卡片头行引用待办状态「待写卡」已过时;§7 交叉引用「见 §9 行 V1–V4」应为 §8 | 卡 v1.0 | 就地修正 |
三、观察(不改卡,记录在案)
- 几何实测:立绘落位只在换纹理拍执行、按缺省盒高 96 算——大档顶 y=−2、中档 20、小档 44;溢出 2px < VBox 间距 4px,恒不碰顶部轮次指示(卡 L3#3 的「碰邻位」实际难触发,仍留作停机条款);立绘链上无 ClipControl,不被裁;意图徽标 y=86 在中/大档为「压胸」,符合圣经③;大档脚底越盒底由明细带面板遮住(现行卓尔/石君王已如此,本批食人魔加深 40px)。
- 1920 档:三档是 1280 基准壳坐标绝对高,
stretch=canvas_items+aspect keep 下整壳 ×1.35 等比,构图恒等,无需新条款。附带发现:project.godot未显式声明window/stretch/aspect,依赖引擎缺省——与本批无关,建议另立工程批钉死。 - 未登记 enemy_id(如 hobgoblin 缺口行)无立绘 →
load_tex返回 null → 字形回退,不进_place_portrait,显示档不涉,非待裁点。 - 素材侧健康度:九件原稿色数 30–32、alpha 二值、底缘不透明、敌侧暖白描边 68.4–98.9%(阈值 40% 全过)——T3「其余四断言不变」可保绿。
- 事实核对:F1–F15 逐条复核通过(F3 的 :197 实为 :198、F10 断言②止于 :100,属微差);F7 降采样等值由 grilling 独立重跑四件字节级复现。
- 浮点判据:0.99/1.57 档回程有 ULP 级残差,V13/V15 须
is_equal_approx,禁裸==。
四、呈用户裁决项(卡片不动,等发令)
- 是否把
standee_asset_check编进代码域闸(run_all_gates.sh闸件增减属工程改动,另批走)。 - 灰矮人 0.76× 与关卡地图头像 0.52× 两处降采样:本卡按「已接受+目检」处理;若实机判不可受,回退路径只有「灰矮人改归中档」或「地图头像出 48 专件」,均须另裁。
- 主角态切换横跳(S6):本卡不做重摆;若要修,另立小批。
project.godot显式声明 stretch/aspect(观察项):另立工程批。