diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ea325467..5cf29a20 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -79,9 +79,9 @@ jobs: # us from having to retrofit it later. run: go test -race -cover ./... - - name: Coverage floor (internal/cli, internal/submit must not rot) + - name: Coverage floor (cli, submit, push, cluster must not rot) # `go test -cover` above prints numbers but asserts nothing. This - # enforces a per-package floor on the two load-bearing, historically + # enforces a per-package floor on the load-bearing, historically # thin-tested packages (the money path + submit orchestration) so a # test deletion can't silently drop coverage. Floors ratchet UP only — # see scripts/coverage-floor.sh (backend#1009). diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index de54c5c3..1a9eada2 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -7,11 +7,20 @@ name: Integration (e2e) # 0% in unit coverage — this is where every live bug actually lived). # # Heavy (kind boot + image pulls), so it does NOT run on every PR: +# - on every push to develop # - nightly (schedule) # - manual (workflow_dispatch) # - on a PR only when it carries the `e2e` label +# +# The push trigger exists because scheduled workflows always execute the +# DEFAULT branch's tree (main), which trails develop by dozens of commits — +# discovery_e2e_test.go, delete_e2e_test.go, and the delete-teardown job +# don't exist on main, so the nightly never actually ran them (#293). +# Running on develop pushes exercises the tree the tests were written for. on: + push: + branches: [develop] schedule: - cron: "0 3 * * *" workflow_dispatch: diff --git a/scripts/coverage-floor.sh b/scripts/coverage-floor.sh index e9775f4c..723cfd34 100755 --- a/scripts/coverage-floor.sh +++ b/scripts/coverage-floor.sh @@ -10,7 +10,13 @@ # The floors are a RATCHET: set just under the current numbers, and bumped UP # as coverage improves — never silently down. Lowering a floor must be a # deliberate, reviewed edit here (with a reason), not a side effect of deleting -# tests. Current (develop): internal/cli ~70%, internal/submit ~75%. +# tests. Current (develop, 2026-07-14, ubuntu CI runner): internal/cli 82.9%, +# internal/submit 80.4%, internal/push 89.0%, internal/cluster 74.6%. +# +# NOTE: internal/cluster measures higher on a dev machine with a real +# ~/.kube/config (78.5% on macOS) than on the bare CI runner (74.6%) — the +# kubeconfig-resolution paths only execute where one exists. Floors must be +# set against the CI number, since that's where the gate runs. # # Usage: scripts/coverage-floor.sh (run from the repo root) # @@ -20,8 +26,10 @@ set -euo pipefail # "package:floor" entries. Keep floors integers; coverage is compared as a # float against them. FLOORS=" -internal/cli:68 -internal/submit:72 +internal/cli:80 +internal/submit:78 +internal/push:87 +internal/cluster:73 " status=0