Epic and milestone implementation
Multi-milestone feature management from V1 through V2. Scope each milestone to ship usable software.
Epic and milestone implementation
Purpose: Standard for managing multi-milestone features that span V1 → V1.1 → V2. Defines how to organize specs, track epics in Linear, and promote out-of-scope items across milestones.
Quick reference:
- Epic — Linear Project grouping issues across milestones (V1, V1.1, V2)
- Specs — Live in
docs/specs/{epic-slug}/withoverview.md+ milestone-prefixed artifacts (v1-brief.md)- Tech specs — For milestone-aware features must include "Future Milestone Impact" section
- After V1 ships — Triage deferred items → promote to V1.1/V2 or kill
- Each milestone — Runs the full SDLC pipeline independently
Overview
Real features often span multiple milestones. The initial release (V1) ships core functionality, then subsequent milestones (V1.1, V2) add refinements, extensions, or deferred scope. This standard defines how to organize specs, track epics, and promote out-of-scope items across milestones.
When to use
Use the epic/milestone pattern when:
- Feature has natural milestones — V1 is a working MVP, V1.1 adds polish, V2 adds extensions
- Scope was explicitly split — During planning, items were deferred to "future work"
- Out-of-scope items accumulated — Multiple out-of-scope items suggest a follow-up milestone
- Feature is complex — Estimated at >2 weeks of work; break into shippable increments
Do NOT use for:
- Simple bug fixes — Single issue, single fix
- Small features — Ship complete in one milestone
- Unrelated issues — Happen to touch the same code
Linear Projects as epic containers
Use Linear Projects to group related issues across milestones. No custom entity needed.
Setup
Create a Linear Project — Name it after the feature (e.g., "Notification Center")
- Description: Link to
docs/specs/{epic-slug}/overview.md
- Description: Link to
Add all issues to the Project — V1, V1.1, V2 issues all in the same Project
- Use issue labels or milestones to distinguish:
milestone:v1,milestone:v1.1,milestone:v2
- Use issue labels or milestones to distinguish:
Track progress via Project view — Linear shows completion percentage, open issues, blockers
- Use Project updates for stakeholder communication
Example
Project: Notification Center
├── PROJ-42 [milestone:v1] Core notification display
├── PROJ-43 [milestone:v1] Push notification integration
├── PROJ-44 [milestone:v1] Notification preferences page
├── PROJ-50 [milestone:v1.1] Notification history
├── PROJ-51 [milestone:v1.1] Custom notification sounds
└── PROJ-60 [milestone:v2] Notification grouping
Milestone-aware spec file convention
Directory structure
Multi-milestone features use a directory instead of a single file:
docs/specs/{epic-slug}/
overview.md # Multi-milestone roadmap (always present)
v1-brief.md # V1 brief
v1-prototype.md # V1 prototype (if UI work)
v1-tech.md # V1 tech spec
v1.1-brief.md # V1.1 brief (when V1.1 starts)
v1.1-tech.md # V1.1 tech spec
v2-brief.md # V2 brief (when V2 starts)
...
The overview.md file
Every epic directory MUST have an overview.md that provides the multi-milestone roadmap:
# Epic: {Feature Name}
**Linear Project:** {project-link}
**Created:** {date}
**Status:** V1 In Process / V1 Shipped / V1.1 In Process / etc.
## Vision
[2-3 sentences describing the complete feature when all milestones are done]
## Milestone Roadmap
### V1 — {Theme} (Target: {date or sprint})
- [Goal 1]
- [Goal 2]
- [Goal 3]
**Issues:** PROJ-42, PROJ-43, PROJ-44
### V1.1 — {Theme} (Target: {date or sprint})
- [Goal 1]
- [Goal 2]
**Issues:** PROJ-50, PROJ-51
### V2 — {Theme} (Target: TBD)
- [Goal 1]
- [Goal 2]
**Issues:** Not yet created
## Deferred Items
Items explicitly deferred during planning that haven't been assigned to a milestone yet:
- [ ] {Item 1} — Reason for deferral
- [ ] {Item 2} — Reason for deferral
## Milestone History
| Milestone | Status | Shipped | Notes |
|-----------|--------|---------|-------|
| V1 | Complete | 2026-02-20 | Core functionality |
| V1.1 | In Process | — | Polish and history |
| V2 | Not Started | — | — |
Milestone spec files
Each milestone runs through the full SDLC pipeline and produces its own set of spec files:
v1-brief.md— Same format as single-milestone briefv1-prototype.md— Same format as single-milestone prototypev1-tech.md— Same format as single-milestone tech spec, PLUS Future Milestone Impact section
The milestone prefix (v1-, v1.1-, v2-) distinguishes artifacts across milestones.
Single-milestone vs multi-milestone comparison
| Aspect | Single-Milestone | Multi-Milestone |
|---|---|---|
| Location | docs/specs/{issue-id}-brief.md |
docs/specs/{epic-slug}/v1-brief.md |
| Overview | Not needed | Required (overview.md) |
| Linear grouping | Single issue | Project with multiple issues |
| Out-of-scope | Captured, may become separate issues | Promoted to future milestones |
Out-of-scope promotion process
When V1 ships (or during V1 planning), deferred items need a home. This is a manual process.
During planning (V1)
- Capture out-of-scope items — The plan agent returns
outOfScopeItemsin the brief package - Add to overview.md — Document each item in the "Deferred Items" section
- Don't create issues yet — Wait until V1 ships to assess priority
After V1 ships
- Review deferred items — Open
docs/specs/{epic-slug}/overview.md - Triage each item:
- Promote to V1.1 — Create Linear issue, add to Project, label
milestone:v1.1 - Promote to V2 — Create Linear issue, add to Project, label
milestone:v2 - Kill — Remove from overview.md (it's not worth doing)
- Keep deferred — Leave in Deferred Items section
- Promote to V1.1 — Create Linear issue, add to Project, label
- Update overview.md — Move promoted items from "Deferred Items" to the appropriate milestone section
- Start V1.1 pipeline — Run full SDLC for V1.1 issues
Promotion template
When creating issues for promoted items:
Title: {Item title}
Description:
Promoted from {epic-name} V1 deferred items.
Original deferral reason: {reason}
Context: {link to overview.md}
Labels: milestone:v1.1
Project: {epic project}
Future Milestone Impact (tech spec addition)
Tech specs for milestone-aware features MUST include a "Future Milestone Impact" section. This allows the Technical Critic to flag V1 decisions that would make V1.1 or V2 harder.
Section template
Add this section to the tech spec output:
## Future Milestone Impact
### Known Future Milestones
- V1.1: {brief description of what V1.1 will add}
- V2: {brief description of what V2 will add, if known}
### V1 Decisions That Affect Future Milestones
| Decision | Impact on Future Milestones | Mitigation |
|----------|---------------------------|------------|
| {decision} | {how it helps or hurts V1.1/V2} | {what we're doing about it} |
### Technical Debt Introduced
| Debt | Reason for Accepting | When to Address |
|------|---------------------|-----------------|
| {debt item} | {why we're accepting it in V1} | {V1.1 / V2 / Never} |
### Extensibility Considerations
- {How the V1 architecture accommodates known future work}
- {Extension points left open intentionally}
- {Areas that will need refactoring for V1.1/V2}
Orchestrator responsibilities
The orchestrator manages epic/milestone workflows:
Starting a new epic
- Create Linear Project — For the epic
- Create spec directory — At
docs/specs/{epic-slug}/ - Create overview.md — With initial milestone roadmap
- Run V1 through full pipeline — Plan → Prototype → Tech → Issue → Implement → Verify
- Ship V1
Starting a new milestone (V1.1, V2, etc.)
- Promote deferred items — Review and triage (see above)
- Create issues — For the new milestone
- Update overview.md — With new milestone details
- Run new milestone through full pipeline — Each milestone is a complete SDLC cycle
- Ship the milestone
Milestone transitions
When moving from one milestone to the next:
- Mark previous milestone as Complete — In
overview.md - Add shipped date — To Milestone History table
- Review what worked / what didn't — Retrospective
- Carry forward lessons learned — Into next milestone brief
Rules
- Epic = Linear Project — Don't invent new grouping mechanisms
- Overview is required — Every epic directory needs
overview.md - Milestone prefix all artifacts —
v1-brief.md, notbrief.md - Promote manually — No automation; human judgment required for triage
- Future Milestone Impact required — Tech specs for milestone-aware features must include this section
- Each milestone is full SDLC — Don't skip steps because "we already did V1"
Related standards
standards/core/sdlc.md— Development lifecyclestandards/core/milestone-planning.md— Milestone scoping and horizontal slice rule- Planning agent — Brief creation (captures out-of-scope)
- Tech agent — Tech spec creation (Future Milestone Impact)
CLAUDE.md— Orchestrator instructions
Epic and Milestone Implementation Standard v3.0 -- March 2026