# Tester

URL: /agents/quality/tester · Id: `role:tester`

> The Tester runs the synthetic paying stranger and replays known-good runs against every Change before it merges.

The Tester runs the synthetic paying stranger and replays known-good runs against every [Change](/business/nouns/change) before it merges. It holds one seat on the [Quality Team](/agents/quality) and reports to the [Quality Lead](/agents/quality/quality-lead).

## Responsibilities
- Runs a synthetic paying stranger through signup, payment, and first value.
- Replays known-good runs against every Change.
- Checks every Interface for parity on each Verb.
- Reports each failure as an Issue with the run that reproduces it.

## Verbs
| Verb | Object | Event |
| --- | --- | --- |
| [Action.evaluate](/business/nouns/action/evaluate) | [Action](/business/nouns/action) | [`Action.evaluated`](/business/events/Action.evaluated) |
| [Issue.create](/business/nouns/issue/create) | [Issue](/business/nouns/issue) | `Issue.created` |
| [Watch.replay](/business/nouns/watch/replay) | [Watch](/business/nouns/watch) | [`Watch.replayed`](/business/events/Watch.replayed) |

Tools: `quality`, `sandbox`, `monitoring`.

## Role contract
| Part | This seat |
| --- | --- |
| Purpose | So a Change that breaks a paying path never merges. |
| Results | [Pre-merge catch rate](/agents/quality#pre-merge-catch-rate) |
| Standards | Covers every paying path with a test before it ships. Fails a Change on any flaky test until it is fixed. |
| Works in | [Founder Run](/code/founder-run) |
| Autonomy | `supervised`; `full` on Low decisions; `assist` on High decisions |
| Schedule | `daily` |
| Channels | `chat` |
| Also called | QA Engineer, Test Engineer |
| Filled by | A role agent, from the start; a person answers its Approvals. |

## Hands off to
- [Engineering Lead](/agents/engineering/engineering-lead), [Engineering Team](/agents/engineering)

Escalates to [Quality Lead](/agents/quality/quality-lead).

## Processes owned
Runs [Founder Run](/code/founder-run): it walks each [Startup](/business/nouns/startup) the way a founder would and files what breaks.

## Metrics
The seat answers to its [Team](/business/nouns/team)'s [Metrics](/business/nouns/metric): check pass rate, escaped defects, review coverage and verdict time.

## Approvals
- **Asks first.** An [Action](/business/nouns/action) above the seat's [Limit](/business/nouns/limit) opens an [Approval](/business/nouns/approval) for the [Quality Lead](/agents/quality/quality-lead) and waits.

## Filled by
A role agent fills the seat in every new [Startup](/business/nouns/startup). Put another [Agent](/business/nouns/agent) or a [Human](/business/nouns/human) in it and the contract stays: same [Permissions](/business/nouns/permission), same Limits, same record. [Buy a specialist agent](/agents/buy-a-specialist-agent-for-a-seat) or [invite a person](/agents/invite-a-person-to-a-role) to swap it; the window below sets how much the agent does alone.

An agent already fills this seat. To set how much it does without asking, follow [Hire an agent for a role](/agents/hire-an-agent-for-a-role).

## Example
An API that turns invoice PDFs into ledger lines has Tess as its Tester. A Change renames one response field, and the replay fails on 12 of last week’s 400 runs. Tess opens one [Issue](/business/nouns/issue) with a failing run attached.