# Acceptance criteria

Truth document. Use for: the promises one capability must keep, stated as machine-parseable claims. Lives in `docs/acceptance/`, one `kebab-case.md` per capability. Written at specification time — before implementation — and read by verification surfaces, which parse each `AC-n` line as a claim to grade the built product against.

### Rules

- **Frontmatter is required**: `type: acceptance-criteria`, `status:` (`draft` → `active` → `deprecated`). No `owns:` — acceptance criteria own no code.
- **One `AC-n` key per criterion, stable forever.** Keys are never renumbered and never reused: a criterion that no longer applies is marked retired in place, so every claim a past verification graded still resolves.
- **Each criterion is one observable assert**, phrased as a checkable statement about the running product — never about the code's internals. If it cannot be observed from outside, it is a design note, not a criterion.
- **The `AC-n:` line grammar is load-bearing** — verification parses these lines. Keep the key at line start, exactly `AC-<number>:`, followed by the assert sentence. Formatting that buries the key (tables, emphasis-wrapped keys, nested bullets) breaks the parse.

### Template

```markdown
---
type: acceptance-criteria
description: "{at most 300 characters: what this document settles and where its boundary sits}"
status: draft
---

# Acceptance Criteria: {Capability}

Scope: {one line — what part of the product these criteria bind}.

AC-1: {observable assert about the running product}.

AC-2: {observable assert}.

AC-3: (retired) {kept verbatim, marked retired — never renumbered}.
```
