Part of Phase 1.4 (Jack's Phase-1 kickoff, #amicode 2026-07-01). Complements #45 (VSIX gate): wire the smoke corpus (#61) into CI as a required PR gate, plus a contract check for the frozen RunInspector message/DOM schema (Jack's freeze step 2).
This is the enforcement layer for the run-dir contract — the required gate is the home for every producer↔consumer guard on that contract. Checks are added to the required set as each lands (this issue is not blocked on the ones still in flight).
Gate scope (required checks)
Dependencies
Blocked-by: #61
Blocked-by: #45
Part-of: Phase 1 (1.4)
Part of Phase 1.4 (Jack's Phase-1 kickoff, #amicode 2026-07-01). Complements #45 (VSIX gate): wire the smoke corpus (#61) into CI as a required PR gate, plus a contract check for the frozen RunInspector message/DOM schema (Jack's freeze step 2).
This is the enforcement layer for the run-dir contract — the required gate is the home for every producer↔consumer guard on that contract. Checks are added to the required set as each lands (this issue is not blocked on the ones still in flight).
Gate scope (required checks)
readRunDirguard, so completion paths can't drop additive fields. Lands with feat(contract): pre-solve formulation.toml (additive; scoped counterpart to #64) #81; add on landing.AmicoRunDir.jlpackage refactor in Bring the AMICODE_* stdout grammar under the shared-fixture roundtrip discipline #83 is out of scope here — it's deferred to the second template (WIP night spike: pulse-designer Layer-0 — interview → entities → solve, e2e green #75/Score runtime (D5): manifests, router, entitlements, stage guard, usage capture #76).Dependencies
Blocked-by: #61
Blocked-by: #45
Part-of: Phase 1 (1.4)