Acceptance Criteria

Acceptance criteria define when a goal or task is complete. Well-written criteria are essential for effective planning.

What Makes Good Criteria

Specific and Measurable

Criteria should be concrete enough to verify objectively.

yaml
# Good: Specific
acceptanceCriteria:
  - API responds within 200ms for 95th percentile
  - All endpoints return JSON with Content-Type header

# Avoid: Vague
acceptanceCriteria:
  - API is fast
  - Responses are properly formatted

Testable

Each criterion should be verifiable, ideally through automated tests.

yaml
acceptanceCriteria:
  - Unit tests cover 80% of code
  - Integration tests pass for all endpoints
  - No TypeScript errors in strict mode

Independent

Criteria should be evaluatable independently of each other.

yaml
# Good: Independent criteria
acceptanceCriteria:
  - Users can upload files up to 10MB
  - Uploaded files are scanned for viruses
  - File metadata is stored in database

# Avoid: Dependent criteria
acceptanceCriteria:
  - Upload works
  - And scanning works on uploaded files

Writing Criteria at Different Levels

Goal-Level Criteria

High-level outcomes that define success for the entire goal.

yaml
kind: Goal
spec:
  acceptanceCriteria:
    - Users can complete checkout flow
    - Payment processing handles errors gracefully
    - Order confirmation emails are sent

Task-Level Criteria

Specific, detailed criteria for individual tasks.

yaml
tasks:
  - id: payment-integration
    acceptanceCriteria:
      - Stripe API client is configured
      - Test mode works in development
      - Production keys loaded from environment

Common Patterns

Functional Criteria

yaml
acceptanceCriteria:
  - Form validates required fields
  - Error messages display inline
  - Submit button disabled during processing

Non-Functional Criteria

yaml
acceptanceCriteria:
  - Page loads in under 3 seconds
  - Works on mobile viewports (320px+)
  - Supports keyboard navigation

Documentation Criteria

yaml
acceptanceCriteria:
  - README explains setup steps
  - API endpoints are documented
  - Environment variables are listed

Next Steps