From 2b700e6b0d1755a43fc01b8820d35d73fa505f5d Mon Sep 17 00:00:00 2001 From: Sam Sung <51686767+samwhosung@users.noreply.github.com> Date: Wed, 30 Sep 2026 14:02:12 +0700 Subject: [PATCH] gates: drop the player build that the player tests already compile (#719) The land chain compiled the player build twice: `cargo build -p benilla --no-default-features`, then `cargo test -p benilla-formats -p benilla-app --no-default-features --lib`. The test build already compiles every line of the no-`dev` graph but the `benilla` launcher, a 17-line shim with no `dev` seam, and `benilla-app` has no `cfg(not(test))` code, so the first step added only the shim and a link: about two of a chain's twelve minutes. It goes from `gates.sh` and CI, and `player-tests` carries its comment. `check.sh` no longer says a full chain before land makes the land free: main moves in between, so the chain ran twice. Test: this land's own chain runs the new `gates.sh`. Co-Authored-By: Claude Opus 5.5 (1M context) --- .github/workflows/ci.yml | 2 -- scripts/check.sh | 4 ++-- scripts/gates.sh | 16 ++++++++-------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 064e41af..8339effb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,7 +48,5 @@ jobs: run: scripts/doc-links.py - name: pass-span-lint run: scripts/pass-span-lint.py - - name: player-build - run: cargo build -p benilla --no-default-features - name: player-tests run: cargo test -p benilla-formats -p benilla-app --no-default-features --lib diff --git a/scripts/check.sh b/scripts/check.sh index 784f08cd..9cdccfce 100755 --- a/scripts/check.sh +++ b/scripts/check.sh @@ -92,7 +92,7 @@ esac pflags="" for p in $pkgs; do pflags="$pflags -p $p"; done echo "check: scope = $pkgs" -echo "check: (changed crates + everything that depends on them; full chain still runs at sync→land)" +echo "check: (changed crates + everything that depends on them; the full chain runs once, at land)" log="$(mktemp "${TMPDIR:-/tmp}/benilla-check.XXXXXX")" skips="$(mktemp "${TMPDIR:-/tmp}/benilla-check-skips.XXXXXX")" @@ -120,4 +120,4 @@ if [ -s "$skips" ]; then fi echo "CHECK GREEN (scoped: $pkgs)" -echo " (land still pays the full chain once: scripts/gates.sh — memoized, so an already-gated tree is free)" +echo " (the full chain, scripts/gates.sh, runs once on the tree that lands; a run before it repeats it)" diff --git a/scripts/gates.sh b/scripts/gates.sh index bdc704c6..b3cb45b4 100755 --- a/scripts/gates.sh +++ b/scripts/gates.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash # The land gate chain: every gate in order, stopping at the first failure. # -# fmt, clippy, test, test-no-install, doc-links, pass-span-lint, player-build, player-tests, -# enforcer, enforcer-no-install. A failure prints the gate's log tail and exits nonzero; a green +# fmt, clippy, test, test-no-install, doc-links, pass-span-lint, player-tests, enforcer, +# enforcer-no-install. A failure prints the gate's log tail and exits nonzero; a green # run stamps the tree, which then re-greens without running. GATES_FORCE=1 runs the chain anyway, # WOW_DATA picks the install (set and empty: none) and TMPDIR holds the scratch files; the script # sets BENILLA_REQUIRE_DATA, BENILLA_ADDON_CORPUS, BENILLA_SKIP_LOG and WOW_WORLDVIEW_CHECK for @@ -135,12 +135,12 @@ run doc-links scripts/doc-links.py # wgpu validation error on Vulkan and a silent no-op on Metal and DX12, which no macOS run sees. run pass-span-lint scripts/pass-span-lint.py -# player-build: `benilla` without `dev`, which compiles out the debug panel, perf HUD, inspector, -# capture harness and probes, so it fails when any other code names one of them. -run player-build cargo build -p benilla --no-default-features - -# player-tests: the unit tests of the `cfg(not(feature = "dev"))` code (the resolver skips the -# source tree; the state folder sits beside the binary), which no other gate runs. WOW_DATA, which +# player-tests: the player build, `benilla-app` without `dev`, which compiles out the debug panel, +# perf HUD, inspector, capture harness and probes, so it fails when any other code names one of +# them. Its test build compiles every line of the player graph but the `benilla` launcher, a shim +# with no `dev` seam, so a `cargo build -p benilla --no-default-features` would add only the shim +# and a link. It runs the unit tests of the `cfg(not(feature = "dev"))` code (the resolver skips +# the source tree; the state folder sits beside the binary), which no other gate runs. WOW_DATA, which # a player build reads too, goes in for the shipped-UI tests that read FrameXML off the install. # Without `dev` only $BENILLA_ADDON_CORPUS finds the addon corpus, so the link goes in by that name, # and BENILLA_REQUIRE_DATA refuses a skip here exactly where it does in `test`.