| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- # <!-- Powered by BMAD™ Core -->
- template:
- id: qa-gate-template-v1
- name: Quality Gate Decision
- version: 1.0
- output:
- format: yaml
- filename: qa.qaLocation/gates/{{epic_num}}.{{story_num}}-{{story_slug}}.yml
- title: "Quality Gate: {{epic_num}}.{{story_num}}"
- # Required fields (keep these first)
- schema: 1
- story: "{{epic_num}}.{{story_num}}"
- story_title: "{{story_title}}"
- gate: "{{gate_status}}" # PASS|CONCERNS|FAIL|WAIVED
- status_reason: "{{status_reason}}" # 1-2 sentence summary of why this gate decision
- reviewer: "Quinn (Test Architect)"
- updated: "{{iso_timestamp}}"
- # Always present but only active when WAIVED
- waiver: { active: false }
- # Issues (if any) - Use fixed severity: low | medium | high
- top_issues: []
- # Risk summary (from risk-profile task if run)
- risk_summary:
- totals: { critical: 0, high: 0, medium: 0, low: 0 }
- recommendations:
- must_fix: []
- monitor: []
- # Examples section using block scalars for clarity
- examples:
- with_issues: |
- 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: "Missing integration tests for auth flow"
- suggested_action: "Add test coverage for critical paths"
- when_waived: |
- waiver:
- active: true
- reason: "Accepted for MVP release - will address in next sprint"
- approved_by: "Product Owner"
- # ============ Optional Extended Fields ============
- # Uncomment and use if your team wants more detail
- optional_fields_examples:
- quality_and_expiry: |
- quality_score: 75 # 0-100 (optional scoring)
- expires: "2025-01-26T00:00:00Z" # Optional gate freshness window
- evidence: |
- evidence:
- tests_reviewed: 15
- risks_identified: 3
- trace:
- ac_covered: [1, 2, 3] # AC numbers with test coverage
- ac_gaps: [4] # AC numbers lacking coverage
- nfr_validation: |
- nfr_validation:
- security: { status: CONCERNS, notes: "Rate limiting missing" }
- performance: { status: PASS, notes: "" }
- reliability: { status: PASS, notes: "" }
- maintainability: { status: PASS, notes: "" }
- history: |
- history: # Append-only audit trail
- - at: "2025-01-12T10:00:00Z"
- gate: FAIL
- note: "Initial review - missing tests"
- - at: "2025-01-12T15:00:00Z"
- gate: CONCERNS
- note: "Tests added but rate limiting still missing"
- risk_summary: |
- risk_summary: # From risk-profile task
- totals:
- critical: 0
- high: 0
- medium: 0
- low: 0
- # 'highest' is emitted only when risks exist
- recommendations:
- must_fix: []
- monitor: []
- recommendations: |
- recommendations:
- immediate: # Must fix before production
- - action: "Add rate limiting to auth endpoints"
- refs: ["api/auth/login.ts:42-68"]
- future: # Can be addressed later
- - action: "Consider caching for better performance"
- refs: ["services/data.service.ts"]
|