From 61d549a9d5b936a58e99a95d51b8a41ed7d0b31f Mon Sep 17 00:00:00 2001 From: Caleb Allen Date: Wed, 19 Aug 2026 09:16:43 -0400 Subject: [PATCH] ci: run the pre-push hooks sequentially `go test -race ./...` saturates every core for ~47s, and the UI tier it was sharing them with is a real Chromium with wall-clock timeouts. So the browser lost, at random: setup took 106s inside the hook against 63s standalone, and a different suite failed on each run -- three failing to fetch setup.ts from Vitest's own dev server once, a 15s "did not mount itself" the next time -- against a suite that passes 898/898 five times running on its own. That reads as "your branch broke the frontend" when nothing is wrong, which is the most expensive kind of false negative: the next person bisects a change that was never at fault. It cost two pushes here before the summary line gave it away. Sequential costs about 15s. Closes #128 --- lefthook.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lefthook.yml b/lefthook.yml index eb6614c..7c56e83 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -63,8 +63,17 @@ pre-commit: root: "frontend/" run: node scripts/check-css-literals.mjs +# Deliberately sequential, unlike pre-commit. `go test -race` +# saturates every core for the better part of a minute and the UI tier +# is a real browser with wall-clock timeouts, so run together the +# browser loses: setup took 106s inside the hook against 63s +# standalone, and a different suite failed each time -- three suites +# failing to fetch setup.ts from Vitest's own dev server on one run, a +# 15s "did not mount itself" on the next, against a suite that passes +# 898/898 on its own. A gate that fails at random is not a gate. The +# ~15s saved is not worth it. pre-push: - parallel: true + parallel: false commands: go-test: glob: "*.go"