From aa17c3326f6725a630c415fc093f0d19dea74d8c Mon Sep 17 00:00:00 2001 From: norvalbv Date: Mon, 6 Jul 2026 22:25:25 +0100 Subject: [PATCH] release: v0.29.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ships the correctness reviewer + reviewer-eval bench (#31) to consumers via the v0.29.0 tag (installable devkit.git#v0.29.0 carries prebuilt dist/). Main stays source-only per convention (dist is tag-only; cf. 6f1cf41 v0.28.1). Also raises the vitest test/hook timeout 30s -> 120s (global config + the overlay.test.mts per-file override) — the release full-suite gate was clipping 2-4 DIFFERENT tests each run at 30s on a loaded box (~50-70), always a timeout, never an assertion, each passing in isolation. Unblocks release + pre-push under load. --- cli/__tests__/overlay.test.mts | 7 ++++--- package.json | 2 +- vitest.config.mjs | 16 ++++++++++------ 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/cli/__tests__/overlay.test.mts b/cli/__tests__/overlay.test.mts index 53bbfaa7..c03d4672 100644 --- a/cli/__tests__/overlay.test.mts +++ b/cli/__tests__/overlay.test.mts @@ -39,9 +39,10 @@ const { mkTmp, cleanup } = rootRegistry(); // These are subprocess-heavy integration tests (real `git init`/`commit` + a full applyInit overlay). // Isolated they run in ~1-2s, but under the full suite's parallel load git/FS scheduling contention -// pushes them to 5-25s. Match the global 30s testTimeout (vitest.config.mjs): an earlier 20s cap here -// UNDERCUT the global and re-flaked on a loaded box — a genuine hang still dies, assertions unchanged. -vi.setConfig({ testTimeout: 30000 }); +// pushes them well past 30s. Match the global 120s testTimeout (vitest.config.mjs) — a lower cap +// here UNDERCUTS the global and re-flakes on a loaded box (observed at load ~50-70) — a genuine hang +// still dies, just slower; assertions unchanged. +vi.setConfig({ testTimeout: 120000 }); // A work repo that already has a committed husky hook + flat eslint + biome (the team's). function workRepo() { diff --git a/package.json b/package.json index 1e38bc7f..67a5d6ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@norvalbv/devkit", - "version": "0.28.1", + "version": "0.29.0", "private": true, "type": "module", "license": "MIT", diff --git a/vitest.config.mjs b/vitest.config.mjs index 929c3fc7..85187e58 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -11,12 +11,16 @@ export default defineConfig({ setupFiles: ['./vitest.setup.mjs'], // The git-integration tests spawn real repos in tmp; their afterEach rmSync cleanup can // exceed vitest's 10s default hook ceiling on a slow or loaded CI filesystem (false redness - // that isn't an assertion failure). 30s absorbs that without masking a genuine hang. - hookTimeout: 30000, + // that isn't an assertion failure). 120s absorbs that without masking a genuine hang. + hookTimeout: 120000, // Same false-redness class for the tests themselves: the spawn-heavy tests (devkit - // init/upgrade runs, git fixture repos) take 5-25s wall-clock on a loaded dev box (parallel - // agents hold load ~30+), and vitest's 5s default fails them with no assertion failing. - // 30s absorbs the load; a genuine hang still dies, just slower — assertions untouched. - testTimeout: 30000, + // init/upgrade runs, git fixture repos, agentic eval-bench rows) take 5-40s wall-clock on a + // loaded dev box, and vitest's 5s default fails them with no assertion failing. Observed: + // on a box at load ~50-70 (many parallel worktrees + a fallow audit) the `devkit release` + // full suite clipped 2-4 DIFFERENT tests each run at the old 30s ceiling — always a timeout, + // never an assertion, and every one passes in isolation. A ceiling, not a delay: passing + // tests stay fast; only the load-slow ones use more budget. 120s absorbs the load; a genuine + // hang still dies, just slower — assertions untouched. + testTimeout: 120000, }, });