```markdown
---
id: TC-{MODULE}-{NNN}
title: "{flow description}"
feature: "{feature name}"
priority: high|medium|low
type: functional|regression|smoke|e2e|edge-case
status: draft
tags: ["{tag1}", "{tag2}"]
commit: {commit-hash}
---

# {Title}

## Objective
{What this test verifies — 1-2 sentences describing the user goal and what the test proves}

## Preconditions
- {User role and permissions required}
- {System state required before starting — e.g., "at least one product exists in catalog"}
- {Test data requirements — e.g., "valid credit card in Stripe test mode"}
- {Navigation starting point — e.g., "user is logged into Admin portal"}

## Steps
| # | Action | Expected Result |
|---|--------|-----------------|
| 1 | {user action — Navigate to, Click, Enter, Select, Submit} | {observable outcome — page loads, form appears, message displays} |
| 2 | {next user action} | {what user sees or what changes} |
| 3 | {next user action} | {confirmation, redirect, updated state} |

## Postconditions
{Side effects to verify AFTER the flow completes — sourced from domain events and integration points}
- {e.g., "Order confirmation email sent to customer email address"}
- {e.g., "Inventory quantity decremented for purchased items"}
- {e.g., "Audit log entry created with action 'order.created'"}

## Edge Cases
{Variant scenarios worth separate attention — each could become its own TC if important enough}
- {e.g., "Order with mixed digital and physical products"}
- {e.g., "Payment fails after order created — verify rollback"}

## Notes
- Related TCs: {cross-references to other TCs in this module}
- Dependencies: {external system dependencies — payment gateway, email service}
- Known issues: {documented bugs or limitations affecting this flow}
```

**Frontmatter fields** align with what `test-case-locator` greps for (`id`, `title`, `priority`, `status`, `type`, `tags`). Always populate all fields — the locator agent extracts them for coverage reporting. The `commit` field tracks which code version was analyzed to produce this TC — used for staleness detection on regeneration.

**Steps table rules:**
- Actions use imperative verbs from the user's perspective: Navigate, Click, Enter, Select, Submit, Drag, Upload, Scroll
- Expected results describe what the user OBSERVES — visible UI changes, messages, redirects — not internal state
- Keep each row to one atomic action. Multi-step actions (fill form -> submit) split into separate rows
- Number steps sequentially — branching flows (if X then Y) become separate TCs

**Postconditions sourced from:**
- Domain events (e.g., `OrderCreatedEvent` -> "confirmation email sent")
- Message handlers (e.g., `InventoryReservationHandler` -> "inventory reserved")
- Webhook dispatches (e.g., `FulfillmentWebhookPublisher` -> "fulfillment notified")
- Audit log entries, cache invalidations, CRM syncs

**Priority definitions:**
- **high**: Core happy path, payment/money flows, data integrity, security-critical
- **medium**: Alternative paths, common edge cases, permission boundaries
- **low**: Rare edge cases, cosmetic validation, error message wording
