Skip to content

ci: consolidate trivial gates into hygiene.yml - #5

Merged
acamarata merged 1 commit into
mainfrom
ci/consolidate-hygiene-p1
Sep 1, 2026
Merged

acamarata merged 1 commit into
mainfrom
ci/consolidate-hygiene-p1

Conversation

@acamarata

Copy link
Copy Markdown
Contributor

Summary

  • Merges clean-root.yml and generated-file-gate.yml (each a few seconds of real work, no toolchain) into one hygiene.yml job with a single checkout — 1 runner claim per push instead of 2. Neither was a required branch-protection check.
  • Trigger scope is the union of the two originals (clean-root ran on [main, develop], generated-file-gate on [main] only) — broader, not narrower, so nothing that used to run stops running.
  • ci.yml and gitleaks.yml are untouched.
  • No paths: filters added anywhere. hygiene.yml needs to see every changed file to catch a committed generated file in any path. ci.yml/gitleaks.yml carry required checks — GitHub does not skip a required check just because paths-ignore excluded a push from triggering it, it blocks the merge waiting on a check that never runs. Path-filtering a required-check workflow is unsafe, so it was deliberately not attempted.

Safety

  • Required check Lint + Typecheck + Test (client + mobile) (job gate in ci.yml) — file untouched, byte-identical to origin/main.
  • Required check gitleaks (job gitleaks in gitleaks.yml) — file untouched.
  • No checks removed, no continue-on-error, no loosened assertions.

Test plan

  • actionlint on all workflow files post-change: exit 0
  • actionlint on the pre-change baseline (origin/main): exit 0 — no new findings
  • Diffed ci.yml and gitleaks.yml against origin/main: identical

clean-root.yml and generated-file-gate.yml were two separate near-instant
workflows (a few seconds of real work each) each claiming their own runner
allocation on every push/PR. Neither is a required branch-protection check
for nsentry, so they're merged into one hygiene.yml job with a single
checkout — same steps, same logic, 1 runner claim instead of 2.

Trigger scope is the union of the two originals (clean-root ran on
[main, develop], generated-file-gate on [main] only), so nothing that used
to run stops running.

ci.yml and gitleaks.yml are untouched — both carry required checks
('Lint + Typecheck + Test (client + mobile)' and 'gitleaks'). No paths
filter was added to either: GitHub does not skip a required check just
because paths-ignore excluded it from a push, it blocks the merge waiting
on a check that never runs — so path-filtering a required-check workflow
is unsafe and was deliberately not attempted.
@acamarata
acamarata merged commit ef28f70 into main Sep 1, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant