Parent: #1134
The escalation trigger is deterministic verification, not model self-report:
- Define a
verify_gate interface: named checks that return pass/fail + a machine-readable reason. v1 checks: project build succeeds; declared data tests pass; schema-contract diff (written models/columns match the task's declared contract when one exists).
- Gate runs identically after primary AND escalation attempts (measurement needs both lanes' outcomes).
- Configurable per project:
route.gate: [build, tests, contract]; sensible defaults; a check that cannot run (e.g. no tests declared) reports "skipped", never blocks.
- Gate results are part of the session record (consumed by measurement subtask).
- Tests: each check's pass/fail/skipped paths; gate composition; failure-reason payloads.
Parent: #1134
The escalation trigger is deterministic verification, not model self-report:
verify_gateinterface: named checks that return pass/fail + a machine-readable reason. v1 checks: project build succeeds; declared data tests pass; schema-contract diff (written models/columns match the task's declared contract when one exists).route.gate: [build, tests, contract]; sensible defaults; a check that cannot run (e.g. no tests declared) reports "skipped", never blocks.