# Reference Validation Report - partial pass

## Executive judgement
- partial pass

## Exact scope run
- runtime lane: `split_control`
- agent lane: `claw-agent-ref` with `controller_mode: "canonical"`
- provider: `openai` (`gpt-4.1-mini`)
- checkpoint_before_write: `true`
- task set:
  - `inspect_only`
  - `single_step_patch_verify`
  - `negative_zero_write_ungrounded`
  - `negative_zero_write_stale_write_ref`
  - `two_turn_inspect_patch_verify`
  - `bounded_follow_up_fix`

## What was proven
- `POST /v1/compile` returned usable runtime-managed `bundle_text` and every model-called turn used that `bundle_text` in the canonical prompt.
- Canonical controller outputs that reached the model stayed inside the strict canonical top-level envelope.
- Current-turn tool-backed evidence grounded admitted `controller_fact_decision` writebacks for inspect-only and single-step patch+verify tasks.
- Negative and ungrounded paths zero-wrote correctly.
- Duplicate mutation replay was success-equivalent via deduplicated `409` responses.
- No hidden fallback to `legacy_action` or a generic writeback path was observed.
- `checkpoint_before_write` succeeded on the single-step auto-write-backed turn.

## What failed or remained weak
- The bounded two-turn inspect -> patch/verify path failed on turn 2 before the patch model turn because `POST /v1/checkpoint` returned `HTTP 400` with `duplicate decision_id detected: dec_000001`.
- The bounded follow-up fix path failed on turn 2 at the same checkpoint boundary with the same invariant violation.
- Because checkpoint failed before the second controller call, those bounded write-backed paths did not complete end-to-end in this round.

## Failure attribution
- primarily: `controller/runtime boundary issues`
- not primarily: model-following, provider, or task-design issues

## Canonical seam
- The canonical seam remained structurally intact and fail-closed throughout: compile stayed runtime-managed, controller mode stayed canonical, admission stayed zero-or-one-event, and no fallback path was observed.
- It did not remain fully healthy end-to-end because bounded patch turns were blocked at runtime checkpoint.

## Broader round
- A second broader model-in-the-loop round is **not** justified next.
- Fix the checkpoint duplicate-decision invariant first, then rerun this bounded reference round.

## Exact files changed
- No runtime or agent source files were changed.
- Evidence artifacts only were written under `analysis/model_in_loop_reference_validation/20260313_round2/`.

## Exact evidence artifacts produced
- `reference_validation_raw.json`
- `reference_validation_summary.json`
- `reference_validation_report.md`
- `reference_validation_artifacts.txt`
- `reference_validation_file_changes.txt`
- `daemon_stdio.log`
- `runtime-storage/logs/runtime.log.jsonl`
