# Test runner or bundler migration, one workspace per ticket

One workspace moved to the new runner or bundler, with the same tests passing and the pass list compared line for line.

Category: Dependency and runtime upgrades
Source: https://letsship.ai/use-cases/test-runner-or-bundler-migration
Published: 2026-08-25

## Goal

Migrate one workspace to the new test runner or bundler without changing what the tests assert.

## Acceptance criteria

- Every test that passed before passes after, compared as a list
- No test is skipped or rewritten to make the migration work
- Configuration lives in one file rather than spread across scripts
- Both toolchains do not remain installed at the end

## What lands as proof

The before and after pass lists, identical, plus the removed dependency in the manifest diff.

## Prompt

Copy this to an agent to open the ticket:

```text
Create a Linear issue in my team and assign it to the SHIP agent.

Title: Move {workspace} from {old} to {new}

Description: Migrate one workspace to the new test runner or bundler without changing what the tests assert.

Acceptance criteria:
- Every test that passed before passes after, compared as a list
- No test is skipped or rewritten to make the migration work
- Configuration lives in one file rather than spread across scripts
- Both toolchains do not remain installed at the end

Before you create the issue, identify the migration this repository is part-way through and replace {workspace}, {old} and {new}. If several workspaces remain, name only one.
```

## Questions

### What does the agent actually change?

The ticket is scoped to one outcome: migrate one workspace to the new test runner or bundler without changing what the tests assert. Work that serves that outcome is in scope, and anything outside it is left for a separate ticket, so the pull request stays reviewable.

### How do I know the work is done?

The pull request carries the evidence, not only the diff. Here that means the same tests, the new runner, an identical pass list, so a reviewer can confirm the result without reproducing the work locally.

### How much oversight does this need?

The run stops once the plan is written. Somebody reads the approach and approves it before any code exists, which is the cheapest moment to redirect the work.
