# VeriHarness V0.1 Board Summary

Updated: 2026-07-13  
Status: frozen baseline

V0.1 is preserved as the first complete runnable and auditable baseline. New architecture work
continues in VeriHarness V0.2; this summary does not retroactively reinterpret or overwrite the
frozen case1 run.

## Case1 Trajectory Viewer

The frozen `case1` run is registered in the unified V-Harness trajectory viewer as the
independent experiment group `VeriHarness V0.1 · case1`. The group contains four selectable
runs, `H0P0`, `H0P1`, `H1P0`, and `H1P1`; it opens on `H1P0` by default because that
condition contains six harness repair epochs.

The public trajectory package contains the source image, final render/HTML, independent
offline-evaluator results, and a sanitized SDK tool call/result sequence. It does not copy
raw transcripts, complete model responses, proxy configuration, or the run workspace.
This frozen run did not persist a render/HTML snapshot for every epoch, so only the final
epoch displays a real snapshot. Earlier snapshots and non-final H1 gate audits are marked
unavailable rather than reconstructed from the final artifact.

P1 `invoke_model` steps retain the capability, instruction, and image descriptor needed to
understand the attempted verification behavior. Their evidence admission is explicitly
`invalid_missing_image_bytes`: the historical router did not attach image bytes, so those
outputs cannot support artifact claims or measure tool-driven multimodal verification.

## Project Position

VeriHarness is a standalone Claude Agent SDK harness for controlled experiments on
multimodal verification behavior. Image-to-code is the first executable task package, not
the boundary of the harness.

The project studies two complementary forms of verification:

- **Tool-driven verification**: the agent actively obtains fresh evidence after OCR,
  localization, rendering, comparison, interaction checks, or another consequential
  intermediate operation.
- **Goal-driven verification**: after the agent proposes completion, a harness-owned hard
  gate checks the current artifact and either accepts it or returns grounded repair feedback
  for another epoch.

V0.1 builds the experimental foundation. RL internalization, automatic verification-policy
learning, and multi-task generalization remain later research stages.

## Four Experimental Conditions

Harness enforcement and the verification-policy prompt are independent experimental axes.

| Condition | Concrete name | Harness hard gate | Verification policy prompt |
| --- | --- | ---: | ---: |
| `H0P0` | Natural baseline / 自然基线组 | off | off |
| `H0P1` | Model self-verification prompt / 模型自发验证组 | off | on |
| `H1P0` | Harness forced verification / Harness 强制验证组 | on | off |
| `H1P1` | Combined verification / 组合验证组 | on | on |

`H` controls the harness-owned completion gate. `P` controls whether the system prompt asks
the model to actively verify consequential claims. Every condition shares the runtime base,
task profile, visible tools, model profiles, and input cases. `invoke_model` therefore remains
available in P0: the P axis changes use policy, not tool availability.

H0 uses `max_turns=500` only as an infrastructure guard. H1 has no agent semantic turn cap;
its outer controller allows at most six epochs. The online gate returns grounded repair
feedback without exposing a score to the agent.

## Independent Offline Evaluator

The outcome evaluator runs only after all agents have stopped. It never controls an epoch or
returns feedback to an experimental condition.

| Dimension | Weight | What it measures |
| --- | ---: | --- |
| Canvas | 10% | The final render exists and its canvas dimensions match the source. |
| Text Geometry | 40% | Source-grounded text binds to live candidate DOM text with matching position and size. |
| Fresh Visual Bank | 30% | One source-only, frozen question bank tests semantic, appearance, and visual relations for every condition. |
| Structure Audit | 20% | Live text and anti-hack properties, including absolute/fixed text, hidden text, screenshot substitution, and extreme inline styling. |

The headline score is the weighted pass rate mapped to `0-5`; the strict pass line is `4.0`.
This separation keeps outcome measurement outside the H1 treatment.

## Frozen Case1 Pipeline Audit

| Condition | Total | Canvas | Text Geometry | Fresh Visual | Structure |
| --- | ---: | ---: | ---: | ---: | ---: |
| Natural baseline (`H0P0`) | 2.44 | 5.00 | 0.00 | 4.38 | 3.12 |
| Model self-verification prompt (`H0P1`) | 2.62 | 5.00 | 0.00 | 5.00 | 3.12 |
| Harness forced verification (`H1P0`) | 4.08 | 5.00 | 3.64 | 5.00 | 3.12 |
| Combined verification (`H1P1`) | 3.26 | 5.00 | 1.59 | 5.00 | 3.12 |

These values are a one-case pipeline audit, not a general verification-effect result.

The frozen agent-facing model router recognized `type: image` but historical calls used
`kind: image`. Those descriptors were serialized as text and the P1 agent model calls did not
receive image bytes. H0P1 and H1P1 therefore cannot test tool-driven multimodal verification.

The H1 private gate used a separate path-to-data-URI transport and was not affected by that
attachment defect. It can still make semantically wrong or inconsistent judgments. The
Text Geometry evaluator also retains a greedy one-to-one binding caveat, so an item-level
failure is not automatically proof that visible text is absent.

The defensible reading is narrow: harness-only has positive evidence on this case1 artifact.
The run does not establish that verification generally improves final quality.

## System Prompt Composition

The page embeds the complete current source of these modules:

1. [`Runtime Base`](../prompts/runtime/base_v1.md)
2. [`Model Invocation Policy`](../prompts/runtime/model_invocation_v1.md)
3. [`Verification Policy`](../prompts/verification/policy_v1.md)
4. [`Image-to-Code Task Profile`](../prompts/tasks/image_to_code_v1.md)

```text
P0 = Runtime Base
   + Model Invocation Policy
   + Task Profile

P1 = Runtime Base
   + Model Invocation Policy
   + Verification Policy
   + Task Profile
```

The H axis does not alter the agent system prompt. Runtime assembly resolves the currently
available model-profile and recipe catalogs inside the Model Invocation Policy.

The board also provides a section-level `English 原文 / 中文翻译` switch. English remains the
authoritative runtime source and the default display. The Chinese files are complete,
reader-facing translations kept separately at:

1. [`运行时基础`](../prompts/zh/runtime/base_v1.md)
2. [`模型调用策略`](../prompts/zh/runtime/model_invocation_v1.md)
3. [`验证策略`](../prompts/zh/verification/policy_v1.md)
4. [`图像转代码任务配置`](../prompts/zh/tasks/image_to_code_v1.md)

The page loads all four translations atomically before switching languages, so a missing or
unavailable translation cannot leave the prompt snapshot in a mixed-language state. The board's
Markdown middleware exposes an explicit `?raw=1` response for this source fetch while preserving
the normal rendered Markdown reading page. Returning to English restores the exact embedded
source snapshot; changing display language never changes the prompt assembled for an experiment.

## Design Philosophy

### Verification is behavior, not only a final gate

Verification can occur before adopting OCR, after a consequential render, around a disputed
region, after an interaction changes state, or at final acceptance. The research object is the
choice of when and how to gather evidence, not the mechanical presence of one evaluator call.

### Prompt policy and harness enforcement are orthogonal

The prompt teaches the agent to identify consequential claims, choose an evidence method,
construct precise model instructions, and preserve uncertainty. The harness owns facts that a
prompt cannot guarantee: isolated context, actual image attachment, workspace paths, output
contracts, schema validation, retries, and terminal failure semantics.

### Evidence admission precedes answer quality

A schema-valid response is not evidence merely because it looks plausible. The required inputs
must have been attached and observed, and the result must answer the named claim rather than
promise future inspection, hallucinate unrelated OCR, or omit a verdict.

### Online feedback and offline scoring stay separate

The online verifier produces repair-facing observations without a score. The independent
offline evaluator measures final artifacts without sending information back to the agent. This
prevents the outcome metric from silently becoming another optimization target inside H1.

### Required verification fails closed

If an H1 required component is unavailable, the harness retries that gate attempt in place.
Exhausted retries end in infrastructure failure: they cannot accept the artifact and cannot be
misrepresented as artifact mismatch that reopens the agent.

### Freshness is a provenance property

Every model observation is associated with exact input hashes and the artifact version present
at call time. A source observation remains reusable while its source is unchanged; an old
candidate render does not prove a later artifact after editing.

### Transcript and event trace serve different purposes

The transcript preserves model interaction. The structured event trace preserves attempts,
normalized observations, artifact versions, gate decisions, and provenance. Keeping them
separate supports posthoc verification-episode analysis without forcing the agent to narrate
bookkeeping fields or rewarding self-declared evidence use.

### The accumulating gate remains auditable

H1 uses the latest accumulated claim bank as the current acceptance standard. Every attempt
still freezes its artifact, render, complete bank, discovered claims, and feedback, so later
analysis can reconstruct which contract shaped each repair rather than projecting the final
bank backward onto earlier epochs.

### The core stays generic and task behavior stays external

Model invocation, isolation, evidence contracts, events, and failure semantics belong to the
generic core. OCR, visual location, comparison, generation, and editing are capabilities.
HTML, DOM, Playwright, text geometry, and absolute-position rules belong to the image-to-code
task package and must not define every future VeriHarness task.

### Harness trajectories are a path toward internalization

H1 can provide explicit verification-and-repair trajectories; P1 tests whether the model can
choose similar actions without forced gates. High-quality verification episodes may later
support cold-start data and RL. V0.1 records the required evidence and behavior boundaries but
does not claim that verification has already been internalized.
