# 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
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}.
```
