# Remove untyped escapes from one module and add explicit return types

A module held together by escape hatches, given real types and explicit return signatures.

Category: Type safety and lint rules
Source: https://letsship.ai/use-cases/remove-untyped-escapes
Published: 2026-08-25

## Goal

Replace untyped escapes in one module with real types and add explicit return types to exported functions.

## Acceptance criteria

- No untyped escape hatches remain in the module
- Every exported function has an explicit return type
- No type-checker suppression comments are added
- The typecheck passes

## What lands as proof

A clean typecheck with no suppressions, which is the difference between typing the code and hiding it.

## 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: Type {module} properly

Description: Replace untyped escapes in one module with real types and add explicit return types to exported functions.

Acceptance criteria:
- No untyped escape hatches remain in the module
- Every exported function has an explicit return type
- No type-checker suppression comments are added
- The typecheck passes

Before you create the issue, search this repository for untyped escapes and replace {module} with the densest area.
```

## Questions

### What does the agent actually change?

The ticket is scoped to one outcome: replace untyped escapes in one module with real types and add explicit return types to exported functions. 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 typecheck passes with no new suppressions added, 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.
