Skip to main content

Backlog Management Guide

Overview

SpecWeave's backlog feature allows you to plan and organize future work without violating WIP (Work In Progress) limits. Backlog increments are planned but not yet started, providing a clear separation between active work and future plans.

When to Use Backlog

Use the backlog when you want to:

  • Plan ahead: Create specifications for future features without starting work
  • Prioritize work: Have multiple ideas and need to queue lower-priority items
  • Handle stakeholder requests: Capture requested features for later implementation
  • Wait for approvals: Spec is ready, but waiting for decisions before starting

Key Differences

AspectBacklogActivePaused
Started?NoYesYes
Counts towards WIP?❌ No✅ Yes❌ No
Use CaseFuture plansCurrent workBlocked work
When to useLow priority, futureReady to workWaiting on dependency

Commands

Move to Backlog

"Let's build Feature B"

Then move to backlog:

sw:status 0032 --reason="Low priority, focus on 0031 first"

Resume from Backlog

# When ready to start work
sw:resume 0032
sw:do

View Backlog

# Show all backlog increments
sw:status --backlog

Backlog Workflow

1. Plan Multiple Features

# Create three feature specs
sw:increment "User Authentication" # 0030
sw:increment "Payment Integration" # 0031
sw:increment "Email Notifications" # 0032

# Prioritize: Start with 0030, backlog the rest
sw:status 0031 --reason="Lower priority, do after auth"
sw:status 0032 --reason="Depends on auth completion"

# Now work on 0030
sw:do

Result:

  • ✅ 0030 is active (counts towards WIP)
  • ✅ 0031 and 0032 are in backlog (do NOT count towards WIP)
  • ✅ Clear prioritization

2. Capture Stakeholder Requests

# Stakeholder requests new feature during sprint
sw:increment "Admin Dashboard" --type feature
sw:status 0033 --reason="Requested by stakeholders, plan for Q2"

# Continue current work without interruption
sw:do

Benefit: Capture ideas immediately without context switching

3. Progressive Planning

# Morning: Plan your week
sw:increment "Feature A" # High priority
sw:increment "Feature B" # Medium priority
sw:increment "Feature C" # Low priority

# Organize by priority
sw:status 0035 --reason="Medium priority, do after 0034"
sw:status 0036 --reason="Low priority, nice-to-have"

# Start with highest priority
sw:do

# Later: Complete 0034, start next
sw:done 0034
sw:resume 0035 # Pull from backlog
sw:do

Backlog Status Display

View All Statuses

sw:status

🔥 Active (1):
🔧 0034-feature-a [feature] (50% done)

🗂️ Backlog (2):
📦 0035-feature-b [feature]
In backlog: 2 days
Reason: Medium priority

📦 0036-feature-c [feature]
In backlog: 2 days
Reason: Low priority

⏸️ Paused (0)
✅ Completed (33)

Filter Backlog Only

sw:status --backlog

🗂️ Backlog (2):
📦 0035-feature-b [feature] (in backlog 2 days)
Reason: Medium priority

📦 0036-feature-c [feature] (in backlog 2 days)
Reason: Low priority

💡 Start work: sw:resume <id>

Best Practices

✅ Do

  • Plan ahead: Create specs for next sprint/quarter
  • Clear reasons: Always provide context for why it's backlog
  • Review regularly: Weekly backlog grooming (prioritize, abandon obsolete)
  • Small batches: Don't let backlog grow unbounded (max 10-15 items)
  • Prioritize clearly: Establish order of execution

❌ Don't

  • Don't use as procrastination: Backlog ≠ avoiding work
  • Don't confuse with paused: Paused = blocked, Backlog = not started
  • Don't abandon WIP discipline: Backlog doesn't mean unlimited active work
  • Don't let it grow unbounded: Review and clean up regularly
  • Don't mix priorities: Keep backlog ordered by value

Backlog vs Paused: When to Use Which?

Use Backlog When:

  • ❌ Work hasn't started yet
  • ✅ Lower priority than active work
  • ✅ Waiting for decisions/approvals before starting
  • ✅ Planning future sprints/quarters

Use Paused When:

  • ✅ Work already started
  • ✅ Blocked by external dependency (API keys, approvals)
  • ✅ Temporary interruption (code review, waiting on teammate)
  • ✅ Deprioritized but progress already made

Example: E-Commerce Platform

# Sprint Planning: Plan 5 features
sw:increment "Product Catalog MVP" # 0050 - P0
sw:increment "Shopping Cart" # 0051 - P0
sw:increment "Checkout Flow" # 0052 - P1
sw:increment "Payment Providers" # 0053 - P1
sw:increment "Order Tracking" # 0054 - P2

# Prioritize: MVP first, rest to backlog
sw:status 0051 --reason="P0 - Do after product catalog"
sw:status 0052 --reason="P1 - Depends on cart"
sw:status 0053 --reason="P1 - Depends on checkout"
sw:status 0054 --reason="P2 - Post-MVP feature"

# Week 1: Build product catalog
sw:do # Work on 0050

# Complete and pull next from backlog
sw:done 0050
sw:resume 0051 # Pull shopping cart from backlog
sw:do

# Week 2: Shopping cart blocked by Stripe API keys
sw:pause 0051 --reason="Waiting for Stripe production keys"

# Pull next from backlog while waiting
sw:resume 0052 # Start checkout flow
sw:do

# Keys arrive, resume cart, move checkout back to backlog
sw:status 0052 --reason="Pausing to finish cart first"
sw:resume 0051
sw:do

Key Insight: Backlog provides flexibility while maintaining WIP discipline!

Warnings and Notifications

Large Backlog Warning

If backlog grows too large (10+ items), sw:status warns:

🗂️  Backlog (12):
📦 0040-feature-a [feature]
... (11 more)

⚠️ Large backlog! Consider:
- Abandoning obsolete items
- Consolidating similar features
- Reviewing priorities

💡 Actions:
sw:resume <id> # Start highest priority
sw:abandon <id> # Remove obsolete items

Stale Backlog Items

Items in backlog >30 days trigger review prompts:

🗂️  Backlog (1):
📦 0045-old-feature [feature]
In backlog: 35 days
⚠️ STALE! Review or abandon?

💡 Consider:
- Still relevant? → sw:resume 0045
- No longer needed? → sw:abandon 0045
  • sw:increment - Create new increment
  • sw:status <id> - Move to backlog
  • sw:resume <id> - Move from backlog to active
  • sw:pause <id> - Pause active work (different from backlog)
  • sw:status - View all increments
  • sw:status --backlog - View backlog only

Learn More