cliffhall
f99402918d
feat: queue concurrent local:gate runs on a machine-wide lease ( #2339 )
...
`npm run local:gate` now runs its stages under `scripts/gate-lease.mjs`, a
`proper-lockfile` lease under `os.tmpdir()` (or `$XDG_RUNTIME_DIR`), so a gate
started in a second worktree waits for the first instead of overlapping it.
Measured on v2/main @ aa56551b : a quiet gate is 257s green; two started
together had one fail at 279s (`smoke:web:chromium` found port 6298 held by
the other gate's smoke) and the survivor take 338s. Under the lease, three
gates started within seconds ran back to back (259s, then 262s, then the
third), each green with zero timeouts.
The lease grants rather than polls a threshold, so two waiters cannot
deadlock on each other; a holder that dies stops refreshing and is taken over
after 30s; a signal to the wrapper stops the whole process group, releases,
and exits 128+signal; the wait names the holder's pid and worktree and gives
up after 45 minutes. `INSPECTOR_SKIP_GATE_LEASE=1` bypasses it. A lock that
cannot be created runs the gate unleased with a warning.
`scriptChainRuns` looks through the wrapper (and only it) so the existing
vouches about what `local:gate` runs keep reading the real chain.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PsmUAZ6aLUAFqenjJKSSRp
Signed-off-by: cliffhall <cliff@futurescale.com>
2026-09-12 22:00:33 -04:00
..
lib
feat: queue concurrent local:gate runs on a machine-wide lease ( #2339 )
2026-09-12 22:00:33 -04:00
dependabot-alerts.mjs
chore(deps): address Copilot review round 15 on #2243
2026-09-04 09:26:20 -04:00
dependabot-alerts.test.mjs
chore(deps): address Copilot review round 15 on #2243
2026-09-04 09:26:20 -04:00
dependency-refresh.mjs
chore(deps): address Copilot review round 1 on #2243
2026-09-04 09:06:32 -04:00
dependency-refresh.test.mjs
chore(deps): paginate the release list so the highest version is actual
2026-09-04 09:06:31 -04:00
gate-lease.mjs
feat: queue concurrent local:gate runs on a machine-wide lease ( #2339 )
2026-09-12 22:00:33 -04:00
gate-lease.test.mjs
feat: queue concurrent local:gate runs on a machine-wide lease ( #2339 )
2026-09-12 22:00:33 -04:00
install-clients.mjs
feat: port CLI, TUI, and launcher from v1.5 into v2 ( #1452 )
2026-06-14 20:27:49 -04:00
install-smoke-browser.mjs
fix(smoke): reject an empty SMOKE_BROWSER; test the installer's argument logic
2026-08-25 22:52:02 -04:00
install-smoke-browser.test.mjs
fix(smoke): reject an empty SMOKE_BROWSER; test the installer's argument logic
2026-08-25 22:52:02 -04:00
pack-and-verify.mjs
ci: drop the Firefox smoke job; keep the engines as an on-demand tool
2026-08-25 23:55:19 -04:00
run-engine-smokes.mjs
fix(smoke): route the Chromium tier through ENGINE_SMOKES too
2026-08-26 08:55:51 -04:00
run-engine-smokes.test.mjs
feat: queue concurrent local:gate runs on a machine-wide lease ( #2339 )
2026-09-12 22:00:33 -04:00
sdk-watch.mjs
fix: address Copilot review round 5 on the SDK watch
2026-09-06 11:00:01 -04:00
sdk-watch.test.mjs
fix: address Copilot review round 6, and close out the federation follow-up
2026-09-06 11:19:17 -04:00
skill-eval.mjs
chore: land the #2247 round-9 review findings on v2/main ( #2322 )
2026-09-11 08:22:16 -04:00
skill-eval.test.mjs
feat(skills): address Copilot review round 3 on #2204
2026-09-04 20:28:37 -04:00
smoke-cli.mjs
chore(scripts): build test-servers unconditionally from one shared helper
2026-08-25 00:57:48 -04:00
smoke-launcher.mjs
refactor: self-validating clients, fast validate + separate coverage/smoke ( #1504 ) ( #1505 )
2026-06-21 11:41:33 -04:00
smoke-tui.mjs
fix(scripts): make the test stubs drain, and the raw-mode guard testable ( #2147 )
2026-08-26 22:13:35 -04:00
smoke-web-app.mjs
chore(scripts): rename the local pre-push gate off ci, and guard it out of CI ( #2146 )
2026-08-26 23:56:34 -04:00
smoke-web-browser.mjs
fix: state every test-gate timeout instead of inheriting a library default
2026-09-12 08:32:34 -04:00
smoke-web-elicitation.mjs
fix: state every test-gate timeout instead of inheriting a library default
2026-09-12 08:32:34 -04:00
smoke-web-tabs.mjs
fix: state every test-gate timeout instead of inheriting a library default
2026-09-12 08:32:34 -04:00
smoke-web.mjs
fix(smoke): await the server's exit before removing its catalog, and test it
2026-08-11 14:32:20 -04:00
verify-build-gate.mjs
fix: address Copilot review round 4
2026-09-12 20:25:00 -04:00
verify-bundle-externals.mjs
test(proxy): isolate proxy env per file; word the guard failure by candidate source
2026-08-23 23:00:28 -04:00
verify-bundle-externals.test.mjs
test(proxy): isolate proxy env per file; word the guard failure by candidate source
2026-08-23 23:00:28 -04:00
verify-dep-lockstep.main.test.mjs
chore: address Copilot review round 1 ( #2226 )
2026-09-05 16:09:44 -04:00
verify-dep-lockstep.mjs
chore: address Copilot review round 3 ( #2226 )
2026-09-05 17:14:44 -04:00
verify-dep-lockstep.test.mjs
chore: address Copilot review round 1 ( #2226 )
2026-09-05 16:09:44 -04:00
verify-format-coverage.main.test.mjs
chore: address Copilot review round 20
2026-08-29 05:32:12 -04:00
verify-format-coverage.mjs
chore: address Copilot review round 9
2026-08-29 03:04:03 -04:00
verify-skills-cli.mjs
chore: address Copilot review round 17
2026-08-29 04:54:04 -04:00
verify-skills-cli.test.mjs
chore: address Copilot review round 16
2026-08-29 04:40:48 -04:00
verify-skills.main.test.mjs
feat: queue concurrent local:gate runs on a machine-wide lease ( #2339 )
2026-09-12 22:00:33 -04:00
verify-skills.mjs
fix: address Copilot review round 4
2026-09-12 20:25:00 -04:00
verify-test-timeouts.mjs
refactor: assert retry and asyncUtilTimeout at runtime, delete the source scanner
2026-09-12 15:58:19 -04:00
verify-test-timeouts.test.mjs
refactor: assert retry and asyncUtilTimeout at runtime, delete the source scanner
2026-09-12 15:58:19 -04:00
verify-typecheck-coverage.main.test.mjs
Merge origin/v2/main: move the #1939 npx fix into the shared tsc-program lib
2026-08-16 17:07:50 -07:00
verify-typecheck-coverage.mjs
Merge origin/v2/main: move the #1939 npx fix into the shared tsc-program lib
2026-08-16 17:07:50 -07:00
verify-typecheck-coverage.test.mjs
chore(scripts): derive dep-lockstep candidates from what enters each tsc program
2026-08-16 12:17:15 -04:00