BMAD-METHOD/docs/bug-tracking/bug-tracking-workflow-READM...

22 KiB

Bug Tracking Workflow Wireframe

Quick Reference

COMMANDS:
  /triage              - Triage new bugs from bugs.md
  /implement bug-NNN   - Implement a bug fix
  /implement feature-N - Implement a feature
  /verify              - List pending verification
  /verify bug-NNN      - Verify and close specific bug
  /verify all          - Batch verify all

FILES:
  docs/bugs.md         - Human-readable bug tracking
  docs/bugs.yaml       - Agent-readable metadata

SEVERITY → COMPLEXITY → WORKFLOW ROUTING:
  ┌──────────┬─────────┬─────────┬─────────┬─────────┐
  │          │ TRIVIAL │ SMALL   │ MEDIUM  │ COMPLEX │
  ├──────────┼─────────┼─────────┼─────────┼─────────┤
  │ CRITICAL │ correct-course (any complexity)       │
  ├──────────┼─────────┼─────────┼─────────┼─────────┤
  │ HIGH     │direct-fx│tech-spec│corr-crs │corr-crs │
  ├──────────┼─────────┼─────────┼─────────┼─────────┤
  │ MEDIUM   │direct-fx│tech-spec│corr-crs │corr-crs │
  ├──────────┼─────────┼─────────┼─────────┼─────────┤
  │ LOW      │direct-fx│ backlog │ backlog │ backlog │
  └──────────┴─────────┴─────────┴─────────┴─────────┘

SEVERITY:
  critical - Core broken, crashes, data loss
  high     - Major feature blocked, workaround exists
  medium   - Partial breakage, minor impact
  low      - Cosmetic, edge case

COMPLEXITY:
  trivial  - One-liner, minimal change
  small    - Single file change
  medium   - Multi-file change
  complex  - Architectural change

STATUS FLOW:
  reported → triaged → [routed] → in-progress → fixed/implemented → verified → closed

STATUS VALUES:
  triaged      - Analyzed, routed, awaiting implementation
  routed       - Sent to tech-spec or correct-course workflow
  in-progress  - Developer actively working
  fixed        - Code complete, awaiting verification (bugs)
  implemented  - Code complete, awaiting verification (features)
  closed       - Verified and closed
  backlog      - Deferred to future sprint
  blocked      - Cannot proceed until issue resolved

Part 1: System Architecture

System Overview

                              INPUT SOURCES
  +-------------------+     +-------------------+     +-------------------+
  |   IN-APP MODAL    |     |   MANUAL ENTRY    |     |  EXTERNAL ISSUE   |
  |   (Optional API)  |     |   (bugs.md)       |     |  TRACKER IMPORT   |
  +--------+----------+     +--------+----------+     +--------+----------+
           |                         |                         |
           +------------+------------+-------------------------+
                        |
                        v
           +============================+
           |     /triage (WORKFLOW)     |
           +============================+
                        |
        +---------------+---------------+---------------+
        |               |               |               |
        v               v               v               v
   direct-fix      tech-spec     correct-course     backlog
        |               |               |               |
        v               v               v               v
   /implement      /tech-spec     /correct-course   (deferred)
        |               |               |
        +---------------+---------------+
                        |
                        v
                   /verify → CLOSED

File Architecture

{project-root}/
  docs/
    bugs.md              <-- User-facing: informal bug reports & tracking
    bugs.yaml            <-- Agent-facing: structured metadata database
    epics.md             <-- Context: for mapping bugs to stories
  _bmad/bmm/
    config.yaml          <-- Project configuration
    workflows/
      bug-tracking/      <-- Triage workflow files
      implement/         <-- Implementation workflow
      verify/            <-- Verification workflow

bugs.md Structure

# Bug Tracking - {project_name}

# manual input
## Bug: Login fails on iOS Safari
Description of the bug...
Reported by: User Name
Date: 2025-01-15

- **Crash on startup (Android)**: App crashes immediately. CRITICAL.

1. Form validation missing - No validation on email field

---

# Tracked Bugs
### bug-001: Login fails on iOS Safari
Brief description...
- **Severity:** high
- **Complexity:** small
- **Workflow:** tech-spec
- **Related:** story-2-3
**Notes:** Triage reasoning...

---

# Tracked Feature Requests
### feature-001: Dark mode toggle
Brief description...
- **Priority:** medium
- **Complexity:** medium
- **Workflow:** tech-spec

---

# Fixed Bugs
[IMPLEMENTED] bug-003: Header alignment [Sev: low, Fixed: 2025-01-18, Verified: pending]
  - Fix: Adjusted flexbox styling
  - File(s): src/components/Header.tsx

bug-002: Form submission error [Sev: medium, Fixed: 2025-01-15, Verified: 2025-01-16, CLOSED]
  - Fix: Added error boundary

---

# Implemented Features
[IMPLEMENTED] feature-002: Export to CSV [Impl: 2025-01-20, Verified: pending]
  - Files: src/export.ts, src/utils/csv.ts

Part 2: Workflow Operations

Slash Command Reference

Command Description When to Use
/triage Main workflow - triage user-reported bugs When new bugs are in bugs.md
/implement bug-NNN Implement a specific bug fix After triage, routed for direct-fix
/implement feature-NNN Implement a feature request After feature is triaged
/verify List all pending verification After implementation, before closing
/verify bug-NNN Verify and close specific bug After testing confirms fix works
/verify all Batch verify all pending items Bulk close multiple fixes

/triage Workflow

USER INVOKES: /triage
         |
         v
+---------------------------+
| STEP 1: INITIALIZATION    |
+---------------------------+
| - Load config.yaml        |
| - Check for bugs.yaml     |
| - Detect existing session |
+------------+--------------+
             |
    +--------+--------+
    |                 |
    v                 v
+-------------+   +-------------+
| Has pending |   | Fresh start |
| triaged work|   +------+------+
+------+------+          |
       |                 v
       v          +-------------+
+-------------+   | Scan manual |
| Show status |   | input section|
| [T/I/V/L/Q] |   +------+------+
+-------------+          |
                         v
                  +-------------+
                  | [S/C/Q]     |
                  | Sync/Cont/Q |
                  +------+------+
                         |
         +---------------+---------------+
         v               v               v
    [S] API Sync    [C] Continue    [Q] Quit

+---------------------------+
| STEP 2: API SYNC          |  (Optional - if [S] selected)
+---------------------------+
| GET /api/bug-reports/pending
| - Fetch, format, insert to bugs.md
| - POST /mark-synced
+---------------------------+

+---------------------------+
| STEP 3: PARSE             |
+---------------------------+
| Read "# manual input" only
| - Parse headers, bullets, numbered lists
| - Extract: title, desc, reporter, platform
| - Compare with bugs.yaml (NEW vs EXISTING)
+------------+--------------+
             |
    +--------+--------+
    v                 v
No new bugs      {N} new bugs
   [HALT]        [C] Continue
                      |
                      v
+---------------------------+
| STEP 4: TRIAGE (per bug)  |
+---------------------------+
| FOR EACH NEW BUG:
| 1. Generate bug-NNN ID
| 2. Assess SEVERITY (critical|high|med|low)
| 3. Assess COMPLEXITY (trivial|small|med|complex)
| 4. Apply ROUTING MATRIX → workflow
| 5. Map to story/epic if applicable
| 6. Assess DOC IMPACT (prd|architecture|ux)
| 7. Add triage notes
| 8. Present: [A]ccept/[M]odify/[S]kip/[N]ext
+---------------------------+
             |
             v (after all bugs)
+---------------------------+
| STEP 5: UPDATE FILES      |
+---------------------------+
| bugs.yaml: Add entries, update stats
| bugs.md: Remove from manual input,
|          Add to Tracked Bugs/Features
+---------------------------+
             |
             v
+---------------------------+
| STEP 6: COMPLETE          |
+---------------------------+
| Show summary + next steps:
| /implement bug-NNN
| /verify bug-NNN
+---------------------------+

/implement Workflow

USER INVOKES: /implement bug-NNN
                    |
                    v
    +-------------------------------+
    | STEP 1-2: Load Context        |
    +-------------------------------+
    | - Parse ID (bug-NNN/feature-NNN)
    | - Load from bugs.yaml
    | - Check status (halt if backlog/blocked/deferred)
    +---------------+---------------+
                    |
                    v
    +-------------------------------+
    | STEP 3: Check Workflow Route  |
    +-------------------------------+
                    |
        +-----------+-----------+-----------+
        v           v           v           v
   correct-    tech-spec   direct-fix   ambiguous
   course                                   |
       |           |           |        Apply Matrix
       v           v           |
   [ROUTES TO  [ROUTES TO      |
   /correct-   /tech-spec      |
    course]     workflow]      |
       |           |           |
       v           v           v
   Creates     Creates    +--------+
   story       spec       | STEP 4:|
                          | Confirm|
                          +---+----+
                              |
                              v
                      +---------------+
                      | STEP 5:       |
                      | IMPLEMENT     |
                      +---------------+
                      | Dev Agent:    |
                      | - Read files  |
                      | - Make changes|
                      | - Minimal fix |
                      +-------+-------+
                              |
                              v
                      +---------------+
                      | STEP 6: Check |
                      | npm run check |
                      +-------+-------+
                              |
                              v
                      +---------------+
                      | STEP 7-8:     |
                      | Update Files  |
                      +---------------+
                      | bugs.yaml:    |
                      |  status: fixed|
                      | bugs.md:      |
                      |  [IMPLEMENTED]|
                      +-------+-------+
                              |
                              v
                      +---------------+
                      | STEP 9:       |
                      | "Run /verify" |
                      +---------------+

/verify Workflow

USER INVOKES: /verify [bug-NNN]
                    |
        +-----------+-----------+
        v                       v
+---------------+       +---------------+
| No ID given   |       | ID provided   |
+-------+-------+       +-------+-------+
        |                       |
        v                       |
+---------------+               |
| List pending  |               |
| [IMPLEMENTED] |               |
| items         |               |
+-------+-------+               |
        |                       |
        +-------+---------------+
                |
                v
+-------------------------------+
| STEP 2: Load & Validate       |
+-------------------------------+
| - Verify status: fixed/implemented
| - Check file sync
+---------------+---------------+
                |
                v
+-------------------------------+
| STEP 3: Confirm Verification  |
+-------------------------------+
| Show: Title, type, date, files
| "Has this been tested?"
| [yes | no | skip]
+---------------+---------------+
                |
    +-----------+-----------+
    v           v           v
+-------+   +-------+   +-------+
| YES   |   | NO    |   | SKIP  |
+---+---+   +---+---+   +---+---+
    |           |           |
    v           v           v
Step 4      Add note    Next item
            "rework"

+-------------------------------+
| STEP 4-5: Update Files        |
+-------------------------------+
| bugs.yaml: status: closed,
|            verified_date
| bugs.md: Remove [IMPLEMENTED],
|          Add CLOSED tag
+-------------------------------+
                |
                v
+-------------------------------+
| STEP 6: Summary               |
| "bug-NNN VERIFIED and CLOSED" |
+-------------------------------+

Part 3: Routing & Agent Delegation

Workflow Routing by Type

Workflow Trigger Conditions Pre-Implement Phase Implementation Phase
direct-fix high/med + trivial None Dev Agent in /implement Step 5
tech-spec high/med + small Architect creates spec /dev-story per spec
correct-course critical (any) OR med/complex+ OR doc_impact PM→Architect→SM create story /dev-story per story
backlog low + small+ None (deferred) Awaits sprint promotion

Agent Responsibilities

                         /triage
                            |
                            v
               +------------------------+
               |   SM AGENT (Scrum      |
               |   Master Facilitator)  |
               +------------------------+
               | - Runs triage workflow |
               | - Assesses severity    |
               | - Routes to workflows  |
               +-----------+------------+
                           |
       +-------------------+-------------------+
       v                   v                   v
+------------+      +------------+      +------------+
| Direct-Fix |      | Tech-Spec  |      | Correct-   |
+-----+------+      +-----+------+      | Course     |
      |                   |             +-----+------+
      v                   v                   |
+------------+      +------------+            v
| DEV AGENT  |      | ARCHITECT  |      +------------+
| /implement |      | /tech-spec |      | PM AGENT   |
| Step 5     |      +-----+------+      | + ARCHITECT|
+------------+            |             | + SM       |
                          v             +-----+------+
                    +------------+            |
                    | DEV AGENT  |            v
                    | /dev-story |      +------------+
                    +------------+      | DEV AGENT  |
                                        | /dev-story |
                                        +------------+

Doc Impact Routing

When doc_impact flags are detected during /implement:

Flag Agent Action
PRD PM Agent Update PRD.md
Architecture Architect Agent Update architecture.md
UX UX Designer Agent Update UX specs

User is prompted: [update-docs-first | proceed-anyway | cancel]


Part 4: State & Lifecycle

File State Transitions

═══════════════════════════════════════════════════════════════════════════════
         DIRECT-FIX        TECH-SPEC       CORRECT-COURSE      BACKLOG
═══════════════════════════════════════════════════════════════════════════════

ENTRY    # manual input     # manual input   # manual input    # manual input
         (informal text)    (informal text)  (informal text)   (informal text)
              │                  │                │                 │
              ▼                  ▼                ▼                 ▼
─────────────────────────────────────────────────────────────────────────────────
TRIAGE   # Tracked Bugs     # Tracked Bugs   # Tracked Bugs    # Tracked Bugs
         bug-NNN            bug-NNN          bug-NNN           bug-NNN
         wf: direct-fix     wf: tech-spec    wf: correct-crs   wf: backlog
              │                  │                │                 │
              ▼                  ▼                ▼                 │
─────────────────────────────────────────────────────────────────────────────────
ROUTE    (skip)             /tech-spec       /correct-course   (waiting)
                            creates spec     creates story          │
              │                  │                │                 │
              ▼                  ▼                ▼                 │
─────────────────────────────────────────────────────────────────────────────────
CODE     /implement         /dev-story       /dev-story        (waiting)
         Step 5             per spec         per story              │
              │                  │                │                 │
              ▼                  ▼                ▼                 │
─────────────────────────────────────────────────────────────────────────────────
IMPL     # Fixed Bugs       # Fixed Bugs     # Fixed Bugs      (unchanged)
         [IMPLEMENTED]      [IMPLEMENTED]    [IMPLEMENTED]          │
         bug-NNN            bug-NNN          bug-NNN                │
              │                  │                │                 │
              ▼                  ▼                ▼                 │
─────────────────────────────────────────────────────────────────────────────────
VERIFY   /verify            /verify          /verify           (waiting)
         bug-NNN            bug-NNN          bug-NNN                │
              │                  │                │                 │
              ▼                  ▼                ▼                 ▼
─────────────────────────────────────────────────────────────────────────────────
DONE     CLOSED ✓           CLOSED ✓         CLOSED ✓          WAITING ◷
═══════════════════════════════════════════════════════════════════════════════

FILE STATE SUMMARY:
┌──────────┬─────────────────────────────┬──────────────────────────────────┐
│ STAGE    │ bugs.md                     │ bugs.yaml                        │
├──────────┼─────────────────────────────┼──────────────────────────────────┤
│ Entry    │ # manual input              │ (no entry)                       │
├──────────┼─────────────────────────────┼──────────────────────────────────┤
│ Triage   │ → # Tracked Bugs/Features   │ status: triaged + metadata       │
├──────────┼─────────────────────────────┼──────────────────────────────────┤
│ Implement│ → # Fixed [IMPLEMENTED]     │ status: fixed/implemented        │
├──────────┼─────────────────────────────┼──────────────────────────────────┤
│ Verify   │ [IMPLEMENTED] → CLOSED      │ status: closed + verified_date   │
└──────────┴─────────────────────────────┴──────────────────────────────────┘

Appendix: Optional Extensions

In-App Bug Reporting API

Optional integration for apps with built-in bug reporting UI:

  1. User submits via in-app modal → POST /api/bug-reports
  2. Database stores with status: 'new'
  3. During /triage Step 2 (if [S]ync selected):
    • GET /api/bug-reports/pending fetches new reports
    • Formats as markdown, inserts to # manual input
    • POST /api/bug-reports/mark-synced prevents re-fetch

This is optional - manual entry to bugs.md works without any API.