Files
LithosAnanake/docs/working/archive/operations/qa-intake-workflow.adoc
T

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