I0012 — Make CI refuse an invalid model or a stale projection
Add the model validation and the projection freshness check to the blocking CI job, with no advisory pass.
DONE wave 7 · p1 · implementation profile · parallel safe
Part of M000 — Milestone and DAG driven development.
Objective
Add the model validation and the projection freshness check to the blocking CI job, with no advisory pass.
Why
A validator that runs only when somebody remembers is not enforcement.
Current state
CI ran the suite, doctor, watch and the site data sync check.
Desired state
CI also runs plan validate and the offline GitHub projection check, and fails on either.
Scope
- .github/workflows
Out of scope
- Any CI step that needs a GitHub token to pass
Dependencies
What waits on this
Acceptance criteria
- plan validate runs in the blocking job and its exit code is not swallowed
- The GitHub projection is checked offline against the canonical model
- No new step requires network access to succeed
Validation
- bash test/run.sh 26_ci_wiring
Evidence required
- ci_test
Evidence
| covers | type | command | result | at commit |
|---|---|---|---|---|
| ci_test | test | bash test/run.sh 26_ci_wiring | 1 passed — validate.yml runs bin/majordomus plan validate as a blocking step and renders the whole GitHub projection offline, neither step reaches for a credential, and the adapter is shellchecked | 05423af |
Risk
Low
Timeline
- started
- 2026-09-04T05:15:01Z
- verified
- 2026-09-04T05:15:02Z
- completed
- 2026-09-04T05:15:04Z
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I0012.yaml. Read it back with majordomus plan show I0012.