@comfanion/workflow 3.8.0 → 3.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/build-info.json +1 -1
- package/src/opencode/config.yaml +1 -1
- package/src/opencode/skills/epic-writing/SKILL.md +22 -22
- package/src/opencode/skills/story-writing/SKILL.md +30 -35
- package/src/opencode/templates/epic-template.md +7 -7
- package/src/opencode/templates/story-template.md +58 -65
- package/src/opencode/workflows/dev-story/instructions.md +3 -3
package/package.json
CHANGED
package/src/build-info.json
CHANGED
package/src/opencode/config.yaml
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
# PROJECT CONFIGURATION
|
|
7
7
|
# =============================================================================
|
|
8
8
|
project_name: "ai-wf"
|
|
9
|
-
version: "3.
|
|
9
|
+
version: "3.9.0"
|
|
10
10
|
|
|
11
11
|
# =============================================================================
|
|
12
12
|
# USER CONFIGURATION
|
|
@@ -168,15 +168,15 @@ Track which FRs are covered:
|
|
|
168
168
|
|
|
169
169
|
```
|
|
170
170
|
EPIC (1-2 weeks)
|
|
171
|
-
└── STORY (
|
|
172
|
-
└── TASK (
|
|
171
|
+
└── STORY (2-5 days)
|
|
172
|
+
└── TASK (4-6 hours)
|
|
173
173
|
```
|
|
174
174
|
|
|
175
175
|
| Level | Duration | Count | Deliverable |
|
|
176
176
|
|-------|----------|-------|-------------|
|
|
177
177
|
| **Epic** | 1-2 weeks | 1 | Complete feature |
|
|
178
|
-
| **Story** |
|
|
179
|
-
| **Task** |
|
|
178
|
+
| **Story** | 2-5 days | 3-8 per epic | User-facing capability |
|
|
179
|
+
| **Task** | 4-6 hours | 3-6 per story | Atomic code change with tests |
|
|
180
180
|
|
|
181
181
|
### Story Decomposition Pattern
|
|
182
182
|
|
|
@@ -213,17 +213,17 @@ S01 (Domain) ──┬──► S02 (Repo Interface) ──► S04 (Repo Impl)
|
|
|
213
213
|
|
|
214
214
|
| Story | Tasks | Hours | Days |
|
|
215
215
|
|-------|-------|-------|------|
|
|
216
|
-
| S01 |
|
|
217
|
-
| S02 | 3 |
|
|
218
|
-
| S03 |
|
|
219
|
-
| S04 |
|
|
220
|
-
| S05 |
|
|
221
|
-
| S06 |
|
|
222
|
-
| S07 |
|
|
223
|
-
| **Total** | **
|
|
216
|
+
| S01 | 4 | 20h | 2.5d |
|
|
217
|
+
| S02 | 3 | 15h | 2d |
|
|
218
|
+
| S03 | 5 | 26h | 3d |
|
|
219
|
+
| S04 | 4 | 22h | 3d |
|
|
220
|
+
| S05 | 3 | 16h | 2d |
|
|
221
|
+
| S06 | 3 | 15h | 2d |
|
|
222
|
+
| S07 | 3 | 15h | 2d |
|
|
223
|
+
| **Total** | **25** | **129h** | **~16d** |
|
|
224
224
|
|
|
225
225
|
**Parallel Opportunities:** S02+S03, S04+S05
|
|
226
|
-
**With Parallelism:** ~
|
|
226
|
+
**With Parallelism:** ~10 days (2 weeks)
|
|
227
227
|
```
|
|
228
228
|
|
|
229
229
|
## Epic Sizing
|
|
@@ -232,14 +232,14 @@ S01 (Domain) ──┬──► S02 (Repo Interface) ──► S04 (Repo Impl)
|
|
|
232
232
|
|
|
233
233
|
- **Duration:** 1-2 weeks of work
|
|
234
234
|
- **Stories:** 3-8 stories per epic
|
|
235
|
-
- **Tasks:**
|
|
235
|
+
- **Tasks:** 15-35 tasks per epic (total across stories)
|
|
236
236
|
- **Scope:** One logical feature/capability
|
|
237
237
|
|
|
238
238
|
### Too Big? Split it!
|
|
239
239
|
|
|
240
240
|
Signs an epic is too big:
|
|
241
241
|
- More than 10 stories
|
|
242
|
-
- More than
|
|
242
|
+
- More than 40 tasks total
|
|
243
243
|
- Spans multiple sprints
|
|
244
244
|
- Multiple unrelated features
|
|
245
245
|
- Different team members for different parts
|
|
@@ -248,8 +248,8 @@ Signs an epic is too big:
|
|
|
248
248
|
|
|
249
249
|
Signs an epic is too small:
|
|
250
250
|
- Only 1-2 stories
|
|
251
|
-
- Less than
|
|
252
|
-
- Can be done in
|
|
251
|
+
- Less than 8 tasks
|
|
252
|
+
- Can be done in 3-4 days
|
|
253
253
|
- Part of a larger feature
|
|
254
254
|
|
|
255
255
|
### Parallel Execution Opportunities
|
|
@@ -261,11 +261,11 @@ Identify which stories can run in parallel:
|
|
|
261
261
|
|
|
262
262
|
| Phase | Stories (Parallel) | Duration |
|
|
263
263
|
|-------|-------------------|----------|
|
|
264
|
-
| 1 | S01 |
|
|
265
|
-
| 2 | S02, S03 |
|
|
266
|
-
| 3 | S04, S05 |
|
|
267
|
-
| 4 | S06 |
|
|
268
|
-
| 5 | S07 |
|
|
264
|
+
| 1 | S01 | 2.5d |
|
|
265
|
+
| 2 | S02, S03 | 3d |
|
|
266
|
+
| 3 | S04, S05 | 3d |
|
|
267
|
+
| 4 | S06 | 2d |
|
|
268
|
+
| 5 | S07 | 2d |
|
|
269
269
|
| **Total** | | **5d** |
|
|
270
270
|
|
|
271
271
|
**Sequential would be:** 6.5d
|
|
@@ -187,7 +187,7 @@ Each story should have:
|
|
|
187
187
|
- **Authorization** - Permission checks
|
|
188
188
|
- **Edge cases** - Boundary conditions
|
|
189
189
|
|
|
190
|
-
## Atomic Tasks (
|
|
190
|
+
## Atomic Tasks (4-6 hours each)
|
|
191
191
|
|
|
192
192
|
### Task Decomposition Rules
|
|
193
193
|
|
|
@@ -195,7 +195,7 @@ Each story should have:
|
|
|
195
195
|
|
|
196
196
|
| Rule | Description |
|
|
197
197
|
|------|-------------|
|
|
198
|
-
| **
|
|
198
|
+
| **4-6 hours** | Each task should be 4-6 hours of focused work |
|
|
199
199
|
| **Single responsibility** | One clear deliverable per task |
|
|
200
200
|
| **Explicit dependencies** | Every task declares what it depends on |
|
|
201
201
|
| **Parallel opportunities** | Independent tasks can run in parallel |
|
|
@@ -239,28 +239,31 @@ Interface → Stub Implementation → Tests → Real Implementation
|
|
|
239
239
|
|
|
240
240
|
**TDD Task:**
|
|
241
241
|
```markdown
|
|
242
|
-
### T2: Implement {{Entity}} Aggregate
|
|
243
|
-
- **Estimate:**
|
|
242
|
+
### T2: Implement {{Entity}} Aggregate + Tests
|
|
243
|
+
- **Estimate:** 5h
|
|
244
244
|
- **Depends on:** T1
|
|
245
245
|
- **Methodology:** TDD
|
|
246
246
|
- **Deliverables:**
|
|
247
247
|
- [ ] Aggregate: `domain/aggregate/entity.go`
|
|
248
|
+
- [ ] Value objects: `domain/valueobject/*.go`
|
|
248
249
|
- **Validation Test:** `domain/aggregate/entity_test.go`
|
|
249
250
|
- [ ] Test creation happy path
|
|
250
|
-
- [ ] Test validation errors
|
|
251
|
+
- [ ] Test validation errors
|
|
252
|
+
- [ ] Test business rules
|
|
251
253
|
- [ ] **⚠️ ALL TESTS MUST PASS**
|
|
252
254
|
```
|
|
253
255
|
|
|
254
256
|
**STUB Task:**
|
|
255
257
|
```markdown
|
|
256
|
-
### T2: Implement Repository (Stub → Real)
|
|
257
|
-
- **Estimate:**
|
|
258
|
+
### T2: Implement Repository (Stub → Real) + Tests
|
|
259
|
+
- **Estimate:** 6h
|
|
258
260
|
- **Depends on:** T1
|
|
259
261
|
- **Methodology:** STUB
|
|
260
262
|
- **Deliverables:**
|
|
261
263
|
- [ ] Stub: `infrastructure/repo/entity_memory_repo.go`
|
|
262
264
|
- [ ] Real: `infrastructure/repo/entity_postgres_repo.go`
|
|
263
265
|
- **Validation Test:** `infrastructure/repo/entity_repo_test.go`
|
|
266
|
+
- [ ] Test Save, FindByID, List
|
|
264
267
|
- [ ] Test with stub first
|
|
265
268
|
- [ ] Replace stub with real
|
|
266
269
|
- [ ] **⚠️ ALL TESTS MUST PASS**
|
|
@@ -284,7 +287,7 @@ Interface → Stub Implementation → Tests → Real Implementation
|
|
|
284
287
|
|
|
285
288
|
```markdown
|
|
286
289
|
### T{N}: {Task Name}
|
|
287
|
-
- **Estimate:**
|
|
290
|
+
- **Estimate:** 4h | 5h | 6h
|
|
288
291
|
- **Depends on:** T1, T2 | - (none)
|
|
289
292
|
- **Blocks:** T5, T6 | - (none)
|
|
290
293
|
- **Type:** 🔴 RED | 🟢 GREEN | 🔵 REFACTOR | 📝 DOCS
|
|
@@ -314,16 +317,12 @@ T1 ──┬──► T2 ──► T4
|
|
|
314
317
|
```markdown
|
|
315
318
|
| ID | Task | Est | Depends On | Status |
|
|
316
319
|
|----|------|-----|------------|--------|
|
|
317
|
-
| T1 |
|
|
318
|
-
| T2 |
|
|
319
|
-
| T3 |
|
|
320
|
-
| T4 |
|
|
321
|
-
| T5 |
|
|
322
|
-
| T6 |
|
|
323
|
-
| T7 | Write HTTP handler test | 1h | T5 | ⬜ |
|
|
324
|
-
| T8 | Implement HTTP handler | 1h | T7 | ⬜ |
|
|
325
|
-
| T9 | Integration tests | 1.5h | T6, T8 | ⬜ |
|
|
326
|
-
| T10 | Refactor & docs | 1h | T9 | ⬜ |
|
|
320
|
+
| T1 | Domain layer (aggregates, value objects, tests) | 6h | - | ⬜ |
|
|
321
|
+
| T2 | Repository interface + use case tests | 5h | T1 | ⬜ |
|
|
322
|
+
| T3 | Use case implementation | 5h | T2 | ⬜ |
|
|
323
|
+
| T4 | Repository implementation (PostgreSQL) | 6h | T2 | ⬜ |
|
|
324
|
+
| T5 | HTTP handlers + tests | 5h | T3 | ⬜ |
|
|
325
|
+
| T6 | Integration tests + refactor | 5h | T4, T5 | ⬜ |
|
|
327
326
|
```
|
|
328
327
|
|
|
329
328
|
**Status:** ⬜ TODO | 🔄 IN_PROGRESS | ✅ DONE | ⏸️ BLOCKED
|
|
@@ -345,7 +344,7 @@ Phase 7: T9 (waits for T6, T8)
|
|
|
345
344
|
Phase 8: T10 (final)
|
|
346
345
|
|
|
347
346
|
**Critical Path:** T1 → T2 → T4 → T5 → T7 → T8 → T9 → T10
|
|
348
|
-
**Total Estimate:**
|
|
347
|
+
**Total Estimate:** 32h (4 days)
|
|
349
348
|
**Parallel Savings:** ~3h (25%)
|
|
350
349
|
```
|
|
351
350
|
|
|
@@ -354,16 +353,12 @@ Phase 8: T10 (final)
|
|
|
354
353
|
```markdown
|
|
355
354
|
| ID | Task | Est | Depends On | Type |
|
|
356
355
|
|----|------|-----|------------|------|
|
|
357
|
-
| T1 |
|
|
358
|
-
| T2 |
|
|
359
|
-
| T3 |
|
|
360
|
-
| T4 |
|
|
361
|
-
| T5 |
|
|
362
|
-
| T6 |
|
|
363
|
-
| T7 | Write HTTP handler test | 1h | T5 | 🔴 |
|
|
364
|
-
| T8 | Implement HTTP handler | 1h | T7 | 🟢 |
|
|
365
|
-
| T9 | Write integration tests | 1.5h | T6, T8 | 🔴 |
|
|
366
|
-
| T10 | Refactor & documentation | 1h | T9 | 🔵 |
|
|
356
|
+
| T1 | Domain layer: Product aggregate + value objects + tests | 6h | - | 🔴🟢 |
|
|
357
|
+
| T2 | Repository interface + CreateProduct use case tests | 5h | T1 | 🔴 |
|
|
358
|
+
| T3 | CreateProduct use case implementation | 5h | T2 | 🟢 |
|
|
359
|
+
| T4 | PostgreSQL repository implementation + tests | 6h | T2 | 🟢 |
|
|
360
|
+
| T5 | HTTP handler + tests | 5h | T3 | 🔴🟢 |
|
|
361
|
+
| T6 | Integration tests + refactor + documentation | 5h | T4, T5 | 🔵 |
|
|
367
362
|
|
|
368
363
|
**Graph:**
|
|
369
364
|
T1 ──► T2 ──┬──► T4 ──► T5 ──► T7 ──► T8 ──┬──► T9 ──► T10
|
|
@@ -373,18 +368,18 @@ T3 ─────────┴───────────► T6 ──
|
|
|
373
368
|
|
|
374
369
|
### Splitting Large Tasks
|
|
375
370
|
|
|
376
|
-
If a task exceeds
|
|
371
|
+
If a task exceeds 6h, consider splitting it. **Each task MUST have validation test.**
|
|
377
372
|
|
|
378
|
-
| Original (
|
|
379
|
-
|
|
380
|
-
| "
|
|
381
|
-
| "
|
|
373
|
+
| Original (8h+) | Split Into (with tests) |
|
|
374
|
+
|----------------|------------------------|
|
|
375
|
+
| "Full domain layer" (10h) | **T1:** Value objects + tests (4h)<br>**T2:** Aggregate + business rules + tests (6h) |
|
|
376
|
+
| "Full repository" (10h) | **T1:** Interface + Save/FindByID + tests (5h)<br>**T2:** List/Search + advanced queries + tests (5h) |
|
|
382
377
|
|
|
383
378
|
### Task Template with Validation
|
|
384
379
|
|
|
385
380
|
```markdown
|
|
386
381
|
### T{N}: {Task Name}
|
|
387
|
-
- **Estimate:**
|
|
382
|
+
- **Estimate:** 5h
|
|
388
383
|
- **Depends on:** T{N-1}
|
|
389
384
|
- **Methodology:** TDD | STUB
|
|
390
385
|
- **Deliverables:**
|
|
@@ -84,8 +84,8 @@ S01 ──► S02 ──► S03 ──► S04
|
|
|
84
84
|
### Story Decomposition Rules
|
|
85
85
|
|
|
86
86
|
Each story MUST:
|
|
87
|
-
1. Be completable in
|
|
88
|
-
2. Have
|
|
87
|
+
1. Be completable in 2-5 days
|
|
88
|
+
2. Have 3-6 atomic tasks (4-6h each)
|
|
89
89
|
3. Have clear dependencies on other stories
|
|
90
90
|
4. Map to specific Acceptance Criteria
|
|
91
91
|
|
|
@@ -103,11 +103,11 @@ Each story MUST:
|
|
|
103
103
|
|
|
104
104
|
| Layer | Stories | Tasks | Hours |
|
|
105
105
|
|-------|---------|-------|-------|
|
|
106
|
-
| Domain | 1 |
|
|
107
|
-
| Application | 1 |
|
|
108
|
-
| Infrastructure | 2 |
|
|
109
|
-
| Testing | 1 |
|
|
110
|
-
| **Total** | **5** | **
|
|
106
|
+
| Domain | 1 | 4 | 20h |
|
|
107
|
+
| Application | 1 | 4 | 22h |
|
|
108
|
+
| Infrastructure | 2 | 5 | 28h |
|
|
109
|
+
| Testing | 1 | 3 | 15h |
|
|
110
|
+
| **Total** | **5** | **16** | **85h** |
|
|
111
111
|
|
|
112
112
|
---
|
|
113
113
|
|
|
@@ -55,7 +55,7 @@ METHODOLOGY: {{methodology}} (tdd | stub)
|
|
|
55
55
|
- STUB: Interface → Stub → Test → Full Implementation
|
|
56
56
|
|
|
57
57
|
RULES:
|
|
58
|
-
- Each task is
|
|
58
|
+
- Each task is 4-6 hours of focused work
|
|
59
59
|
- Each task includes TEST as validation gate
|
|
60
60
|
- Tasks have explicit dependencies
|
|
61
61
|
- Dev agent respects dependency order
|
|
@@ -98,108 +98,101 @@ T3 ───────────────┴──► T6
|
|
|
98
98
|
|
|
99
99
|
| ID | Task | Est | Deps | Test | Status |
|
|
100
100
|
|----|------|-----|------|------|--------|
|
|
101
|
-
| T1 | {{task_1}} |
|
|
102
|
-
| T2 | {{task_2}} |
|
|
103
|
-
| T3 | {{task_3}} |
|
|
104
|
-
| T4 | {{task_4}} |
|
|
105
|
-
| T5 | {{task_5}} |
|
|
106
|
-
| T6 | {{task_6}} | 1.5h | T3,T5 | integration | ⬜ |
|
|
101
|
+
| T1 | {{task_1}} | 5h | - | unit | ⬜ |
|
|
102
|
+
| T2 | {{task_2}} | 6h | T1 | unit | ⬜ |
|
|
103
|
+
| T3 | {{task_3}} | 5h | T2 | unit | ⬜ |
|
|
104
|
+
| T4 | {{task_4}} | 5h | T1 | unit | ⬜ |
|
|
105
|
+
| T5 | {{task_5}} | 5h | T3,T4 | integration | ⬜ |
|
|
107
106
|
|
|
108
107
|
**Status:** ⬜ TODO | 🔄 IN_PROGRESS | ✅ DONE | ⏸️ BLOCKED | ❌ FAILED
|
|
109
108
|
|
|
110
109
|
---
|
|
111
110
|
|
|
112
|
-
### T1:
|
|
113
|
-
- **Estimate:**
|
|
111
|
+
### T1: Domain Layer (Aggregates, Value Objects)
|
|
112
|
+
- **Estimate:** 6h
|
|
114
113
|
- **Depends on:** -
|
|
115
|
-
- **Blocks:** T2
|
|
114
|
+
- **Blocks:** T2
|
|
116
115
|
- **Deliverables:**
|
|
117
116
|
- [ ] Interface/contract defined
|
|
118
|
-
- [ ] Value objects
|
|
117
|
+
- [ ] Value objects with validation
|
|
118
|
+
- [ ] Aggregate with business rules
|
|
119
|
+
- [ ] Factory methods
|
|
119
120
|
- **Validation Test:**
|
|
120
|
-
- [ ]
|
|
121
|
+
- [ ] Value object tests (validation, equality)
|
|
122
|
+
- [ ] Aggregate creation tests
|
|
123
|
+
- [ ] Business rules tests
|
|
124
|
+
- [ ] **⚠️ ALL TESTS MUST PASS**
|
|
121
125
|
- **Notes:** {{implementation_hint}}
|
|
122
126
|
|
|
123
127
|
---
|
|
124
128
|
|
|
125
|
-
### T2:
|
|
126
|
-
- **Estimate:**
|
|
129
|
+
### T2: Repository Interface + Use Case Tests
|
|
130
|
+
- **Estimate:** 5h
|
|
127
131
|
- **Depends on:** T1
|
|
128
|
-
- **Blocks:** T3
|
|
132
|
+
- **Blocks:** T3, T4
|
|
129
133
|
- **Deliverables:**
|
|
130
|
-
- [ ]
|
|
131
|
-
- [ ]
|
|
134
|
+
- [ ] Repository interface (ports)
|
|
135
|
+
- [ ] Use case interface
|
|
136
|
+
- [ ] Use case DTOs (input/output)
|
|
137
|
+
- [ ] Use case tests (with mock repository)
|
|
132
138
|
- **Validation Test:**
|
|
133
|
-
- [ ]
|
|
134
|
-
- [ ]
|
|
135
|
-
- [ ] Test business rules
|
|
139
|
+
- [ ] Use case happy path test
|
|
140
|
+
- [ ] Use case error handling tests
|
|
136
141
|
- [ ] **⚠️ ALL TESTS MUST PASS**
|
|
137
142
|
- **Notes:** {{implementation_hint}}
|
|
138
143
|
|
|
139
144
|
---
|
|
140
145
|
|
|
141
|
-
### T3:
|
|
142
|
-
- **Estimate:**
|
|
146
|
+
### T3: Use Case Implementation
|
|
147
|
+
- **Estimate:** 5h
|
|
143
148
|
- **Depends on:** T2
|
|
144
|
-
- **Blocks:**
|
|
149
|
+
- **Blocks:** T5
|
|
145
150
|
- **Deliverables:**
|
|
146
|
-
- [ ] Use case handler
|
|
147
|
-
- [ ] Input/Output DTOs
|
|
151
|
+
- [ ] Use case handler implementation
|
|
148
152
|
- [ ] Mappers (entity ↔ DTO)
|
|
153
|
+
- [ ] Error handling
|
|
149
154
|
- **Validation Test:**
|
|
150
|
-
- [ ]
|
|
151
|
-
- [ ]
|
|
155
|
+
- [ ] All use case tests pass
|
|
156
|
+
- [ ] Edge cases covered
|
|
152
157
|
- [ ] **⚠️ ALL TESTS MUST PASS**
|
|
153
158
|
- **Notes:** {{implementation_hint}}
|
|
154
159
|
|
|
155
160
|
---
|
|
156
161
|
|
|
157
|
-
### T4:
|
|
158
|
-
- **Estimate:**
|
|
159
|
-
- **Depends on:**
|
|
162
|
+
### T4: Repository Implementation
|
|
163
|
+
- **Estimate:** 6h
|
|
164
|
+
- **Depends on:** T2
|
|
160
165
|
- **Blocks:** T5
|
|
161
166
|
- **Deliverables (TDD):**
|
|
162
|
-
- [ ] Write
|
|
163
|
-
- [ ]
|
|
167
|
+
- [ ] Write repository tests first
|
|
168
|
+
- [ ] PostgreSQL repository implementation
|
|
164
169
|
- **Deliverables (STUB):**
|
|
165
170
|
- [ ] In-memory stub first
|
|
166
|
-
- [ ]
|
|
171
|
+
- [ ] PostgreSQL implementation
|
|
167
172
|
- **Validation Test:**
|
|
168
173
|
- [ ] Test Save
|
|
169
|
-
- [ ] Test FindByID
|
|
170
|
-
- [ ] Test
|
|
174
|
+
- [ ] Test FindByID (found/not found)
|
|
175
|
+
- [ ] Test List with filters
|
|
171
176
|
- [ ] **⚠️ ALL TESTS MUST PASS**
|
|
172
177
|
- **Notes:** {{implementation_hint}}
|
|
173
178
|
|
|
174
179
|
---
|
|
175
180
|
|
|
176
|
-
### T5:
|
|
177
|
-
- **Estimate:**
|
|
178
|
-
- **Depends on:** T4
|
|
179
|
-
- **Blocks:** T6
|
|
180
|
-
- **Deliverables:**
|
|
181
|
-
- [ ] API handler/controller
|
|
182
|
-
- [ ] Routes registered
|
|
183
|
-
- **Validation Test:**
|
|
184
|
-
- [ ] Test 201 Created
|
|
185
|
-
- [ ] Test 400 Bad Request
|
|
186
|
-
- [ ] Test 403 Forbidden
|
|
187
|
-
- [ ] **⚠️ ALL TESTS MUST PASS**
|
|
188
|
-
- **Notes:** {{implementation_hint}}
|
|
189
|
-
|
|
190
|
-
---
|
|
191
|
-
|
|
192
|
-
### T6: Integration Test & Refactor
|
|
193
|
-
- **Estimate:** 1.5h
|
|
194
|
-
- **Depends on:** T3, T5
|
|
181
|
+
### T5: HTTP Handlers + Integration Tests
|
|
182
|
+
- **Estimate:** 5h
|
|
183
|
+
- **Depends on:** T3, T4
|
|
195
184
|
- **Blocks:** -
|
|
196
185
|
- **Deliverables:**
|
|
197
|
-
- [ ]
|
|
198
|
-
- [ ]
|
|
186
|
+
- [ ] HTTP handler/controller
|
|
187
|
+
- [ ] Routes registered
|
|
188
|
+
- [ ] Request/response validation
|
|
189
|
+
- [ ] Integration tests
|
|
199
190
|
- [ ] Documentation updated
|
|
200
191
|
- **Validation Test:**
|
|
192
|
+
- [ ] Test 201 Created
|
|
193
|
+
- [ ] Test 400 Bad Request (validation)
|
|
194
|
+
- [ ] Test 404 Not Found
|
|
201
195
|
- [ ] E2E: API → Service → Repo → DB
|
|
202
|
-
- [ ] Event published (if applicable)
|
|
203
196
|
- [ ] **⚠️ ALL TESTS MUST PASS**
|
|
204
197
|
- [ ] **⚠️ NO REGRESSIONS**
|
|
205
198
|
- **Notes:** {{implementation_hint}}
|
|
@@ -210,14 +203,14 @@ T3 ───────────────┴──► T6
|
|
|
210
203
|
|
|
211
204
|
| Phase | Tasks (Parallel) | Duration | Tests Required |
|
|
212
205
|
|-------|-----------------|----------|----------------|
|
|
213
|
-
| 1 | T1 |
|
|
214
|
-
| 2 | T2
|
|
215
|
-
| 3 | T3,
|
|
216
|
-
| 4 |
|
|
217
|
-
| **Total** | | **
|
|
218
|
-
|
|
219
|
-
**Critical Path:** T1 → T2 → T3 →
|
|
220
|
-
**With Parallelism:** ~
|
|
206
|
+
| 1 | T1 | 6h | Domain layer tests |
|
|
207
|
+
| 2 | T2 | 5h | Use case tests |
|
|
208
|
+
| 3 | T3, T4 | 6h | Implementation tests |
|
|
209
|
+
| 4 | T5 | 5h | Integration tests |
|
|
210
|
+
| **Total** | | **22h** | **All green** |
|
|
211
|
+
|
|
212
|
+
**Critical Path:** T1 → T2 → T3 → T5 = 21h (~3 days)
|
|
213
|
+
**With Parallelism (T3 || T4):** ~2.5 days
|
|
221
214
|
|
|
222
215
|
---
|
|
223
216
|
|
|
@@ -363,9 +363,9 @@ Read from `config.yaml → development.methodology`:
|
|
|
363
363
|
<output>
|
|
364
364
|
| ID | Task | Est | Depends On | Status |
|
|
365
365
|
|----|------|-----|------------|--------|
|
|
366
|
-
| T1 | ... |
|
|
367
|
-
| T2 | ... |
|
|
368
|
-
| T3 | ... |
|
|
366
|
+
| T1 | ... | 5h | - | ✅ |
|
|
367
|
+
| T2 | ... | 6h | T1 | 🔄 | ← Current
|
|
368
|
+
| T3 | ... | 5h | T1 | ⬜ | ← Can run parallel with T2
|
|
369
369
|
</output>
|
|
370
370
|
</step>
|
|
371
371
|
```
|