Skip to content

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

coverstypecommandresultat commit
ci_testtestbash test/run.sh 26_ci_wiring1 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 shellchecked05423af

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.