dr-verify-outcome · git:20260730.9b6b1ed · 2026-07-30 · sha256 64d318b5eef7c1bd

dr-verify-outcome git:20260730.9b6b1edA

Immutable. This exact content is served forever at /api/v1/blob/64d318b5eef7c1bd.

---
name: dr-verify-outcome
description: Prove a DeepReason fix against its GOAL.md success criterion, optionally with one guarded live run, and record the honest outcome in VERIFY.md. Use after dr-implement-fix.
---

# Verify the outcome

Input: GOAL.md's machine-decidable success criterion + the pushed fix.
Output: VERIFY.md with verdict PASS or FAIL. You verify; you do not
patch. Any new code change belongs to a fresh cycle through the
orchestrator.

## Ladder of proof (ascend only as far as the goal requires)

1. **Criterion command.** Run GOAL.md's success command verbatim.
   Paste output.
2. **Historical roots.** If the fix changed a reader/validator, re-run
   `verify_root` against the committed roots that showed the defect
   AND one known-good root: the target violations must disappear,
   everything else must be unchanged. List remaining violations by
   class — do not summarize them away.
3. **Live run (only if GOAL.md demands live proof).** At most ONE
   attempt, fully guarded:
   - Preflight: env file present, `deepreason` importable, run
     identity free (retire + commit rename first if occupied).
   - Launch detached from the ladder's own directory:
     `setsid nohup ./<ladder>.sh & disown`.
   - Arm rollback insurance: the snapshot loop (commit+push the
     experiment dir every ~5 min) and a monitor on `progress.jsonl`
     state/phase + the driver log's `rc=` lines, alerting on both
     success AND failure signatures.
   - Judge only typed outcomes: run state, stop_reason, audit JSON,
     `verify_root`, FINDINGS.md. Model prose is not verification.
4. **Know what a live run can and cannot prove.** Model behavior is
   stochastic across identically-configured runs (a capability channel
   used in one attempt may go unused in the next). A live attempt that
   never reaches the fixed path is INCONCLUSIVE for that path — say
   so; the offline regression remains the proof of correctness. Do not
   burn repeated live attempts chasing a stochastic path: one relaunch
   maximum, then record the residue.

## VERIFY.md template

    # Verification
    Criterion command + output: <pasted>
    Historical roots re-checked: <root -> before/after violation classes>
    Live attempt (if any): <run id, typed stop, tokens, one-line audit>
    Verdict: PASS | FAIL | PASS-offline/INCONCLUSIVE-live
    Residue (honest): <what remains unproven or parked, or "none">

## Closing the tranche (on PASS)

- Append a dated segment to the experiment's RESULTS.md: what was
  observed, what was fixed, what the record now shows, and the honest
  residue. "Accepted does not mean true"; never claim more than the
  record shows.
- Commit and push everything; confirm `git status` is clean and the
  branch head is on the remote.
- Report: verdict, evidence pointers, PARKED.md contents as candidate
  next tranches.

On FAIL: append the failure evidence to DIAGNOSIS.md, commit, and
return to the orchestrator (route: dr-diagnose). Never patch from
inside this skill.