Skip to main content

WIP Limits (Work In Progress)

WIP Limits restrict the number of active increments to maximize focus and productivity. SpecWeave defaults to ONE active increment based on research showing single-tasking produces 100% productivity while multi-tasking reduces productivity by 20-40% due to context switching costs.


The Core Philosophy

Focus-First Architecture: ONE Active Increment = Maximum Productivity


Research: Why 1?

Productivity Impact

Active IncrementsProductivityContext Switching CostQuality
1100%0%High (fewer bugs)
280%20% slowerMedium (more bugs)
3+60%40% slowerLow (many bugs)

Source: Research on multitasking and context switching costs (Gloria Mark, University of California, Irvine)

Real-World Example

Scenario: Implement authentication feature (estimated 40 hours)

With 1 Active Increment (Focused):

Week 1: 40 hours on authentication
Result: Feature complete, tested, shipped ✅

With 2 Active Increments (Context Switching):

Week 1: 20 hours authentication + 20 hours dark mode
Context switching: 8 hours lost
Result: 32 hours effective work, neither feature complete ❌

Week 2: 20 hours authentication + 20 hours dark mode
Context switching: 8 hours lost
Result: 32 hours effective work, finally complete (2 weeks) ❌

Impact: 2x longer to complete (1 week → 2 weeks) due to context switching.


Default WIP Limit Configuration

Settings

Location: .specweave/config.json

{
"limits": {
"maxActiveIncrements": 1, // Default: 1 active (focus)
"hardCap": 2, // Emergency ceiling (never exceeded)
"allowEmergencyInterrupt": true, // hotfix/bug can interrupt
"typeBehaviors": {
"canInterrupt": ["hotfix", "bug"], // Emergency types
"autoAbandonDays": {
"experiment": 14 // Auto-abandon stale experiments
}
}
}
}

Three-Level Enforcement


Enforcement Scenarios

Scenario 1: 0 Active → Create New (No Warnings)

# No active increments
/specweave:increment "user authentication"

# ✅ Creates 0008-user-authentication (no warnings)
# Status: 1 active (within limit)

Scenario 2: 1 Active → Warn About Context Switching

# 0008-user-authentication is active (50% complete)
/specweave:increment "dark mode"

# ⚠️ WARNING: Context Switching Detected
#
# Current active increment:
# 0008-user-authentication (50% complete, 3/5 tasks)
#
# Creating a second increment will:
# - Reduce productivity by ~20% (context switching cost)
# - Delay completion of both increments
# - Increase bug risk
#
# 💡 Recommendation: Complete 0008 first (/specweave:do)
#
# ❓ Continue anyway? (y/N)

If user confirms:

# User types 'y'
# ✅ Creates 0009-dark-mode
# Status: 2 active (hard cap reached)

Scenario 3: 2 Active → HARD BLOCK

# 0008-user-authentication (50% complete)
# 0009-dark-mode (20% complete)
/specweave:increment "payment integration"

# ❌ BLOCKED! Hard Cap Reached
#
# You have 2 active increments (maximum reached):
# 1. 0008-user-authentication (50% complete)
# 2. 0009-dark-mode (20% complete)
#
# 💡 Before creating a new increment, you must:
# Option 1: Complete an increment
# /specweave:done 0008 (if all tasks complete)
#
# Option 2: Pause an increment
# /specweave:pause 0009 --reason="blocked by API"
#
# Option 3: Abandon an increment
# /specweave:abandon 0009 --reason="requirements changed"
#
# ⚠️ The discipline exists for a reason:
# - Prevents scope creep
# - Ensures focus
# - Maintains quality
# - Improves velocity

Exception: Emergency Interrupt

Hotfixes and bugs can interrupt to reach 2 active:

# 0008-user-authentication is active (80% complete)
/specweave:increment "SQL injection hotfix" --type hotfix

# ✅ ALLOWED! Hotfix can interrupt (emergency)
#
# Emergency interrupt approved:
# Type: hotfix (critical production issue)
# Previous: 0008-user-authentication (paused temporarily)
# New: 0009-sql-injection-hotfix (ACTIVE)
#
# Status: 2 active (hard cap reached)
#
# ⚠️ Recommendation: Complete hotfix quickly, then resume 0008

Emergency types (can interrupt):

  • hotfix: Critical production fixes
  • bug: Production bug investigation

Non-emergency types (cannot interrupt):

  • feature: Standard feature development
  • change-request: Stakeholder requests
  • refactor: Code improvement
  • experiment: POC/spike work

WIP Limit Helpers

Check Status

/specweave:status

# Output:
✅ 0001-core-framework (100% complete)
✅ 0007-smart-increment-discipline (100% complete)
⏳ 0008-user-authentication (80% complete) ← ACTIVE
📋 0009-dark-mode (20% complete) ← ACTIVE (hard cap reached)

Active: 2/2 (hard cap)
Paused: 0
Complete: 2
Abandoned: 0

⚠️ You're at the hard cap! Complete or pause an increment before starting new work.

Pause Increment

/specweave:pause 0009 --reason="blocked by backend API availability"

# ✅ Paused 0009-dark-mode
# Reason: Blocked by backend API availability
# Status: 1 active (within limit)
#
# 💡 You can now create a new increment OR resume 0009 when unblocked

Resume Increment

/specweave:resume 0009

# ✅ Resumed 0009-dark-mode
# Status: 2 active (hard cap reached)
#
# ⚠️ You're at the hard cap again. Complete one before starting new work.

Multiple Hotfixes (Special Case)

Problem: What if you have multiple hotfixes?

Solution: Combine into ONE increment

# ❌ Wrong: Multiple hotfix increments
/specweave:increment "SQL injection fix" --type hotfix # 0009
/specweave:increment "XSS vulnerability fix" --type hotfix # 0010 (BLOCKED!)

# ✅ Right: Combined hotfix increment
/specweave:increment "Security fixes (SQL + XSS + CSRF)" --type hotfix

# Increment 0009: Security Fixes
# - SQL injection fix (AC-US1-01)
# - XSS vulnerability fix (AC-US1-02)
# - CSRF token fix (AC-US1-03)

Temporary WIP Limit Adjustment

For emergencies, you can temporarily adjust WIP limits:

# Temporarily allow 3 active (not recommended)
/specweave:adjust-wip-limit 3

# ⚠️ WARNING: Increasing WIP limit to 3
#
# This is NOT RECOMMENDED because:
# - 40% slower productivity (context switching)
# - Higher bug risk
# - Nothing ships quickly
#
# 💡 Reason for adjustment: [required]

User provides reason:

Reason: Multiple critical production issues require parallel fixes

# ✅ WIP limit temporarily adjusted to 3
# Expires: 2025-11-12 (24 hours)
#
# ⚠️ This is logged and should be explained in standup/retrospective

Revert to default:

/specweave:revert-wip-limit

# ✅ WIP limit reverted to 1 (default)

WIP Limit Benefits

1. Maximum Focus

1 increment = 100% attention on ONE thing
Result: Deep work, faster completion, higher quality

2. Regular Shipping

Complete 1 increment → Ship → Start next
Result: Continuous delivery, visible progress

3. Lower Bug Rate

Focus = Fewer mistakes
Single context = Better code quality
Result: Fewer bugs, less rework

4. Predictable Velocity

Know exactly how long 1 increment takes
Result: Accurate estimates, better planning

5. Clear Priorities

1 active = Everyone knows what's important
Result: Aligned team, no confusion

WIP Limit Anti-Patterns

1. Starting New Before Completing Old

# ❌ Bad: Multiple incomplete increments
0008-user-authentication (80% complete)
0009-dark-mode (60% complete)
0010-payment-integration (40% complete)
0011-notifications (20% complete)

Result: Nothing ships, everything delayed

2. Ignoring WIP Limit Warnings

# ❌ Bad: Always using --force
/specweave:increment "new feature" --force # Bypasses WIP check
/specweave:increment "another feature" --force
/specweave:increment "yet another feature" --force

Result: Chaos, low productivity, nothing ships

3. Artificially Splitting Increments

# ❌ Bad: Splitting to bypass WIP limit
/specweave:increment "Authentication Part 1"
/specweave:increment "Authentication Part 2" # Trying to bypass limit

# ✅ Good: One complete increment
/specweave:increment "Authentication (complete)"

WIP Limit Best Practices

1. Complete Before Starting New

# ✅ Good workflow
/specweave:do # Work on current increment
# ... all tasks complete
/specweave:done 0008 # Close increment
/specweave:increment "next feature" # Start new

2. Pause When Blocked

# ✅ Good: Pause when blocked, start new
/specweave:pause 0008 --reason="waiting for API approval"
/specweave:increment "dark mode" # Start new work
# ... API approved
/specweave:resume 0008 # Resume when unblocked

3. Use Hotfix for True Emergencies Only

# ✅ Good: Hotfix for production issues
/specweave:increment "SQL injection fix" --type hotfix

# ❌ Bad: Hotfix for non-emergency
/specweave:increment "add dark mode toggle" --type hotfix # Not a hotfix!

Philosophy: Discipline = Quality

Why enforce WIP limits strictly?

Focus

Work on ONE thing at a time → Deep work → Better results

Completion

Finish before starting new → Ship regularly → Visible progress

Quality

Less context switching → Fewer bugs → Higher quality

Clarity

Everyone knows what's important → Aligned team → Better collaboration

Velocity

Predictable pace → Accurate estimates → Better planning


  • Increments - Work units subject to WIP limits
  • Source of Truth - Single source of truth principle
  • Living Docs - Auto-synced documentation
  • Status Tracking - Monitor active increments

Summary

WIP Limits maximize focus and productivity:

  • Default: 1 active increment (100% productivity)
  • Hard Cap: 2 active max (emergency only)
  • Exception: Hotfix/bug can interrupt (production issues)
  • Enforcement: Warning at 1 active, block at 2 active
  • Benefits: Maximum focus, regular shipping, lower bugs, predictable velocity

Key Insight: ONE active increment = maximum productivity. Multi-tasking ALWAYS reduces productivity by 20-40%.

Philosophy: Discipline = Quality. WIP limits aren't bureaucracy—they're quality enforcement.