# Quality playbook

URL: /workflows/quality/playbook · Id: `page:workflows/quality/playbook`

> How the Quality Team checks every Change, every agent definition, every night and everything that leaves a Startup, with verdicts instead of Approvals.

Quality in a [Startup](/business/nouns/startup) is a set of checks that run inside every [Process](/business/nouns/process), not a gate at the end. The [Quality Team](/agents/quality) writes the checks, runs them on every [Change](/business/nouns/change) and every night, and reviews what leaves the Startup.

## Verdicts, not approvals
An [Approval](/business/nouns/approval) lets an [Action](/business/nouns/action) proceed on someone’s say-so. A verdict states whether checks passed, with the [Evidence](/business/nouns/evidence). The Quality Team returns only verdicts, so no Change waits on anyone’s opinion.

Every check is deterministic where it can be: a field has its shape, a link resolves, a count meets its threshold. Two runs over the same state return the same verdict. Where a call needs taste, an [Evaluator](/business/nouns/evaluator) scores it against a rubric, and the score becomes Evidence.

A [Task](/business/nouns/task) closes only when its checks pass, never on a [Worker](/business/nouns/worker)’s word. When an [Agent](/business/nouns/agent) reports a [Page](/business/nouns/page) published, the check fetches the live Page and counts its links before the Task closes.

## Every Change, before it merges
[Change verdict](/code/verification/change-verdict) runs when a Change is created. It runs the Change’s checks and replays known-good runs against it. It also sends a synthetic paying stranger through signup, payment and first value.

Take a [Marketplace](/products/templates/marketplace) for certified translators. A Change makes a tax field required at checkout in every country, so a synthetic stranger from a country without that tax cannot pay. The [Tester](/agents/quality/tester) records the fail with the Action attached, and the Change waits for a fix.

A pass lets the Change merge, and the [Engineering Team](/agents/engineering) ships it by traffic share. Quality never deploys; it only says whether the Change is fit.

## Agent definitions are tested like code
Everything an Agent runs is a versioned definition: its instructions, [Skills](/business/nouns/skill), [Tools](/business/nouns/tool) and model [Policies](/business/nouns/policy). Each has an eval suite of cases drawn from real runs. A new variant passes that suite offline, no worse than the current [Version](/business/nouns/version), before any traffic sees it.

Online, the variant runs as an [Experiment](/business/nouns/experiment) on the one [Metric](/business/nouns/metric) that matters, with guardrails that stop it on harm. The winner compiles into the definition. A loser concludes and stays on record.

Take a support Agent for a language-tutoring app. A new instruction set passes 231 of 240 cases, against 228 for the current one. At 10% of [Conversations](/business/nouns/conversation) it resolves 4 points more without a handoff, so it ships to all.

The same record earns autonomy. A [Role](/business/nouns/role) agent moves from assist to supervised to full when its eval track record holds at 95% or better. It moves back down on its own when the record slips.

## Reviewing what leaves the Startup
A [Message](/business/nouns/message) cannot be unsent and money cannot be unspent. The [Reviewer](/agents/quality/reviewer) therefore checks every outbound Message and every money move at medium stakes or above.

Stakes set the delay window. By default low proceeds at once, medium waits one business hour, and high waits one business day. Windows are [Settings](/business/nouns/setting) that inherit down from the [Studio](/business/nouns/studio), and a Startup can only tighten them.

[Guards](/business/nouns/guard) run first, in code. Evaluators run next, wherever the Policy enables them. A failed review cancels or redirects the Action with the reason recorded, and the Reviewer may raise a tier, never lower one.

Coverage matters more than cleverness. Reviewing only risky-looking Messages lets attacks through, and so does reviewing Messages but not refunds.

## The nightly run
At 03:00 the [Nightly quality run](/code/verification/nightly-quality-run) re-runs every check across the Startup. It replays known-good Actions on every [Interface](/business/nouns/interface) and runs the synthetic stranger again. Each regression becomes an [Issue](/business/nouns/issue) with the Action that reproduces it.

[Interface](/business/nouns/interface) parity is one of those checks. Every [Verb](/business/nouns/verb) behaves the same through the API, CLI, MCP and SDK, and the nightly run proves it.

## Next
- [Quality Team](/agents/quality): who staffs it, what runs when, and what it measures.
- [Engineering playbook](/workflows/engineering/playbook): how a passing Change reaches all traffic.
- [Keep the winner](/workflows/product/playbook#test-then-keep-the-winner): how a winning variant becomes the definition.