diff --git a/docs/EVIDENCE_LEDGER.md b/docs/EVIDENCE_LEDGER.md index 974bba69..805e7c89 100644 --- a/docs/EVIDENCE_LEDGER.md +++ b/docs/EVIDENCE_LEDGER.md @@ -259,6 +259,9 @@ | 2026-09-23 | **M110-P2 C4 正式证据:六夹具 + 三回归全部 PASS @ `140330fa`;A5 对比度 NOT_MET(BLOCKED_AT_CONTRAST)** | `140330fa`(`m110-bat002-hud-f0..f5`、`m110-regression-field/-hash/-cycle`,全部 source-bound,marker 各恰 1 次、strict `[]`、owned cleanup) | `docs/reports/M110_P2_BAT002_HUD_REPAIR_20260923.md`;`docs/reports/M110_P2_CONTRAST_STOP_20260923.md` | runtime_verified + agent_visual_reviewed | f0 760×360 zh 100 `…/m110-bat002-hud-f0/20260923T053738Z-95262`;f1 844×390 en 100 `…/f1/20260923T054050Z-97495`;f2 1280×720 zh 100 `…/f2/20260923T055040Z-4640`;f3 en 100 `…/f3/20260923T054404Z-99746`;f4 zh 130 `…/f4/20260923T055332Z-6640`;f5 en 130 `…/f5/20260923T054723Z-2341`;R1 `…/m110-regression-field/20260923T055637Z-8870`;R2 `…/m110-regression-hash/20260923T055909Z-10575`(`deterministic=true`,哈希与 M105 基线逐字节一致);R3 `…/m110-regression-cycle/20260923T060204Z-12648`(`steps=34 blocked=0`,M77 field/ink/beats 全绿)。A1 `under_minimum=0`(f2/f3 token 11、f4/f5 token 14,`text_100=false` at 130%)、A2 slot delta 0.0/子槽 union 0.0 disjoint/动态放置 clearance 9.1–18.6px、A3 `relation_events=10 bridge=6 fallback=0 proof PRESENT`(真实锚点 `[838.4,446.4]→[601.6,450.4]`)、A4 目检通过、A6 smoke 记录、A7 diff 只含两个允许文件且 R1–R3 绿、A8/A9 绿;**A5 `NOT_MET`**(四参考夹具 worst 1.38:1、neutral 3.61:1 < 4.5:1),修复空间在 Allowed files 之外故未实施 → P2 保持 `IN_PROGRESS — BLOCKED_AT_CONTRAST`(`M110-I14`),P3 未启动;历史:`m110-bat002-hud-f2` 在 `0de53f16` 有 2 次 harness 解析 FAIL(已由 `db2b6efb` 修复)、f0 一次未完成终端(`…/f0/20260923T045109Z-62713` 无 result.json,调用侧超时)已重跑 PASS | +| 2026-09-23 | **M110-P2 停手边界澄清(append-only;不改写 C3/C4 行):A5 在既有 M84-D/CONTRAST_MIN 先例下 NOT_MET,机器 PASS ≠ P2 通过** | `ed62dab3`(docs 记录;runtime 实施仍为 `0de53f16`/`db2b6efb`/`140330fa`) | `docs/reports/M110_P2_BAT002_HUD_REPAIR_20260923.md`(§4.0 先例核对 / §6.0 澄清);`docs/reports/M110_P2_CONTRAST_STOP_20260923.md` | runtime_verified(证据机器边界) | 先例核对:M84-D 载体采样 = 渲染像素 + 文字带 P95(排除墨迹像素;m88 `_contrast_for` 已记录 “P95 直采墨迹会假 1:1”);`CONTRAST_MIN=4.5` 定义于 `m53_guild_visual_probe.gd:14`/`m88_shp002_visual_probe.gd:18`,禁止改写或加蒙层达标。M110 `_path_contrast()` 同口径测量冻结的 M77 描边/端点:四参考夹具 worst `1.38:1`、中性底 `3.61:1`(源环 1.67 / 目标环 1.60)均 < 4.5 → A5 `NOT_MET`,修复空间(carrier/alpha/描边线宽)在 Allowed files 之外,未实施任何 art/runtime service 改动。**澄清**:`m110-bat002-hud-f0..f5` 与 R1–R3 的 runner PASS 是证据机器结果,不构成 P2 完成或 A5 通过(M110 marker 不含 contrast 字段、不暗示 A5);P2 保持唯一 `IN_PROGRESS — BLOCKED_AT_CONTRAST`(`M110-I14`),P3 未启动。收到 Lead stop 后未再启动任何新捕获;进程、owned workspace 与 import 生成的未跟踪 `.uid` 均已清理,HEAD==origin==`ed62dab3` 工作树干净 | + + ## 待办工作包(Goal 执行游标) | 包 | 内容 | 状态 | diff --git a/docs/plans/M110_BATTLE_HUD_LEGIBILITY_RELATION.md b/docs/plans/M110_BATTLE_HUD_LEGIBILITY_RELATION.md index 6d70c5ef..60696eef 100644 --- a/docs/plans/M110_BATTLE_HUD_LEGIBILITY_RELATION.md +++ b/docs/plans/M110_BATTLE_HUD_LEGIBILITY_RELATION.md @@ -470,7 +470,9 @@ Exactly one step may be `IN_PROGRESS`. events resolve to their real anchors and the source->target path is drawn. Nine source-bound attempts at `140330fa` PASS: `m110-bat002-hud-f0..f5` (four markers once each, strict `[]`, owned cleanup) and - `m110-regression-field`/`-hash`/`-cycle`. A1/A2/A3/A6/A7/A8/A9 are green + `m110-regression-field`/`-hash`/`-cycle`. Those runner PASSes are + evidence-machine results only and never imply A5 or P2 completion; the + M110 marker carries no contrast field. A1/A2/A3/A6/A7/A8/A9 are green on the reference fixtures; the R2 hashes match the M105 baseline. **A5 (contrast >= 4.5:1) is measured `NOT_MET`** for the frozen M77 path stroke and endpoint markers (worst `1.38:1` on the field, `3.61:1` on the diff --git a/docs/reports/M110_P2_BAT002_HUD_REPAIR_20260923.md b/docs/reports/M110_P2_BAT002_HUD_REPAIR_20260923.md index 86c85020..af3a46e6 100644 --- a/docs/reports/M110_P2_BAT002_HUD_REPAIR_20260923.md +++ b/docs/reports/M110_P2_BAT002_HUD_REPAIR_20260923.md @@ -127,6 +127,21 @@ strict `[]`、owned workspace/process-group cleanup;capture attempt 未声称 ## 4. A5 对比度 NOT_MET(Lead 决策点) +### 4.0 先例核对(M84-D / CONTRAST_MIN / 端点标记) + +- 现有先例:`docs/runtime/M52_SHARED_UI_RULES.md`「对比度按实际渲染载体取样(M84-D)」 + 规定用渲染像素、载体取**文字带内亮度的 P95**(不取 rect 四角);`CONTRAST_MIN := 4.5` + 只定义在 `runtime/tools/m53_guild_visual_probe.gd:14` 与 + `runtime/tools/m88_shp002_visual_probe.gd:18`(页面探针),**禁止改 `CONTRAST_MIN` 或加半透明 + 蒙层达标**。 +- 端点标记先例:m88 的 `_contrast_for()` 对浅色墨迹做了 M84-D 的必要修正 + ("P95 over the ink rect would sample the bright glyphs themselves ... false 1:1"), + 即采样须排除墨迹像素、取紧邻载体。M110 的 `_path_contrast()` 同口径实现: + stroke band / 端点环带内**排除描边色像素**后取 P95 载体,与 `_event_color()` 描边色算 + WCAG 比值;端点环用 annulus 带(半径 0.012w 源环、0.029w 目标 halo)。 +- 结论:A5 在既有先例下**无法达标**(下表);沿用先例的 M84-D 采样与 `CONTRAST_MIN=4.5` + 不改、不加蒙层、不改色板/线宽。 + 测量方法(harness `_path_contrast`,随每次 capture 写入 manifest `path_contrast_measurement`):从渲染像素取样,排除描边色像素后取 stroke band / 端点环带的 **P95 载体亮度**(M84-D 口径),与 `_event_color()` 描边色计算 WCAG 对比度,取三项最差值。 @@ -162,6 +177,21 @@ add 深色底衬超出授权范围。因此 **P2 在 A5 边界停下(P2 IN_PRO ## 6. 冻结与边界 +### 6.0 停手边界澄清(2026-09-23,响应 Lead 的 contrast-block 指令) + +- **机器 PASS ≠ A5/P2 通过**:第 2 节的九个 runner `PASS` 只表示脚本、marker、清理与 + A1–A3 已声明的机器门通过;`path_contrast_measurement.status=NOT_MET` 时,M110 marker + 不携带也不暗示 A5 通过(marker 字段无 contrast),P2 **不完成、不宣称修复、不宣称 + `ABG MVP QUALITY READY`**。 +- 六个 capture attempt 与 R1–R3 在 `140330fa` 上全部归档;其中 f4 是 130% 有界风险复核, + f0/f1 为 smoke、f2/f3 为参考、f5 为 en 130%。这些捕获在 Lead 的 stop 指令到达前已按 + plan 的 C3/C4 边界完成并推送;收到 stop 后**未再启动任何新捕获**,P3 QA 未启动。 +- 采集完成后确认:无 Godot/runner 进程、`/private/tmp/aetherbound-guild-test-work/` 无遗留 + owned workspace;import 过程生成的未跟踪 `.uid` 文件已在 C4 提交前全部清理, + `git status` 干净,HEAD==origin==`ed62dab3`。 +- A5 修复需 Owner/Lead 就「路径 carrier/color/weight 的有限修复包」或「A5 合同/测量口径修订」 + 作出决定;在此之前不修改 art、carrier、描边或 `CONTRAST_MIN`。 + - `git diff --stat 0114a914..140330fa`:`runtime/entry/entry_shell.gd`(+217/-65)、 `runtime/tests/dev5/battle_live_capture_test.gd`(+596/-65,含三次修复提交的净变化); 此外仅本报告与 plan/checkpoint/ledger 的 docs 变更。