# Drop database columns and tables that nothing reads

Columns and tables nothing queries, dropped after usage evidence and a reviewed migration.

Category: Dead code and stale content
Source: https://letsship.ai/use-cases/drop-unread-database-columns
Published: 2026-08-25

## Goal

Drop database columns and tables that nothing reads, backed by usage evidence.

## Acceptance criteria

- Query-log evidence is attached
- The application is confirmed not to read or write them
- The column is stopped being written before it is dropped
- A backup or export is taken before the drop

## What lands as proof

Query-log evidence plus a staged sequence: stop writing, then drop, never both at once.

## 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: Drop the unread {objects}

Description: Drop database columns and tables that nothing reads, backed by usage evidence.

Acceptance criteria:
- Query-log evidence is attached
- The application is confirmed not to read or write them
- The column is stopped being written before it is dropped
- A backup or export is taken before the drop

Before you create the issue, check this repository's query logs and the application code for reads, then replace {objects}.
```

## Questions

### What does the agent actually change?

The ticket is scoped to one outcome: drop database columns and tables that nothing reads, backed by usage evidence. 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 usage evidence attached, the migration reviewed on the plan, so a reviewer can confirm the result without reproducing the work locally.

### How much oversight does this need?

The run stops for the plan, and the review bar is raised afterwards so that smaller suggestions block the merge too, not only serious findings.
