Verification Loop V2

internal iteration v-harness-based verification behavior study · 13 cases · VDiff rubric

当前要做的事

0-Project/20260701-vdiff-image2code-v2-harness-comparison/

Verification Loop V2 是我们的内部迭代线:它借用外部 v-harness 作为受控视觉工具环境, 但关注点不是复述上游 harness 本身,而是研究 verifier、gate feedback 和 agent-facing self-check tools 到底如何改变修复行为与最终质量。

当前页面直接呈现两层结果:一层是 13 个 VDiff image2html v2.2 cases 上的 L1/L2/L3 主线对比, 已经补齐 vdiff_rubric_v1 final metric;另一层是 L3 max6 消融: native v-harness base、隐藏 gate feedback、移除 agent 可调用的 diff/align 自检工具。

v-harness 来源关系

source usage · not the internal project version
Atomic Actions · v2.2 · executed

V2 的 13-case L3 native、hidden gate feedback 与 no diff-align 等正式结果基于 image2code-v2.2@e2246107… 和对应校验 archive。

打开 v2.2 版本页
Native Claude · v2.3 · prepared_only

V2 注册并审计了 image2code-v2.3@e9c04d4b…,也预留了条件,但当前不把它表述为已完成的 V2 v2.3 运行。

查看 v2.3 来源

入口

trajectory-first, comparison table as secondary view

当前推荐先从 Viewer V0.4 总览和 Matrix 管理整个实验,再进入单个 Run 档案、selected epoch、 same-case comparison 与 raw-event replay;旧 comparison viewer 继续保留为 legacy fallback。

V2 Trajectory Viewer dataset: this-run-v3-l3base-max6-20260705-01 · case-level epoch trajectory · native gate / holistic / rubric scores
打开 V2 Viewer V0.4 →

L1 / L2 / L3 方法梯子

method ladder, not all rows are completed result rows yet
L1: direct generation baseline

L1_direct_api 用最少 loop/control 直接生成候选 HTML。 它主要回答:没有显式 verifier、没有 v-harness epoch gate、没有工具化视觉自检时,模型原生能力能到什么程度。

L2: our agent/verifier control layer

L2_native_claude_sdkL2_v1_agent_verifyL2_v2_verify_everywhere 属于我们自己的 loop 设计空间: 控制 verifier 何时介入、反馈是否进入下一步,以及验证是否变成通用行为。

L3: v-harness-based loop

L3_vloop_base 把上游 v-harness 的 epoch runner、gate feedback 和 grep/inspect/align/diff/write/render/crop/snapshot/revert 工具作为实验基座。 当前完成的 V2 结果集中在 L3 的 gate feedback 与 self-check tools 消融。

读法:本页先看 L1/L2/L3 主线内部对比,再看 L3 自己的 max6 消融。 两层结果都以 vdiff_rubric_v1 作为主要数值口径,同时保留 offline_quality_v1 holistic 分数和 v-harness native gate 作为辅助信号。

Edit / Annotate

local-only notes · source artifacts remain unchanged

表格里的实验结果仍然是静态 source of truth;这里的编辑和评论只保存在当前浏览器。 需要共享时可以导出 annotations JSON,后续再作为版本记录同步进 repo。

Local annotation layer ready.

L1 / L2 / L3 + L3 消融总表

primary metric: vdiff_rubric_v1; auxiliary: offline_quality_v1 + native gate

这张总表把 L1/L2/L3 主线和 L3 max6 消融放在同一个阅读面里。L1/L2/L3 主线来自 mentor13-v2.2-claude48-full-20260701-02,我已经为它补齐 vdiff_rubric_v1; L3 消融来自 2026-07-05 的 max6 runs。旧 raw condition alias 仍保留在 source/note 中,展示名采用当前规范。

group condition source run success / timeout native gate avg holistic avg rubric rubric >= 4 说明
L1 L1_direct_api full run
L0_direct_api
13/13 · 0 timeout n/a 3.85 3.79 8/13 Direct single-pass baseline; no explicit verifier loop.
L2 L2_native_claude_sdk full run
L1_native_claude_sdk
13/13 · 0 timeout n/a 3.92 4.20 11/13 Native SDK agent without verifier feedback.
L2 L2_v1_agent_verify full run
L1_v1_agent_verify
13/13 · 0 timeout n/a 4.69 4.26 12/13 Main agent decides when to call verifier and can use feedback for repair.
L2 L2_v2_verify_everywhere full run
L2_v2_verify_everywhere
13/13 · 0 timeout n/a 4.69 4.38 12/13 Verification is pushed into key stages; verifier returns repair-local mismatch feedback.
L3 L3_vloop_base full run
L3_vloop_base
1/13 · 12 timeout 1/13 3.46 3.53 6/13 Original full-run v-harness base; mostly budget-limited, but final artifacts were scored.
L3 ablation L3_vloop_base_max6 max6 native reference 13/13 · 0 timeout 2/13 3.46 3.50 7/13 Gate feedback exposed; diff/align exposed.
L3 ablation L3_v1_hidden_gate_feedback_max6 max6 ablation 13/13 · 0 timeout 0/13 3.54 3.40 6/13 Gate runs and logs detail, but detailed gate failure feedback is hidden from the next epoch prompt.
L3 ablation L3_v2_no_self_check_tools_max6 max6 ablation 13/13 · 0 timeout 3/13 3.46 3.42 6/13 Gate feedback remains exposed, but the agent cannot call diff or align.
L3 budget ref L3_vloop_base_max10 max10 reference 13/13 · 0 timeout 2/13 3.77 3.75 7/13 Longer-budget reference; useful for checking whether failures are epoch-budget limited.

主表读法:按 rubric 平均分,full-run 主线里 L2_v2_verify_everywhere 最高,为 4.38; L2 的两个 verifier 条件都高于 direct/native baseline。L3 max6 消融三行彼此接近,说明 gate feedback 和 diff/align 的作用需要继续看逐 case 与轨迹,而不是只看 aggregate。

逐 case:L1 / L2 / L3 内部对比

VDiff rubric score; * means run_status != success but final score exists

这张表展示 L1/L2/L3 主线的逐 case rubric 分数,格式是 score (passed/total)。 带 * 的 L3 行表示 v-loop run 没完整成功,但已经产出可评分 artifact。

case L1 direct L2 native SDK L2 v1 agent verify L2 v2 verify everywhere L3 vloop base trajectory link
case14.58 (98/107)4.86 (104/107)4.67 (100/107)4.81 (103/107)4.39 (94/107)*L3 max6 trace
case25.00 (72/72)4.72 (68/72)4.58 (66/72)5.00 (72/72)4.72 (68/72)*L3 max6 trace
case34.42 (76/86)4.88 (84/86)4.48 (77/86)4.94 (85/86)4.53 (78/86)*L3 max6 trace
case44.76 (99/104)4.90 (102/104)4.90 (102/104)5.00 (104/104)4.86 (101/104)*L3 max6 trace
case53.00 (54/90)3.94 (71/90)4.06 (73/90)4.22 (76/90)3.39 (61/90)*L3 max6 trace
case64.48 (103/115)4.65 (107/115)4.65 (107/115)4.57 (105/115)4.70 (108/115)*L3 max6 trace
case74.33 (45/52)4.81 (50/52)4.90 (51/52)4.90 (51/52)3.75 (39/52)*L3 max6 trace
case82.91 (39/67)4.18 (56/67)4.63 (62/67)4.70 (63/67)3.28 (44/67)*L3 max6 trace
case94.62 (49/53)4.62 (49/53)4.91 (52/53)5.00 (53/53)4.81 (51/53)*L3 max6 trace
case103.62 (47/65)4.46 (58/65)4.69 (61/65)4.62 (60/65)3.08 (40/65)*L3 max6 trace
case113.31 (39/59)4.41 (52/59)4.58 (54/59)4.58 (54/59)2.71 (32/59)*L3 max6 trace
case124.08 (62/76)4.01 (61/76)4.28 (65/76)4.47 (68/76)1.18 (18/76)inspect
case130.22 (2/46)0.11 (1/46)0.11 (1/46)0.11 (1/46)0.43 (4/46)*inspect

逐 case:L3 消融对比

VDiff rubric score; max10 is a budget reference

这张表专门看 L3 内部:native max6、隐藏 gate feedback、禁用 agent-facing diff/align, 以及 max10 budget reference。它和上一张 L1/L2/L3 表使用同一套 rubric 分数口径。

case base max6 hidden gate feedback max6 no diff/align max6 base max10 ref trajectory link
case14.35 (93/107)4.30 (92/107)4.21 (90/107)4.35 (93/107)trace
case24.79 (69/72)4.51 (65/72)3.61 (52/72)4.44 (64/72)trace
case34.42 (76/86)4.48 (77/86)4.48 (77/86)4.48 (77/86)trace
case44.71 (98/104)4.76 (99/104)4.81 (100/104)4.81 (100/104)trace
case53.50 (63/90)3.72 (67/90)3.50 (63/90)3.33 (60/90)trace
case64.65 (107/115)4.61 (106/115)4.74 (109/115)4.83 (111/115)trace
case74.04 (42/52)3.37 (35/52)4.04 (42/52)4.04 (42/52)trace
case83.36 (45/67)3.51 (47/67)3.06 (41/67)3.43 (46/67)trace
case95.00 (53/53)4.81 (51/53)4.91 (52/53)5.00 (53/53)trace
case102.54 (33/65)2.92 (38/65)3.08 (40/65)3.31 (43/65)trace
case112.80 (33/59)3.05 (36/59)2.71 (32/59)2.88 (34/59)trace
case121.18 (18/76)0.00 (0/76)0.99 (15/76)3.55 (54/76)inspect
case130.11 (1/46)0.22 (2/46)0.33 (3/46)0.33 (3/46)inspect

当前结论读法

what to inspect next
L2 verifier variants are the current mainline signal

在 full run 的 rubric 口径里,L2_v2_verify_everywhere 平均 4.38, L2_v1_agent_verify 平均 4.26,二者都高于 direct/native baseline。 这说明“把 verifier 反馈纳入 repair”这一层比直接生成或原生 agent 更值得继续放大。

Gate pass is not final quality

case12 是最明显例子:max6 和 max10 都能 native gate pass, 但 rubric 分数仍然偏低。这说明 v-harness gate 是过程边界,不应直接当成最终质量分。

Self-check tools are not a monotonic win

max6 下 base、隐藏 gate feedback、移除 diff/align 的平均 rubric 分别是 3.50、3.40、3.42, 需要逐 case 看哪些问题是工具缺失造成,哪些是 gate feedback 或 budget 的交互造成。