Per review ofaceea70e: a dirty checkout is refused (HEAD would not describe the code that runs, and a dirty-to-dirty edit would pass the end-of-run check). On a clean tree HEAD pins the imported helpers too. plan.json and result.json carry schema=2; schema-1 receipts (bare list, e.g. evidence70f6617) are documented. Adds a dirty-refusal test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>