books/.bmad-core/tasks/qa-gate.md
Greg fa8acef423 Epic 1, Story 1.1: Project Initialization & Repository Setup
- Initialize Git repository with main branch
- Create comprehensive .gitignore for Node.js, React, and environment files
- Set up directory structure (frontend/, backend/, docs/)
- Create detailed README.md with project overview and setup instructions
- Add .env.example with all required environment variables
- Configure Prettier for consistent code formatting

All acceptance criteria met:
 Git repository initialized with appropriate .gitignore
 Directory structure matches Technical Assumptions
 README.md created with project overview and setup docs
 .env.example file with all required environment variables
 Prettier config files added for code formatting consistency

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 15:12:30 +01:00

3.8 KiB

qa-gate

Create or update a quality gate decision file for a story based on review findings.

Purpose

Generate a standalone quality gate file that provides a clear pass/fail decision with actionable feedback. This gate serves as an advisory checkpoint for teams to understand quality status.

Prerequisites

  • Story has been reviewed (manually or via review-story task)
  • Review findings are available
  • Understanding of story requirements and implementation

Gate File Location

ALWAYS check the .bmad-core/core-config.yaml for the qa.qaLocation/gates

Slug rules:

  • Convert to lowercase
  • Replace spaces with hyphens
  • Strip punctuation
  • Example: "User Auth - Login!" becomes "user-auth-login"

Minimal Required Schema

schema: 1
story: '{epic}.{story}'
gate: PASS|CONCERNS|FAIL|WAIVED
status_reason: '1-2 sentence explanation of gate decision'
reviewer: 'Quinn'
updated: '{ISO-8601 timestamp}'
top_issues: [] # Empty array if no issues
waiver: { active: false } # Only set active: true if WAIVED

Schema with Issues

schema: 1
story: '1.3'
gate: CONCERNS
status_reason: 'Missing rate limiting on auth endpoints poses security risk.'
reviewer: 'Quinn'
updated: '2025-01-12T10:15:00Z'
top_issues:
  - id: 'SEC-001'
    severity: high # ONLY: low|medium|high
    finding: 'No rate limiting on login endpoint'
    suggested_action: 'Add rate limiting middleware before production'
  - id: 'TEST-001'
    severity: medium
    finding: 'No integration tests for auth flow'
    suggested_action: 'Add integration test coverage'
waiver: { active: false }

Schema when Waived

schema: 1
story: '1.3'
gate: WAIVED
status_reason: 'Known issues accepted for MVP release.'
reviewer: 'Quinn'
updated: '2025-01-12T10:15:00Z'
top_issues:
  - id: 'PERF-001'
    severity: low
    finding: 'Dashboard loads slowly with 1000+ items'
    suggested_action: 'Implement pagination in next sprint'
waiver:
  active: true
  reason: 'MVP release - performance optimization deferred'
  approved_by: 'Product Owner'

Gate Decision Criteria

PASS

  • All acceptance criteria met
  • No high-severity issues
  • Test coverage meets project standards

CONCERNS

  • Non-blocking issues present
  • Should be tracked and scheduled
  • Can proceed with awareness

FAIL

  • Acceptance criteria not met
  • High-severity issues present
  • Recommend return to InProgress

WAIVED

  • Issues explicitly accepted
  • Requires approval and reason
  • Proceed despite known issues

Severity Scale

FIXED VALUES - NO VARIATIONS:

  • low: Minor issues, cosmetic problems
  • medium: Should fix soon, not blocking
  • high: Critical issues, should block release

Issue ID Prefixes

  • SEC-: Security issues
  • PERF-: Performance issues
  • REL-: Reliability issues
  • TEST-: Testing gaps
  • MNT-: Maintainability concerns
  • ARCH-: Architecture issues
  • DOC-: Documentation gaps
  • REQ-: Requirements issues

Output Requirements

  1. ALWAYS create gate file at: qa.qaLocation/gates from .bmad-core/core-config.yaml

  2. ALWAYS append this exact format to story's QA Results section:

    Gate: {STATUS} → qa.qaLocation/gates/{epic}.{story}-{slug}.yml
    
  3. Keep status_reason to 1-2 sentences maximum

  4. Use severity values exactly: low, medium, or high

Example Story Update

After creating gate file, append to story's QA Results section:

## QA Results

### Review Date: 2025-01-12

### Reviewed By: Quinn (Test Architect)

[... existing review content ...]

### Gate Status

Gate: CONCERNS → qa.qaLocation/gates/{epic}.{story}-{slug}.yml

Key Principles

  • Keep it minimal and predictable
  • Fixed severity scale (low/medium/high)
  • Always write to standard path
  • Always update story with gate reference
  • Clear, actionable findings