You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .specify/memory/constitution.md
+20Lines changed: 20 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -150,6 +150,26 @@ Example: "User records a bike ride" slice includes:
150
150
- Background function listening to CES to update RideProjection
151
151
- Aspire AppHost configuration for frontend + API + database orchestration; Azure CLI deployment scripts for Static Web Apps (frontend) and Container Apps (API)
After the application structure is built, implementation proceeds in **vertical slices with minimal functionality first**:
156
+
157
+
1.**Identify Minimal Viable Feature**: Extract the smallest, testable piece of the specification that delivers user value (e.g., "User records a basic ride with just distance and date" vs. "User records ride with weather, auto-capture, and expense associations").
158
+
2.**Implement Minimal Functionality**: Build only what's needed for this slice to work end-to-end:
159
+
- Blazor form with essential fields only
160
+
- API endpoint handling the core command
161
+
- Event and projection for persistence
162
+
- Database schema (migrations)
163
+
- No bells, whistles, or optional features
164
+
3.**Test & Verify**: Run full test suite (unit, integration, E2E); deploy locally via `dotnet run` and manually verify the slice works as specified.
165
+
4.**User Decision Point**: Once minimal slice is verified and working, present the user with options:
166
+
-**Approve Minimal & Iterate**: User approves the working slice, then we build next priority feature (additional fields, refinements, enhancement)
167
+
-**Expand Current Slice**: User requests additional functionality for the current slice before finalizing (e.g., "add weather capture" to the ride recording feature)
168
+
-**Pivot**: User validates that the minimal approach solves the problem; if solution is sufficient, ship as-is; otherwise, refine or fold into next slice
169
+
5.**Repeat**: Each new feature/slice follows the same pattern: minimal implementation → test → user approval → expand or next slice
170
+
171
+
**Rationale**: Minimal-first approach de-risks development by getting working code to user quickly; validates assumptions early; prevents over-engineering; enables user feedback to guide remaining work; reduces scope creep. Vertical slices remain deployable and testable at each iteration boundary. The Pragmatic Programmer calls this "Tracer Bullets" — get something working end-to-end before perfecting it.
172
+
153
173
### Definition of Done: Vertical Slice Completeness
154
174
155
175
A vertical slice is **production-ready** only when all items are verified:
0 commit comments