feat(wsl-mover): pause a moving project's terminals through Sleep and prove they exited (D1b-5d) (#28820)

* feat(wsl-mover): pause a moving project's terminals through Sleep and prove they exited (D1b-5d)

* fix(wsl-mover): gate again under the fence, swap journal phases atomically, keep sessions frozen through commit (D1b-5d)

* test(wsl-mover): the fence e2e walks the journal one phase at a time, as a move writes it (D1b-5d)
This commit is contained in:
Neil
2026-10-14 13:07:50 -07:00
committed by GitHub
parent 5976c4628d
commit 8f83f6b076
37 changed files with 1306 additions and 100 deletions
@@ -5,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { closeTestStores, createStore, testState } from '../persistence-test-harness'
import type { Store } from '../persistence'
import { wslMoveCutoverFixture as cutover } from '../persistence/__fixtures__/wsl-mover/wsl-move-cutover-fixture'
import { writeWslMoveCutover } from '../persistence/moving-wsl-projects/wsl-move-cutover-journal'
import { seedWslMoveCutover } from '../persistence/__fixtures__/wsl-mover/wsl-move-journal-seeding'
import {
WslMoveProjectFencedError,
loadWslMoveFence,
@@ -71,7 +71,7 @@ beforeEach(() => {
testState.dir = mkdtempSync(join(tmpdir(), 'wsl-move-meta-'))
store = createStore()
loadWslMoveFence(testState.dir)
writeWslMoveCutover(testState.dir, cutover('move-1', 'source-fenced'))
seedWslMoveCutover(testState.dir, cutover('move-1', 'source-fenced'))
})
afterEach(async () => {
resetWslMoveFenceForTests()
@@ -3,7 +3,7 @@ import { tmpdir } from 'node:os'
import { join } from 'node:path'
import { describe, expect, it, vi } from 'vitest'
import { wslMoveCutoverFixture as cutover } from '../persistence/__fixtures__/wsl-mover/wsl-move-cutover-fixture'
import { writeWslMoveCutover } from '../persistence/moving-wsl-projects/wsl-move-cutover-journal'
import { seedWslMoveCutover } from '../persistence/__fixtures__/wsl-mover/wsl-move-journal-seeding'
import {
WslMoveProjectFencedError,
loadWslMoveFence,
@@ -107,7 +107,7 @@ describe('adoptRuntimeProvisionedRoot', () => {
const userDataPath = mkdtempSync(join(tmpdir(), 'wsl-move-adopt-'))
try {
loadWslMoveFence(userDataPath)
writeWslMoveCutover(
seedWslMoveCutover(
userDataPath,
cutover('move-1', 'source-fenced', {}, { repoIds: ['repo-vm'] })
)