# Fix contrast failures across one surface

Text and controls that fail contrast, corrected against the token palette rather than by inventing new colours.

Category: Accessibility and browser verification
Source: https://letsship.ai/use-cases/fix-contrast-failures
Published: 2026-08-25

## Goal

Bring every failing foreground and background pair on one surface up to the contrast standard, using existing design tokens.

## Acceptance criteria

- Every failing pair meets the standard, with measured ratios listed
- Fixes use existing tokens rather than new one-off colours
- Both themes are checked, not only the default
- Disabled and placeholder states are included

## What lands as proof

A table of measured ratios before and after for each pair, in the pull request.

## 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: Fix contrast on {surface}

Description: Bring every failing foreground and background pair on one surface up to the contrast standard, using existing design tokens.

Acceptance criteria:
- Every failing pair meets the standard, with measured ratios listed
- Fixes use existing tokens rather than new one-off colours
- Both themes are checked, not only the default
- Disabled and placeholder states are included

Before you create the issue, run a contrast check over this repository's surfaces and replace {surface} with the one with the most failures.
```

## Questions

### What does the agent actually change?

The ticket is scoped to one outcome: bring every failing foreground and background pair on one surface up to the contrast standard, using existing design tokens. 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 measured ratios listed per pair in the pull request, 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.
