Acceptance Criteria — Template¶
BABOK-aligned acceptance criteria (BABOK §10.1 Acceptance and Evaluation Criteria). One AC spec per feature, written inside the feature's own folder, beside its SRS and TC notes. AC is the bridge between the requirement (SRS / Jira) and the test cases — every TC in the matching <slug>_tc.md register traces back to an AC ID here.
| Feature kind | AC spec path |
|---|---|
| Standalone | 01_Features/<slug>/<slug>_ac.md |
| Under a domain | 01_Features/<domain>/<slug>/<slug>_ac.md |
e.g. 01_Features/login/login_ac.md, 01_Features/workshop/wa_workshop/wa_workshop_ac.md.
<CODE>is the feature's short code, read from its hub note01_Features/<domain>/<slug>/<slug>.md(e.g.wa_workshop→WS). The file is named by the full feature slug; the IDs use the short code.NNis the zero-padded AC / rule number, continuous within the feature across all its tickets.- A feature AC spec accumulates criteria from multiple Jira tickets. Each row's Jira column links the specific ticket it came from.
- Two complementary forms (BABOK allows both — use whichever fits each requirement):
- Scenario-based —
Given / When / Then, for observable behaviour & flows. - Rule-based — Business Rules table, for constraints/policies/calculations that don't fit a scenario cleanly.
- Replace every
<...>placeholder. Keep AC from the user/business perspective — describe what, never how (no UI clicks, no tech/implementation detail).
Quality bar (each AC must be): Testable · Unambiguous · Atomic (one outcome) · Consistent · Complete · Independent of implementation. If you can't write a Then that passes/fails objectively, the AC isn't done.
AC Spec header¶
---
type: ac
feature: "[[<slug>]]"
code: <CODE>
jira: [RC-4, RC-12]
version: 1.0
updated: <YYYY-MM-DD>
ba_owner: <BA name>
reviewer: <name>
status: Draft
---
# Acceptance Criteria — <Feature name> (`<CODE>`)
<!-- feature: links up to the hub. It is this note's ONLY link — never link an
AC spec sideways to another feature; cite the other feature's code instead. -->
User Story¶
Scenario-based AC — Given / When / Then¶
One row = one scenario. Compound steps: put extra steps in the same cell with
<br>And …/<br>But …. Cover happy path first, then alternate, negative, edge.
Business Rules (rule-based AC)¶
For constraints, policies, limits, formulas, permissions — things that govern many scenarios. State the rule precisely enough to test.
| Rule ID | Business Rule | Jira | Rationale / Source | Criticality | Linked TCs | Status |
|---|---|---|---|---|---|---|
BR--01 |
🔴 Critical | TC-<CODE>-005 |
Draft | |||
BR--02 |
🔴 Critical | TC-<CODE>-006 |
Draft |
Column Guide¶
| Column | Description | Values / Format |
|---|---|---|
| AC ID | Unique scenario id — TCs trace back to this | AC-<CODE>-NN |
| Rule ID | Unique business-rule id — TCs trace back to this | BR-<CODE>-NN |
| Scenario | Short title of the behaviour, start with an action verb | Plain text |
| Jira | The ticket this AC came from | [<KEY>](<url>) |
| Type | Class of scenario | Happy / Alternate / Negative / Edge / Permission |
| Criticality | Impact if this AC fails — drives the verifying TC's priority | 🔴 Critical / 🟠 High / 🟡 Medium / ⚪ Low |
| Given | Precondition / context true before the action | One state per clause; <br>And … to compound |
| When | The single action or event that triggers behaviour | One trigger |
| Then | Observable, verifiable outcome — pass/fail must be objective | Include error code / message / state where relevant |
| Linked TCs | TCs in the feature's <slug>_tc.md register that verify this AC |
TC-<CODE>-NNN, comma-separated |
| Status | Review state of the criterion | Draft / Reviewed / Approved |
Traceability¶
Jira ticket ──▶ AC-<CODE>-NN / BR-<CODE>-NN ──▶ TC-<CODE>-NNN
(the why) (the what — this file) (the how to verify)
- Upward: header
SRS ref+ each row'sJiracolumn link the AC to its source. - Downward: the
Linked TCscolumn lists the test cases that verify each AC. - Coverage rule: every
CriticalandHighAC and every business rule must have ≥1 Linked TC. Flag any such AC with zero TCs as a coverage gap. Conversely, every TC must name theACit verifies — no orphan TCs.
Write all content in English (the vault is shared on GitHub) — body text, cell content, headers, and Type / Criticality / Status values.