Final piece of the contract execution increment.
- run_contract_validation: env up → backend cases + UI flows → env down
- contract_validation_gate: bounded self-heal loop (execute_contract_fix_phase
feeds CONTRACT_EXEC_FAILURES back to a focused fix prompt, commits, re-runs)
- Wired as a per-epic gate after the story loop (v1 granularity: the app
reflects the whole epic before contracts run), opt-in by harness presence and
--skip-contract-validation
- Exit-code-honest: CONTRACT_VALIDATION_FAILED makes the epic exit non-zero if
contracts never pass, mirroring the preflight gate
Tested: orchestrator brings the env up/down and runs backend cases against a
live mock server with correct pass/fail + failure detail. Live UI flows and the
fix loop's Claude calls need the real app/CLI.
This completes the UI-contract + execution work held on this branch; ready to
bundle into one PR.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>