diff --git a/DECISIONS-LOG.md b/DECISIONS-LOG.md index 314fb8a..f362955 100644 --- a/DECISIONS-LOG.md +++ b/DECISIONS-LOG.md @@ -5442,6 +5442,46 @@ conclusion rather than a cautious one. pings from the toolbox. - **`fix/crafty-oauth2-proxy-signin` is still unmerged**, so the pod still runs the pre-that-PR spec. +### Gate and CI — rc 3, and why CI's green does not contradict that + +Local, pinned toolbox, from the worktree (`ENGINE` shim + `DEV_KUBECONFIG=/dev/null`), diff base +`origin/main @ 20ea70d` → `HEAD @ d29a73c`: + +| Stage | Result | +|---|---| +| `lint` | green | +| `l0` | green — 19 cases, 0 failures, 0 skips | +| `render-golden` | green — all 10 onboarded goldens reproduce | +| `l1` | green — 3 cases, 0 failures, 0 skips | +| `spec-immutability` | **green** (see below) | +| `gitea-settings` | **SKIPPED** — `SETTINGS_API_TOKEN` unset | +| `conformance` (L2/L3) | **SKIPPED** — `CLUSTER_AVAILABLE != true` | + +**Exit code 3 — UNDETERMINED, not a PASS.** Nothing failed; nothing outside the green rows is +certified. Touched requirements `R-DNS-01 R-NET-01 R-PLAT-02 R-STATE-01` remain L2/L3 UNVERIFIED. + +`spec-immutability` — normally *the* tolerated skip — was closed rather than accepted. It had skipped +**spuriously**: `dev.sh` resolves the spec repo at `$REPO_ROOT/../home-network-k3s`, which from a +*worktree* is the wrong directory; the repo exists beside the **main** checkout. Mounting it read-only +through the `ENGINE` shim turned the skip into a real green, so R-TEST-06 is genuinely verified here. +Worth folding into the CLAUDE.md §3 worktree workarounds: the documented shim should mount **two** +paths, the main `.git` *and* the sibling spec repo. + +CI on `d29a73c`, statuses read by description and not by tick: + + context='gate / gate (pull_request)' status='success' description='Successful in 1m35s' + context='gate / conformance (pull_request)' status='success' description='Has been skipped' + +**Neither green means rc 0.** `gate / conformance` is `if: false` in `.gitea/workflows/gate.yml` — it +never runs and reports `success` with "Has been skipped", the exact trap CLAUDE.md §2 names. And +`gate / gate`, the single required context, runs `./ci/gate.sh || [ "$?" -eq 3 ]` (line 134): **CI +tolerates exit 3 by declared design**, so its green means "exited 0 *or* 3". It would report this +identical green for the rc 3 above. Enforcement itself was measured directly rather than assumed +(§2b): `branches/main` → `protected: true`, `user_can_push: false`, `required_approvals: 1`, +`enable_status_check: true`, `status_check_contexts: ['gate / gate (pull_request)']`; +`admin/actions/runners` → 1 runner, `incluster-dind`, `online`. **PR #23 is open, unmerged, and I did +not merge it.** + ### Operator actions required 1. **Nothing to do about the transport.** `transport=raknet` is correct, live, and answering. **Do not