Files

Workspace bootstrap recovery acceptance

This opt-in suite uses a disposable loopback instance, real Git repositories, the real Git scan scheduler, durable retries, and the task UI. A deterministic process adapter verifies the prepared files and completes its task through the run-scoped API. It makes no model calls. The test Git executable injects a real timeout only when the test explicitly arms a marker inside its repository.

From a development worktree, start the foreground instance:

node cli/node_modules/tsx/dist/cli.mjs tests/e2e/workspace-bootstrap/launch.ts

The launcher creates an isolated test-drive, installs the Git shim, and sets a 10-second snapshot deadline after test-drive clears inherited configuration. Production's longer snapshot deadline would outlast the injected failure.

Set BOOTSTRAP_REAL_GIT to the absolute Git executable if it is not /usr/bin/git. Do not point this fixture at a normal development or production instance. The seeder checks the loopback host, trusted-local mode, and company name. It does not create tasks; each test creates its task through the UI.

Use the ready URL printed by test-drive:

WORKSPACE_BOOTSTRAP_TEST_URL=http://127.0.0.1:3100 \
pnpm exec playwright test --config tests/e2e/workspace-bootstrap/playwright.config.ts

The tests prove that one timeout schedules a retry and completes without manual Retry, that persistent timeouts stop after three total runs, and that the final state survives reload. Source edits remain intact and ignored private files are not copied. The worker also verifies that persisted task context contains the assignment, the full and compact prompt variants, and the description revision. Screenshots and failure traces go to test-results/workspace-bootstrap. Stop test-drive with Ctrl-C. Its disposable data directory remains for inspection.