diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index be5bf578..bffba005 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -508,6 +508,6 @@ jobs: export UV_INSTALL_DIR="$HOME/.local/bin" curl -LsSf https://astral.sh/uv/0.10.10/install.sh -o /tmp/uv-install.sh; sh /tmp/uv-install.sh # never a pipe — see the dashboard job's copy (#1788) echo "$UV_INSTALL_DIR" >> "$GITHUB_PATH" - - name: Lint docs voice, operator strings, topology classes, file budget, trivy parity, then JS/CSS (Biome), YAML, Markdown, proto (buf), TOML (taplo) - # Single source of truth: the Makefile targets. REPO-LOCAL GATES FIRST (#1746): the five bash ones cost under 6s between them, while the five after them fetch via npx/uvx/docker and have eaten the whole 15-minute timeout on a slow registry. - run: make lint-docs-voice lint-operator-strings lint-topology lint-file-budget lint-trivy-parity lint-js lint-yaml lint-md lint-proto lint-toml + - name: Lint docs voice, operator strings, topology classes, file budget, pithead/trivy parity, then JS/CSS (Biome), YAML, Markdown, proto (buf), TOML (taplo) + # Single source of truth: the Makefile targets. REPO-LOCAL GATES FIRST (#1746): local checks run before network-backed surface linters. + run: make lint-docs-voice lint-operator-strings lint-topology lint-file-budget lint-pithead-parity lint-trivy-parity lint-js lint-yaml lint-md lint-proto lint-toml diff --git a/dashboard/tests/frontend/wizardprobe.test.mjs b/dashboard/tests/frontend/wizardprobe.test.mjs index cbb88d17..94a54821 100644 --- a/dashboard/tests/frontend/wizardprobe.test.mjs +++ b/dashboard/tests/frontend/wizardprobe.test.mjs @@ -313,5 +313,7 @@ test("seam: the submit button stays live under a failed probe", async () => { // The gate is the host's. The operator's only way out is to correct the address and submit // again, so a failing report must not take the button away. const out = await setupScreen(report([failed("refused")])); - assert.match(out, /