# Migrate off a deprecated library at each call site

A library the ecosystem moved on from, swapped out one call site at a time with a behaviour test at each.

Category: Dependency and runtime upgrades
Source: https://letsship.ai/use-cases/migrate-off-a-deprecated-library
Published: 2026-08-25

## Goal

Replace a deprecated library with its maintained equivalent at every call site.

## Acceptance criteria

- No file imports the old library
- Each migrated call site has a test covering the behaviour it relies on
- The old package is removed from the manifest and the lockfile
- Any behaviour the replacement does not cover is named in the description

## What lands as proof

A search showing the old import is gone, and a test per call site proving the behaviour survived the swap.

## 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: Replace {old} with {new} across the codebase

Description: Replace a deprecated library with its maintained equivalent at every call site.

Acceptance criteria:
- No file imports the old library
- Each migrated call site has a test covering the behaviour it relies on
- The old package is removed from the manifest and the lockfile
- Any behaviour the replacement does not cover is named in the description

Before you create the issue, find a deprecated or unmaintained dependency in this repository and replace {old} and {new} with the real pair. Count the call sites and put the number in the description.
```

## Questions

### What does the agent actually change?

The ticket is scoped to one outcome: replace a deprecated library with its maintained equivalent at every call site. 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 behaviour test at each site, the old import gone, so a reviewer can confirm the result without reproducing the work locally.

### How much oversight does this need?

None is required before the run starts. Every claim this ticket makes can be checked by machine, so the agent works straight through and a person reviews the finished pull request like any other.
