Quickstart — reinstated CI

What runs when

(terminology/layer-rule); heavy arch battery only if code-scoped groups match. PR mode = fail-fast: a red predecessor short-circuits its dependents (fewer jobs run; a skipped successor is NOT a pass).

failures (full-spectrum signal), incl. performance/e2e + the above-3.12 interpreter lane + Sonar.

  • Open a PR touching src/** → router selects the affected module shards + fast always-on gates
  • Docs-only / packs-only PR → 0 code shards; only docs checks / the packs workflow + fast always-on gates.
  • Nightly (schedule) or "Run workflow" → run full → full mode: every job runs regardless of
  • Any workflow → manually dispatchable from the Actions tab (workflow_dispatch).

Local pre-PR parity

before pushing — the same authority CI uses, so "green locally / red on CI" drift is closed.

  • make test-fast — the fast tier (unchanged baseline).
  • Use the single gate-selection authority (E5/#2476) to preview which shards/gates your diff selects
  • spec-kitty regen --check, ruff check ., ruff format --check — the shift-left front, run locally first.

Interpreting a run

zero-gated (integrity oracle) and no dead-code test was in the run/denominator (census).

  • Green PR ⇒ every enumerated must-run gate executed (its own job is green) and no test was
  • A skipped job in PR mode ⇒ its predecessor red; fix the predecessor. It is NOT mergeable-green.
  • Nightly red ⇒ the full failure set is present (no early abort); plan one remediation pass.

Warmup / dependencies

latest mainline (upstream-drift signal). The warmup composite builds the env once; shards reuse it.

  • PR builds resolve a pinned spec_kitty_events rev (deterministic, cache-hit); nightly resolves

Adding/retiring a workflow (governance)

tests/release/test_release_ci_ownership.py in the same change, or the ownership test reds.

  • Net-new workflow → add an introduced row to docs/convergence/interim-ci-producer.md and
  • Stock runners only; never SK_CI_TOKEN on a public job.