What is an Increment?
An increment is SpecWeave's fundamental unit of workβa complete, self-contained feature with specifications, architecture, implementation plan, and tests.
Think of Increments as "Git Commits for Features"β
Just like Git commits capture code changes with messages and history, increments capture feature development with complete context:
Each increment contains:
- π spec.md - What and Why (requirements, user stories, acceptance criteria) β required
- ποΈ plan.md - How (architecture, test strategy, implementation approach) β optional, for complex features
- β tasks.md - Checklist with embedded tests β required
- π logs/ - Execution history
- π reports/ - Completion summaries, scope changes
When is plan.md needed? Create
plan.mdfor features with architectural decisions, multi-component design, or technology choices. Skip it for bug fixes, simple migrations, and straightforward tasks where the spec already describes the approach.
Anatomy of an Incrementβ
.specweave/increments/0001-user-authentication/
βββ spec.md # WHAT: Requirements, user stories, AC-IDs
β # - US-001: Basic login flow
β # - US-002: Password reset
β # - AC-US1-01: Valid credentials β dashboard
β
βββ plan.md # HOW: Architecture + test strategy (OPTIONAL)
β # - Only for complex features needing design docs
β # - Skip for bug fixes, simple migrations
β # - Example: JWT auth design, database schema
β
βββ tasks.md # Checklist + embedded tests
β # - T-001: AuthService [in_progress]
β # - T-002: Login endpoint [pending]
β # - Each task has BDD test plan
β
βββ logs/ # Execution logs
β βββ session-2025-11-04.log
β
βββ reports/ # Completion reports, scope changes
βββ COMPLETION-REPORT.md
Why Increments?β
1. Complete Contextβ
Every increment is a snapshot in time with all context preserved:
6 months later, you can answer:
- β "Why did we choose JWT over sessions?" β Read spec.md
- β "How does password reset work?" β Read plan.md
- β "What tests cover this?" β Read tasks.md (embedded tests)
2. Traceabilityβ
Clear path from requirements β implementation β tests:
AC-US1-01 (spec)
β
T-001: AuthService (tasks)
β
validLogin() test (tests/unit/auth.test.ts)
For compliance (HIPAA, SOC 2, FDA):
- Complete audit trail
- Requirement-to-code traceability
- Test coverage proof
3. Focused Workβ
ONE increment at a time prevents context switching:
| Without Increments | With Increments |
|---|---|
| Multiple features in progress | Focus on ONE thing |
| Unclear what's done | Clear completion criteria |
| Documentation scattered | Everything in one place |
| Hard to rollback | Self-contained units |
Increment Typesβ
SpecWeave supports different work types:
| Type | Use When | Can Interrupt? | Example |
|---|---|---|---|
| feature | New functionality | No | User authentication, payments |
| hotfix | Critical production bug | β Yes | Security patch, crash fix |
| bug | Production bugs needing investigation | β Yes | Memory leak, performance issue |
| change-request | Stakeholder request | No | UI redesign, API changes |
| refactor | Code improvement | No | Extract service layer, TypeScript migration |
| experiment | POC/spike work | No | Evaluate libraries, architecture spike |
Note: All types use the same structure (spec.md, plan.md, tasks). The type is just a label for tracking.
Increment Lifecycleβ
States explained:
- Planning: PM agent creates spec.md, plan.md, tasks.md
- Active: Implementation in progress
- Paused: Temporarily on hold (with reason)
- Completed: All tasks done, tests passing
- Abandoned: Work canceled (with reason)
Best Practicesβ
β DOβ
- Keep increments focused - One feature or fix per increment
- Complete before starting new - Finish 0001 before 0002
- Use descriptive names -
0001-user-authenticationnot0001 - Document scope changes - Use
sw:increment (to update spec) - Close properly - Validate tests, update docs, create completion report
β DON'Tβ
- Don't start multiple increments - Causes context switching
- Don't skip specs - Leads to unclear requirements
- Don't modify completed increments - They're immutable snapshots
- Don't create unnecessary plan.md - Only for complex features with architecture decisions
- Don't forget tests - Every task needs test validation
Real-World Examplesβ
Example 1: Simple Featureβ
Increment: 0005-dark-mode
Duration: 2 days
Tasks: 4
Type: feature
Structure:
βββ spec.md (1 user story, 3 AC-IDs)
βββ plan.md (CSS variables, theme switching)
βββ tasks.md (4 tasks, embedded tests, 85% coverage)
βββ reports/COMPLETION-REPORT.md
Example 2: Complex Featureβ
Increment: 0012-payment-processing
Duration: 3 weeks
Tasks: 18
Type: feature
Structure:
βββ spec.md (5 user stories, 15 AC-IDs)
βββ plan.md (Stripe integration, webhooks, refunds)
βββ tasks.md (18 tasks, embedded tests, 90% coverage)
βββ logs/ (multiple sessions)
βββ reports/
βββ COMPLETION-REPORT.md
βββ scope-changes-2025-11-10.md
Example 3: Emergency Hotfixβ
Increment: 0008-sql-injection-fix
Duration: 4 hours
Tasks: 3
Type: hotfix
Structure:
βββ spec.md (Security vulnerability, CVE reference)
βββ plan.md (Parameterized queries, input validation)
βββ tasks.md (3 tasks, security tests, 100% coverage)
βββ reports/COMPLETION-REPORT.md (impact analysis)
Increments vs Living Documentationβ
Increments (immutable snapshots):
- Historical record
- "What was done and why"
- Never modified after completion
- Complete audit trail
Living Docs (always current):
- Current system state
- "What exists now"
- Auto-updated by hooks
- Single source of truth
Both are essential:
Question: "Why did we build it this way?"
Answer: Read increment snapshot
Question: "What's the current implementation?"
Answer: Read living docs
Summaryβ
- Increment = complete feature unit (spec, plan, tasks, tests)
- Immutable snapshots preserved forever
- Clear lifecycle (planning β active β completed)
- Focus on ONE increment at a time
- Complete context for future reference
- Traceability from requirements to code
Next Stepsβ
Learn More:
- Increment Planning Workflow
- Increment Discipline (WIP Limits)
- Test-Aware Planning