# ADR 0008 — Self-hosted CI with Gitea Actions **Decision** - Add `.gitea/workflows/ci.yml` that runs on `self-hosted` runners (no Docker). - Avoid marketplace actions; rely on the runner checkout and raw shell steps. - Install Node via official tarball only when not preinstalled. - Steps: `npm ci` → lint (if present) → typecheck (if `tsconfig.json`) → build (if present) → tests with coverage. - Enforce coverage thresholds using `scripts/ci-check-coverage.mjs` (defaults: L70 / B70 / F50 / S70). **Consequences** - Requires outbound HTTPS to nodejs.org for Node tarball when Node isn’t preinstalled. - Artifact upload omitted; can be added with a custom uploader if desired.