678 lines
16 KiB
Plaintext
678 lines
16 KiB
Plaintext
// Moved from docs/05-operations/qa-intake-workflow.adoc to docs/working/archive/operations/qa-intake-workflow.adoc on 2026-06-16 (docs reorg Phase 2)
|
|
= QA Intake & CAPA Backlog Population Workflow
|
|
|
|
**Document ID:** QA-INTAKE-WORKFLOW
|
|
**Version:** 1.0.0
|
|
**Status:** Active
|
|
**Last Updated:** November 2, 2025
|
|
**Owner:** QA Team Lead
|
|
**Part of:** GOVERNANCE_REFERENCE_MANUAL (Appendix)
|
|
|
|
---
|
|
|
|
== Overview
|
|
|
|
The **QA Intake Workflow** describes how the QA team:
|
|
|
|
1. **Identifies defects** from multiple sources (manual testing, CI/CD failures, user reports)
|
|
2. **Creates CAPA issues** in GitHub with full defect information
|
|
3. **Triages issues** for severity and FMEA requirement
|
|
4. **Populates the backlog** for developer assignment
|
|
5. **Tracks resolution** through to release
|
|
|
|
This is a **manual process with automated support**:
|
|
- GitHub Actions auto-validates and labels submissions
|
|
- Kanban board auto-updates based on status
|
|
- Notifications alert team of new issues
|
|
|
|
---
|
|
|
|
== Data Sources for Defects
|
|
|
|
QA receives defects from multiple sources:
|
|
|
|
[cols="2,3,1"]
|
|
|===
|
|
| Source | Description | Trigger
|
|
|
|
| **Manual Testing**
|
|
| QA team runs feature tests, finds bugs
|
|
| QA creates issue manually (template-guided)
|
|
|
|
| **Automated CI/CD Failures**
|
|
| baseline-torture-test detects regressions
|
|
| Jenkins auto-creates CAPA issue + notifies QA
|
|
|
|
| **User Reports**
|
|
| End users report issues via GitHub Issues
|
|
| QA team converts to CAPA format
|
|
|
|
| **Developer Self-Report**
|
|
| Developer finds bug during own testing
|
|
| Developer creates CAPA issue directly
|
|
|
|
| **Code Review**
|
|
| Reviewer finds issue in PR
|
|
| Reviewer creates CAPA issue linked to PR
|
|
|
|
|===
|
|
|
|
---
|
|
|
|
== CAPA Issue Creation (Manual Process)
|
|
|
|
=== Step 1: QA Identifies a Defect
|
|
|
|
Defect sources:
|
|
- Running manual test suite
|
|
- Testing new feature before merge
|
|
- Regression during nightly baseline test
|
|
- User-reported bug
|
|
- Code review finding
|
|
|
|
=== Step 2: QA Creates GitHub Issue
|
|
|
|
**Location:** https://github.com/rajames440/StarForth/issues/new
|
|
|
|
**Choose Template:** "CAPA - Defect Report"
|
|
|
|
Fill out the following:
|
|
|
|
```markdown
|
|
## CAPA: [Defect Title]
|
|
|
|
### 1. What is the Problem?
|
|
|
|
Clear, concise description of the defect:
|
|
- What happens? (observed behavior)
|
|
- What should happen? (expected behavior)
|
|
- Impact: (user-facing, development blocker, data loss, etc.)
|
|
|
|
**Example:**
|
|
"When calling 'DO ... +LOOP' with negative increment, the loop
|
|
never terminates. Expected: Loop exits after correct iterations."
|
|
|
|
### 2. How to Reproduce
|
|
|
|
Step-by-step instructions to reproduce:
|
|
|
|
1. Build with: `make fast`
|
|
2. Run: `./build/starforth`
|
|
3. Execute: `5 1 DO I . -1 +LOOP CR`
|
|
4. Observe: Infinite loop (CPU at 100%)
|
|
5. Expected: Should print "5 4 3 2 1" and exit
|
|
|
|
**Environment:**
|
|
- StarForth version: v2.0.2
|
|
- Platform: x86_64 (Linux)
|
|
- Build: fast configuration
|
|
- Compiler: GCC 11.4
|
|
|
|
### 3. Expected Behavior
|
|
|
|
What should happen (correct behavior):
|
|
|
|
"Loop should respect the increment sign. With -1 +LOOP, it should
|
|
count downward until the loop condition is false."
|
|
|
|
### 4. Code Location (if known)
|
|
|
|
Point to relevant files:
|
|
- `src/control_words.c`: Line 156 (DO word implementation)
|
|
- `src/control_words.c`: Line 201 (+LOOP word implementation)
|
|
|
|
### 5. Severity Assessment
|
|
|
|
**Severity:** Major (blocks certain use cases)
|
|
|
|
- [ ] Critical (crash, data loss, security issue)
|
|
- [ ] Major (feature broken, blocking)
|
|
- [ ] Minor (incorrect behavior, workaround exists)
|
|
- [ ] Low (cosmetic, documentation)
|
|
|
|
### 6. Is this a Regression?
|
|
|
|
- [ ] Yes, worked before
|
|
- [ ] No, new bug
|
|
- [ ] Unknown
|
|
|
|
If yes: Last working version? When did it break?
|
|
|
|
### 7. Workaround
|
|
|
|
Is there a workaround?
|
|
|
|
"Use positive increment: `5 5 DO I . 1 +LOOP` instead of
|
|
negative increment."
|
|
|
|
### 8. Test Case (if available)
|
|
|
|
Provide a minimal test case:
|
|
|
|
\`\`\`forth
|
|
: TEST-NEGATIVE-LOOP
|
|
5 1 DO I . -1 +LOOP CR ;
|
|
|
|
TEST-NEGATIVE-LOOP
|
|
\`\`\`
|
|
|
|
Expected output: `5 4 3 2 1`
|
|
Actual output: (infinite loop)
|
|
```
|
|
|
|
=== Step 3: QA Monitors Automation
|
|
|
|
**GitHub Actions will:**
|
|
1. Validate CAPA template
|
|
2. Auto-classify severity (critical/major/minor/low)
|
|
3. Detect if it's a regression
|
|
4. Add labels: `type:capa`, `severity:{level}`, optionally `regression`
|
|
5. Assign to QA team
|
|
6. Post validation comment
|
|
7. Add to Kanban board (QA Review column)
|
|
|
|
**What QA sees:**
|
|
- Template validation passes/fails
|
|
- Auto-assigned severity label
|
|
- GitHub comment with next steps
|
|
- Kanban card created
|
|
|
|
=== Step 4: QA Formal Triage
|
|
|
|
QA lead reviews and performs **formal triage**:
|
|
|
|
```
|
|
For each CAPA issue:
|
|
|
|
☐ Reproducibility:
|
|
- [ ] QA reproduced the defect
|
|
- [ ] QA documented reproduction environment
|
|
- [ ] QA confirmed it's not a user error
|
|
|
|
☐ Impact Assessment:
|
|
- [ ] Affects which users/use cases?
|
|
- [ ] Blocks any features or releases?
|
|
- [ ] Data loss or security risk?
|
|
|
|
☐ Root Cause Analysis (Initial):
|
|
- [ ] Is this a regression? (worked before)
|
|
- [ ] Is this a design issue or implementation bug?
|
|
- [ ] Likely root cause file/function?
|
|
|
|
☐ FMEA Decision:
|
|
- [ ] No FMEA required (simple localized fix)
|
|
- [ ] Optional FMEA (medium-risk fix)
|
|
- [ ] Required FMEA (complex, safety-critical, changes core)
|
|
|
|
☐ Backlog Priority:
|
|
- [ ] Critical (blocker, release needed immediately)
|
|
- [ ] High (should fix soon, affects users)
|
|
- [ ] Medium (fix in normal sprint)
|
|
- [ ] Low (nice-to-have, can wait)
|
|
|
|
☐ Assignment:
|
|
- [ ] Developer owner assigned (if known)
|
|
- [ ] Assigned to next sprint/backlog
|
|
```
|
|
|
|
**QA Comments with Findings:**
|
|
|
|
```markdown
|
|
## ✅ CAPA Triage Complete
|
|
|
|
**Reproducibility:** ✓ Confirmed
|
|
- Reproduced on x86_64 Linux (GCC 11.4)
|
|
- Occurs consistently with: 5 1 DO I . -1 +LOOP CR
|
|
- Not a user error
|
|
|
|
**Root Cause (Preliminary):**
|
|
Likely in `src/control_words.c:201 (+LOOP implementation)`.
|
|
The loop limit check doesn't properly account for negative increment direction.
|
|
|
|
**FMEA Decision:** OPTIONAL
|
|
- This is a localized bug in loop control
|
|
- Medium risk (affects loop behavior)
|
|
- Formal FMEA can proceed after fix, not blocking development
|
|
|
|
**Backlog Priority:** HIGH
|
|
- Blocks certain DO...+LOOP patterns
|
|
- Affects portability of some FORTH programs
|
|
- Should fix in next 2 sprints
|
|
|
|
**Labels Added:**
|
|
- `severity:major` (feature broken)
|
|
- `regression` (likely broke in recent change)
|
|
- `capa:fmea-optional`
|
|
- `priority:high`
|
|
|
|
**Next:** Developer will create PR to fix. See CAPA_PROCESS.adoc step 2.
|
|
```
|
|
|
|
---
|
|
|
|
== Kanban Board Integration
|
|
|
|
=== Kanban Columns (StarForth Quality Kanban)
|
|
|
|
```
|
|
┌──────────────┬──────────────┬──────────────┬──────────────┬──────────────┐
|
|
│ Backlog │ QA Review │ In Progress │ In Review │ Done │
|
|
│ │ │ │ │ │
|
|
│ • ECO items │ • New CAPAs │ • Assigned │ • PR open │ • Released │
|
|
│ • Untrieged │ • Auto-fails │ • Developer │ • Tests pass │ • Merged to │
|
|
│ │ │ working │ • QA reviews │ master │
|
|
│ │ │ │ │ │
|
|
└──────────────┴──────────────┴──────────────┴──────────────┴──────────────┘
|
|
```
|
|
|
|
=== How CAPA Issues Flow Through Kanban
|
|
|
|
```
|
|
GitHub Issue Created
|
|
↓
|
|
GitHub Actions auto-validates
|
|
↓
|
|
Kanban Card added to "QA Review"
|
|
↓
|
|
QA Triage (Manual)
|
|
↓
|
|
QA adds severity + priority labels
|
|
↓
|
|
QA Comments with triage findings
|
|
↓
|
|
Developer picks up issue
|
|
↓
|
|
Developer creates PR (Closes #CAPA-###)
|
|
↓
|
|
Card moves to "In Progress"
|
|
↓
|
|
PR triggers Jenkins pipeline
|
|
↓
|
|
Tests pass, QA approves
|
|
↓
|
|
Card moves to "In Review"
|
|
↓
|
|
PM approves release
|
|
↓
|
|
Merged to master
|
|
↓
|
|
Card moves to "Done"
|
|
↓
|
|
Issue auto-closes
|
|
```
|
|
|
|
---
|
|
|
|
== Automated CAPA Creation from Test Failures
|
|
|
|
=== How It Works
|
|
|
|
When **baseline-torture-test** detects a test failure:
|
|
|
|
1. **baseline-torture-test job fails**
|
|
2. **Jenkins parses test output** for failures
|
|
3. **test-failure-capa-auto-create job triggered**
|
|
4. **GitHub issue auto-created** with:
|
|
- Failure description
|
|
- Test name and error
|
|
- Build configuration
|
|
- Platform
|
|
- Reproduction command
|
|
- Link to Jenkins logs
|
|
5. **Kanban card added** to QA Review column
|
|
6. **QA team notified** of new failure
|
|
|
|
=== Auto-Created CAPA Format
|
|
|
|
**GitHub Auto-Creates Issue:**
|
|
|
|
```markdown
|
|
## CAPA: Test Failure - test_arithmetic_words.c:156
|
|
|
|
**Test:** `test_add_overflow`
|
|
**Status:** FAILED
|
|
**Build:** fast configuration (x86_64)
|
|
**Failure Type:** Assertion failure
|
|
|
|
### What Failed?
|
|
|
|
Test `test_add_overflow` in `src/test_runner/modules/test_arithmetic_words.c`
|
|
line 156 failed assertion.
|
|
|
|
### How to Reproduce
|
|
|
|
1. Build: `make fast`
|
|
2. Run: `./build/starforth test`
|
|
3. Observe: Test suite fails at test_add_overflow
|
|
|
|
### Environment
|
|
|
|
- Build Config: fast
|
|
- Platform: x86_64
|
|
- Compiler: GCC (default)
|
|
- Test Suite: fail-fast harness (936 tests)
|
|
|
|
### Failure Output
|
|
|
|
\`\`\`
|
|
src/test_runner/modules/test_arithmetic_words.c:156:
|
|
Assertion failed: (result == 0xFFFFFFFFFFFFFFFF)
|
|
Actual: 0x7FFFFFFFFFFFFFFF
|
|
\`\`\`
|
|
|
|
### Jenkins Details
|
|
|
|
- Build: baseline-torture-test #342
|
|
- Job: baseline-torture-test (scheduled nightly)
|
|
- Date/Time: 2025-11-02 00:00:UTC
|
|
- Log: [Link to Jenkins build log]
|
|
|
|
### Type
|
|
|
|
- [ ] New test failure (regression)
|
|
- [ ] Flaky test
|
|
- [ ] Environment issue
|
|
- [ ] Test itself is broken
|
|
|
|
### Automated Labels
|
|
|
|
- `type:capa`
|
|
- `severity:major`
|
|
- `source:ci-failure`
|
|
- `component:arithmetic`
|
|
```
|
|
|
|
=== QA Review of Auto-Created CAPAs
|
|
|
|
**QA triages auto-created issues in the "QA Review" column:**
|
|
|
|
```markdown
|
|
## ✅ Triage of CI Test Failure
|
|
|
|
**Verification:**
|
|
- [ ] Manually reproduced on development machine
|
|
- [ ] Confirmed in clean build environment
|
|
- [ ] Verified on multiple platforms (if applicable)
|
|
|
|
**Analysis:**
|
|
- Likely cause: Integer overflow handling in ADD word
|
|
- Last working version: v2.0.1
|
|
- Breaking commit: [git hash] "Optimize ADD operation"
|
|
|
|
**FMEA Decision:** REQUIRED
|
|
- Core arithmetic operation affected
|
|
- Could impact all programs using ADD with large numbers
|
|
- Must complete FMEA before fix can be released
|
|
|
|
**Priority:** CRITICAL
|
|
- Blocks tests
|
|
- Blocks release until fixed
|
|
- Regression in core functionality
|
|
|
|
**Next Steps:**
|
|
1. Developer creates PR: `fix/capa-###-add-overflow`
|
|
2. Implements fix for overflow handling
|
|
3. Adds regression test preventing re-occurrence
|
|
4. PR triggers full test suite
|
|
5. QA validates fix
|
|
6. PM approves release
|
|
```
|
|
|
|
---
|
|
|
|
== QA Team Responsibilities
|
|
|
|
=== Daily/Weekly Tasks
|
|
|
|
[cols="2,3,1"]
|
|
|===
|
|
| Task | Description | Frequency
|
|
|
|
| **Monitor New Issues**
|
|
| Check for new CAPA submissions, validate templates
|
|
| Daily
|
|
|
|
| **Triage CAPAs in QA Review**
|
|
| Review auto-validated issues, perform formal triage
|
|
| Daily
|
|
|
|
| **Verify Reproductions**
|
|
| Manually reproduce reported defects
|
|
| Daily
|
|
|
|
| **Update Kanban Board**
|
|
| Move cards between columns as status changes
|
|
| Daily
|
|
|
|
| **Monitor CI/CD Failures**
|
|
| Check baseline-torture-test results, review auto-created CAPAs
|
|
| Daily (after test runs)
|
|
|
|
| **FMEA Analysis (if needed)**
|
|
| Conduct formal FMEA for high-risk fixes
|
|
| As needed (per ECO/CAPA decision)
|
|
|
|
|===
|
|
|
|
=== Sprint Planning
|
|
|
|
Before each sprint:
|
|
|
|
1. **Review Kanban backlog** (not yet assigned)
|
|
2. **Prioritize** CAPAs and ECOs
|
|
3. **Estimate effort** with developer input
|
|
4. **Plan sprint** based on team capacity
|
|
5. **Assign issues** to developers
|
|
6. **Update Kanban** - move cards to "Backlog" → "In Progress"
|
|
|
|
---
|
|
|
|
== Issue Templates (GitHub)
|
|
|
|
=== ECR Template (Feature Request)
|
|
|
|
**Path:** `.github/ISSUE_TEMPLATE/ecr.md`
|
|
|
|
See 01-ECR_PROCESS.adoc for full template
|
|
|
|
=== ECO Template (Approved Feature)
|
|
|
|
**Path:** `.github/ISSUE_TEMPLATE/eco.md`
|
|
|
|
See 02-ECO_PROCESS.adoc for full template
|
|
|
|
=== CAPA Template (Defect Report)
|
|
|
|
**Path:** `.github/ISSUE_TEMPLATE/capa.md`
|
|
|
|
```markdown
|
|
---
|
|
name: CAPA - Defect Report
|
|
about: Report a bug or defect (automated workflow)
|
|
title: 'CAPA: [Defect Title]'
|
|
labels: 'type:capa, status:submitted'
|
|
---
|
|
|
|
## CAPA: [Brief Defect Description]
|
|
|
|
### 1. What is the Problem?
|
|
|
|
*Describe what's broken:*
|
|
|
|
- What happens? (observed behavior)
|
|
- What should happen? (expected behavior)
|
|
- Impact level?
|
|
|
|
### 2. How to Reproduce
|
|
|
|
*Step-by-step instructions:*
|
|
|
|
1. ...
|
|
2. ...
|
|
3. Observe: [defect occurs]
|
|
|
|
*Environment:*
|
|
- StarForth version:
|
|
- Platform:
|
|
- Build configuration:
|
|
- Compiler:
|
|
|
|
### 3. Expected Behavior
|
|
|
|
*What should happen instead?*
|
|
|
|
### 4. Code Location (if known)
|
|
|
|
*Relevant files/functions:*
|
|
|
|
### 5. Severity
|
|
|
|
- [ ] Critical (crash, data loss, security)
|
|
- [ ] Major (feature broken)
|
|
- [ ] Minor (incorrect behavior)
|
|
- [ ] Low (cosmetic)
|
|
|
|
### 6. Is this a Regression?
|
|
|
|
- [ ] Yes (worked before)
|
|
- [ ] No (new bug)
|
|
- [ ] Unknown
|
|
|
|
### 7. Workaround
|
|
|
|
*Is there a temporary workaround?*
|
|
|
|
### 8. Test Case
|
|
|
|
*Minimal reproducible example:*
|
|
|
|
\`\`\`forth
|
|
[code here]
|
|
\`\`\`
|
|
|
|
---
|
|
|
|
*GitHub Actions will auto-validate this CAPA and add labels.*
|
|
*QA team will triage and add to backlog.*
|
|
```
|
|
|
|
---
|
|
|
|
== Metrics & Reporting
|
|
|
|
=== QA Dashboard
|
|
|
|
Track these metrics (weekly/monthly):
|
|
|
|
[cols="2,3"]
|
|
|===
|
|
| Metric | Purpose
|
|
|
|
| **New CAPAs per week**
|
|
| Monitor defect discovery rate
|
|
|
|
| **CAPA resolution time (average)**
|
|
| How long from submission to fix release
|
|
|
|
| **Regression rate**
|
|
| % of CAPAs that are regressions (indicates quality issues)
|
|
|
|
| **FMEA required %**
|
|
| % of CAPAs requiring formal FMEA
|
|
|
|
| **Severity distribution**
|
|
| Critical / Major / Minor / Low breakdown
|
|
|
|
| **By component**
|
|
| Which components have most CAPAs (quality hotspots)
|
|
|
|
| **CI/CD failure rate**
|
|
| % of nightly baseline tests that fail
|
|
|
|
|===
|
|
|
|
---
|
|
|
|
== Process Checklist for QA Lead
|
|
|
|
=== Daily Standup
|
|
|
|
```
|
|
☐ Check GitHub for new CAPA submissions
|
|
☐ Review QA Review column (new auto-created and manual issues)
|
|
☐ Reproduce any critical/major CAPAs
|
|
☐ Update Kanban status based on developer activity
|
|
☐ Check Jenkins baseline-torture-test results
|
|
☐ Notify team of any blockers
|
|
```
|
|
|
|
=== Weekly Triage Session
|
|
|
|
```
|
|
☐ Review all CAPAs in QA Review column
|
|
☐ Perform formal triage (reproducibility, root cause, FMEA decision)
|
|
☐ Add severity and priority labels
|
|
☐ Comment with triage findings
|
|
☐ Assign to developer (if ready)
|
|
☐ Add to sprint backlog
|
|
```
|
|
|
|
=== Sprint Planning
|
|
|
|
```
|
|
☐ Review unassigned CAPAs in backlog
|
|
☐ Estimate effort with developer input
|
|
☐ Prioritize based on severity + impact
|
|
☐ Assign to sprint
|
|
☐ Move Kanban cards to "In Progress"
|
|
☐ Notify team of assignments
|
|
```
|
|
|
|
---
|
|
|
|
== Common Issues & Troubleshooting
|
|
|
|
=== Issue: CAPA template validation fails
|
|
|
|
**Symptom:** GitHub Actions rejects CAPA submission
|
|
|
|
**Solution:**
|
|
1. Ensure issue includes: "What is the Problem?", "How to Reproduce", "Expected Behavior"
|
|
2. GitHub Actions will post comment with missing sections
|
|
3. Edit issue to add required sections
|
|
4. Validation will re-run automatically
|
|
|
|
=== Issue: Regression not detected
|
|
|
|
**Symptom:** Bug exists but wasn't caught by tests
|
|
|
|
**Solution:**
|
|
1. CAPA includes: "Add regression test" in developer PR requirements
|
|
2. Developer must add test that would catch this bug
|
|
3. Test added to `src/test_runner/modules/` relevant file
|
|
4. Test included in full baseline torture test
|
|
|
|
=== Issue: FMEA decision unclear
|
|
|
|
**Symptom:** QA isn't sure if FMEA is needed
|
|
|
|
**Solution:**
|
|
- See 04-FMEA_PROCESS.adoc for decision matrix
|
|
- When in doubt: Ask PM (Robert A. James)
|
|
- Document decision in CAPA issue comments
|
|
|
|
---
|
|
|
|
== See Also
|
|
|
|
- **01-ECR_PROCESS.adoc** - Feature request workflow
|
|
- **02-ECO_PROCESS.adoc** - Approved feature workflow
|
|
- **03-CAPA_PROCESS.adoc** - Automated CAPA pipeline after submission
|
|
- **04-FMEA_PROCESS.adoc** - Formal risk analysis (when required)
|
|
- **GOVERNANCE_REFERENCE_MANUAL.adoc** - Master governance document
|
|
|
|
---
|
|
|
|
**Document Owner:** QA Team
|
|
**Last Updated:** 2025-11-02
|
|
**Status:** Active |