5.5 KiB
5.5 KiB
M59 探针墨迹与文案宽度检查(M58-I11)
Owner 于 2026-09-13 授权先做 M58-I11(M58 计划记录的建议项),再进入
DEV-1R。本里程碑只做测试基建:把"标签墨迹 vs 兄弟图标、vs 承载面、
vs 槽宽"的机器检查加进 Market 视觉探针,并补上最长线上文案 fixture,
让 M58-C 那类缺陷在 gate 就 fail,而不是到 owner 眼前。
玩家可见停止点
没有页面变化。 停止点是一条更严格的探针:
m52_market_visual_probe.gd在每次捕获前运行墨迹检查,任一违反即 不打印成功 marker 并以非 0 退出;- 新增"最长线上文案"fixture(中英各一),在 760×360、844×390、 1280×720 下走同一检查与截图;
- 检查器自带负例自检(故意构造重叠/超宽),证明它真的会失败。
顺序步骤
- M59-A — 检查器与最长文案 fixture。 COMPLETE (2026-09-13)。
- 新增共享检查器
runtime/tools/ui_ink_check.gd(测试基建,不进运行时): 遍历视图内每个Label,断言 (a)Font.get_string_size(text) ≤ 标签矩形宽(省略号截断即失败); (b) 标签的墨迹盒与同模块内图标/徽章矩形不相交; (c) 标签矩形不越出其所属模块矩形。 提供self_test()负例(构造重叠与超宽,必须报违例)。 - 探针 fixture 增加最长线上文案用例:职业名、特性名、详情行、价格、 金币数、岗位计数全部取线上最长形态(中英各一份),驱动同一检查。
- 修复检查器发现的问题:fixture 问题在 fixture 修;产品问题若属于 M58 材质族(墨迹盒/槽宽/分带)直接修,否则记入 issue register 不扩步。
- 新增共享检查器
- M59-B — 源绑定验证与交接。 COMPLETE (2026-09-13)。 源绑定
m59-ink-checksattempt20260913T130719Z-53678:自检ABG_M59_INK_SELF_TEST_OK violations=3、ABG_M59_INK_CHECK_OK scanned=12 violations=0、ABG_M52_MARKET_VISUAL_PROBE_OK各恰好一次, strict 诊断 0,36 张截图(3 尺寸 × 2 语言 × normal/longest × static/dynamic/final)。- fresh-archive
m52-market-probe+ 新 marker 恰好一次、strict 诊断 0; - 负例自检通过、最长文案 fixture 截图逐张检查(中英、三尺寸);
- 更新本计划、
CURRENT_CHECKPOINT.md、M58_MARKET_READ_SURFACE_DEFECTS.md与ABG_REMAINING_WORK_AND_GATES.md的对应条目。
- fresh-archive
验收检查
- 成功 marker
ABG_M52_MARKET_VISUAL_PROBE_OK恰好一次,且新增ABG_M59_INK_CHECK_OK checks=<n>恰好一次;负例自检ABG_M59_INK_SELF_TEST_OK恰好一次。 - 探针在注入违规(测试内自检)时不打印成功 marker;strict 诊断 0。
- 证据含最长文案 fixture 的静态/动态/最终截图(3 尺寸 × 2 语言)。
- 产品代码(
runtime/ui/**、runtime/entry/**、域/经济/Save/内容) 在本里程碑内除"检查器发现的 M58 材质族缺陷"外不得改动。
冻结范围
页面视觉、玩法、经济、内容、Save、路由、音频、打包、设备、发布全部冻结;
不改 page_chrome.gd / market_chrome.gd / *_module.gd 的任何几何契约,
除非检查器证明了 M58 已记录类别(墨迹越面、压图标、超槽截断)的残留缺陷。
提交边界
- 计划激活提交(本文件 + checkpoint)。
- M59-A 聚焦提交:检查器 + fixture + 探针接线。
- M59-B 聚焦提交:源绑定证据与文档更新。
检查器发现并修复的残留缺陷(M58 材质族,2026-09-13)
机器检查一次抓到 6 处真实缺陷(普通与最长 fixture 都有命中),全部属于 M58 已记录类别,已在 M59-A 内修复:
| 位置 | 实测 | 修复 |
|---|---|---|
账本动作牌 ActionLabel |
标签矩形左缘 927.9 vs 图标右缘 961.8(重叠 34px) | 标签锚点 0.26–0.95(图标 0.05–0.23 之外) |
资源徽章 StatusLabel |
金币 999 127px / slot 107.5px |
徽章值改 micro(22) |
底栏 ButtonLabel(en) |
RETURN CONTRACT 251px / slot 134.9px |
恢复历史短文案 BACK/RETURN |
账本头 LedgerHeader(en) |
CANDIDATE DETAILS 296px / slot 285.7px |
头带槽加宽到 0.08–0.92 |
账本成本行 AvailabilityLabel(en) |
AVAILABLE 107px / slot 92.5px(-4 内缩后 1px 溢出) |
状态 0.19–0.56 无内缩、金额 0.58–1.0 |
| 卡片名牌/特性牌(最长文案) | Gannet Faircurrent 180px、Turncoat Buckle 165px |
文字槽内缩到材质内框(名牌 0.14–0.86、缎带 0.15–0.85),卡片字号降至 8×(账本保持 micro) |
其中最后一项暴露了 M58-C 同类的更深约束:标签矩形必须等于材质的可见 内框,而不是模块整幅——否则端帽/饰边会盖住首尾字,机器检查也测不到。
Issue Register
M59-I01RESOLVED at activation: 允许检查器使用Font.get_string_size作为墨迹宽度权威;东亚字形按字体度量计,不做像素级扫描(与 M58-C 的 实测流程一致,误差用一个安全余量吸收)。M59-I02RESOLVED inM59-A: 最长线上文案超槽的三处(徽章、底栏 en、 卡片名牌/特性)都按 M58 材质族记录在案并修复;没有把越界问题留到后续。M59-I03OPEN: 检查器目前只覆盖 Market 视图(标签—图标、标签—模块、 槽宽/行高)。其它页面迁移时必须用同一检查器跑一遍;把检查器接入page_chrome.gd组件级契约(在组件里声明"内框")是后续候选。