From fc38a6c7ee345c633bc1573811983b81b1284931 Mon Sep 17 00:00:00 2001 From: Shay Date: Thu, 16 Jul 2026 10:31:57 -0700 Subject: [PATCH] =?UTF-8?q?docs(governance):=20CI/CD=20Runner=20Architectu?= =?UTF-8?q?re=20doctrine=20=E2=80=94=20local=20Mac=20Act=20runner?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ports the runner-migration doctrine (authored by the Gemini session against a stale checkout; grafted here onto current main so the #40-era Local-First protocol section is preserved, not clobbered): - CI jobs dispatch to a local Act runner on the primary developer's Mac (label ubuntu-latest:host = native macOS host execution; the ubuntu name is a fiction — no Linux-only steps). - The GCP e2-micro server-side runner was REMOVED 2026-07-16; never re-provision it (1GB RAM, OOM class). A waiting queue while the Mac is asleep is intentional — pre-push local gates are the real discipline. - Workflows remain canonical and install the locked universe (uv sync --locked, committed uv.lock). GitHub mirror Actions are billing-locked dead signals. - CLAUDE.md gains a one-line pointer (policy stays in AGENTS.md). [Verification]: smoke suite passed locally (175 passed); docs-only. --- AGENTS.md | 7 +++++++ CLAUDE.md | 1 + 2 files changed, 8 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index 69968ece..08062c1e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -251,6 +251,13 @@ To optimize server resources and bypass external CI billing dependencies, all ag - **PR Documentation:** When creating a PR on Forgejo (via `tea pr create`), document the local test execution in the PR description, matching this format: `[Verification]: Smoke suite passed locally (s, passed)` +### CI/CD Runner Architecture (2026-07-16 doctrine) +**CRITICAL**: Do NOT attempt to run CI jobs on the central Forgejo server (`core-gitquarters`) — the `e2-micro` instance (1GB RAM) cannot handle test workflows without OOM thrashing. The server-side Act runner was deliberately removed on 2026-07-16. +- The `.github/workflows/*.yml` files are canonical and actively used; they install the **locked dependency universe** (`uv sync --locked` against the committed `uv.lock`) so lane pins can only move when code moves. +- CI jobs are dispatched to a **local Act runner on the primary developer's Mac** (registered label `ubuntu-latest:host`): jobs requesting `ubuntu-latest` run natively on the macOS host — the `ubuntu-latest` environment name is a fiction here; do not add Linux-only steps. +- **Availability tradeoff is intentional**: when the Mac is asleep or away, the CI queue simply waits. The real discipline is the pre-push local gates above. Do NOT "fix" a waiting queue by re-provisioning a runner on the GCP server, and do not modify server-side runner configuration. +- GitHub (`AssetOverflow/core`) is a **mirror only**; its Actions are billing-locked and produce dead signals — never chase them. + ### Pre-Edit Sweep & Versor Coherence Guardian Protocol Before modifying any module in `algebra/`, `field/`, `vault/`, or `generate/`: - Trace every import of the target module and identify all callers. diff --git a/CLAUDE.md b/CLAUDE.md index 679a62ac..fea43d6c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,6 +4,7 @@ Startup: read `AGENTS.md`, `docs/specs/runtime_contracts.md`, inspect working tree, use the smallest validation lane. **CRITICAL**: Remote is `core-gitquarters.acbcontent.org`. Do not use GitHub/`gh` CLI. Use Forgejo tools/`gitea` CLI. +**CI**: local-first — pre-push gates are mandatory; CI jobs run on the developer's local Mac Act runner, never on the Forgejo server (see `AGENTS.md` §CI/CD Runner Architecture). Before non-trivial edits, apply the protocol in `AGENTS.md`.