From 6c759c2f019755907744ff9f2d4bbcab136501f0 Mon Sep 17 00:00:00 2001 From: hekataion Date: Fri, 24 Jul 2026 11:25:56 -0400 Subject: [PATCH 1/2] ci: add 10-minute timeout to test jobs Prevents hung tests from burning GHA minutes for hours. Tests normally complete in ~90s, so 10 minutes is generous headroom while still failing fast on hangs. Co-Authored-By: Claude --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 984f4d7d..d0a0c1df 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,6 +43,7 @@ jobs: test: runs-on: ubuntu-latest + timeout-minutes: 10 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 @@ -60,6 +61,7 @@ jobs: test-e2e: runs-on: ubuntu-latest + timeout-minutes: 10 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 @@ -77,6 +79,7 @@ jobs: test-upgrade: runs-on: ubuntu-latest + timeout-minutes: 10 steps: # fetch-depth: 0 pulls full history + tags — the upgrade test resolves the # prior release from `volute-v*` git tags (it skips gracefully without them). From 1ad88c0e9749eb2f03d6a8771f0c23bf61af9ba8 Mon Sep 17 00:00:00 2001 From: hekataion Date: Fri, 24 Jul 2026 11:35:46 -0400 Subject: [PATCH 2/2] fix: adjust upgrade-e2e migration count assertion for post-squash world After migration squash (#713), the prior release may have more migrations applied than HEAD ships (HEAD has 1 idempotent baseline; prior had 20). Change the assertion from equality to >= since the baseline is idempotent. Co-Authored-By: Claude --- test/upgrade-e2e.test.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/test/upgrade-e2e.test.ts b/test/upgrade-e2e.test.ts index cd846dab..611e421f 100644 --- a/test/upgrade-e2e.test.ts +++ b/test/upgrade-e2e.test.ts @@ -384,16 +384,14 @@ describe("cross-version upgrade e2e", { timeout: 600000 }, () => { it("migrations apply forward and the mind's state survives the upgrade", async (t) => { if (skipReason) return t.skip(skipReason); - // DB is fully migrated to the working tree's expectation. When the prior - // release already shared this migration set, this proves the DB opens - // forward-compatibly; the day a release adds a migration, it becomes a live - // forward-migration assertion. A count mismatch catches a migration that - // half-applied yet still let the daemon boot. - const [applied, expected] = [await appliedMigrationCount(), headMigrationCount()]; - assert.equal( - applied, - expected, - `expected ${expected} applied migrations (working-tree drizzle/), found ${applied}`, + // After migration squash (#713), the prior release may have more migrations + // applied than HEAD ships (HEAD has 1 idempotent baseline; prior had 20). + // The baseline runs as a no-op on existing installs, so we just verify the + // DB is healthy with at least the HEAD count applied. + const [applied, minExpected] = [await appliedMigrationCount(), headMigrationCount()]; + assert.ok( + applied >= minExpected, + `expected at least ${minExpected} applied migrations (working-tree drizzle/), found ${applied}`, ); // The mind the prior release created starts and responds under the new code.