@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comfanion/workflow",
3
- "version": "3.8.0",
3
+ "version": "3.9.0",
4
4
  "description": "Initialize OpenCode Workflow system for AI-assisted development",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "3.0.0",
3
- "buildDate": "2026-01-23T17:01:07.473Z",
3
+ "buildDate": "2026-01-23T17:06:57.357Z",
4
4
  "files": [
5
5
  "config.yaml",
6
6
  "FLOW.yaml",
@@ -6,7 +6,7 @@
6
6
  # PROJECT CONFIGURATION
7
7
  # =============================================================================
8
8
  project_name: "ai-wf"
9
- version: "3.8.0"
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 (1-3 days)
172
- └── TASK (1-2 hours)
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** | 1-3 days | 3-8 per epic | User-facing capability |
179
- | **Task** | 1-2 hours | 4-10 per story | Atomic code change |
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 | 6 | 8h | 1d |
217
- | S02 | 3 | 4h | 0.5d |
218
- | S03 | 8 | 12h | 1.5d |
219
- | S04 | 6 | 9h | 1d |
220
- | S05 | 5 | 7h | 1d |
221
- | S06 | 4 | 5h | 0.5d |
222
- | S07 | 4 | 6h | 1d |
223
- | **Total** | **36** | **51h** | **6.5d** |
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:** ~5 days
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:** 25-60 tasks per epic (total across stories)
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 80 tasks total
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 15 tasks
252
- - Can be done in 2-3 days
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 | 1d |
265
- | 2 | S02, S03 | 1.5d |
266
- | 3 | S04, S05 | 1d |
267
- | 4 | S06 | 0.5d |
268
- | 5 | S07 | 1d |
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 (1-2 hours each)
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
- | **Max 2 hours** | No task should exceed 2 hours of work |
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:** 1.5h
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:** 1.5h
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:** 1h | 1.5h | 2h
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 | Write aggregate test | 1h | - | ⬜ |
318
- | T2 | Implement aggregate | 1.5h | T1 | ⬜ |
319
- | T3 | Write repository interface | 0.5h | T1 | ⬜ |
320
- | T4 | Write use case test | 1h | T2 | ⬜ |
321
- | T5 | Implement use case | 1.5h | T3, T4 | ⬜ |
322
- | T6 | Implement repository | 1.5h | T3 | ⬜ |
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:** 12h
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 | Write Product aggregate test | 1h | - | 🔴 |
358
- | T2 | Implement Product aggregate | 1.5h | T1 | 🟢 |
359
- | T3 | Write ProductRepository interface | 0.5h | - | 📝 |
360
- | T4 | Write CreateProduct use case test | 1h | T2, T3 | 🔴 |
361
- | T5 | Implement CreateProduct handler | 1.5h | T4 | 🟢 |
362
- | T6 | Implement PostgreSQL repository | 1.5h | T3 | 🟢 |
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 2h, split it. **Each split task MUST have validation test.**
371
+ If a task exceeds 6h, consider splitting it. **Each task MUST have validation test.**
377
372
 
378
- | Original (4h) | Split Into (with tests) |
379
- |---------------|------------------------|
380
- | "Implement repository" | **T1:** Interface + contract test (0.5h)<br>**T2:** Save method + test (1h)<br>**T3:** FindByID + test (1h)<br>**T4:** List + test (1.5h) |
381
- | "Write aggregate" | **T1:** Value objects + tests (1h)<br>**T2:** Aggregate + creation test (1h)<br>**T3:** Business rules + tests (1h) |
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:** 1.5h
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 1-3 days
88
- 2. Have 4-10 atomic tasks (1-2h each)
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 | 6 | 8h |
107
- | Application | 1 | 8 | 12h |
108
- | Infrastructure | 2 | 9 | 14h |
109
- | Testing | 1 | 4 | 6h |
110
- | **Total** | **5** | **27** | **40h** |
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 1-2 hours max
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}} | 1h | - | unit | ⬜ |
102
- | T2 | {{task_2}} | 1.5h | T1 | unit | ⬜ |
103
- | T3 | {{task_3}} | 1h | T2 | unit | ⬜ |
104
- | T4 | {{task_4}} | 1.5h | T1 | unit | ⬜ |
105
- | T5 | {{task_5}} | 1h | T4 | unit | ⬜ |
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: Define {{entity}} Interface
113
- - **Estimate:** 1h
111
+ ### T1: Domain Layer (Aggregates, Value Objects)
112
+ - **Estimate:** 6h
114
113
  - **Depends on:** -
115
- - **Blocks:** T2, T4
114
+ - **Blocks:** T2
116
115
  - **Deliverables:**
117
116
  - [ ] Interface/contract defined
118
- - [ ] Value objects defined (if needed)
117
+ - [ ] Value objects with validation
118
+ - [ ] Aggregate with business rules
119
+ - [ ] Factory methods
119
120
  - **Validation Test:**
120
- - [ ] Contract test (compile/type check)
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: Implement {{entity}} Entity/Model
126
- - **Estimate:** 1.5h
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
- - [ ] Entity/model with business logic
131
- - [ ] Factory method with validation
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
- - [ ] Test creation happy path
134
- - [ ] Test validation errors
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: Implement Use Case / Service
142
- - **Estimate:** 1h
146
+ ### T3: Use Case Implementation
147
+ - **Estimate:** 5h
143
148
  - **Depends on:** T2
144
- - **Blocks:** T6
149
+ - **Blocks:** T5
145
150
  - **Deliverables:**
146
- - [ ] Use case handler/service
147
- - [ ] Input/Output DTOs
151
+ - [ ] Use case handler implementation
148
152
  - [ ] Mappers (entity ↔ DTO)
153
+ - [ ] Error handling
149
154
  - **Validation Test:**
150
- - [ ] Test happy path (mock repository)
151
- - [ ] Test validation errors
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: Implement Repository / Data Access
158
- - **Estimate:** 1.5h
159
- - **Depends on:** T1
162
+ ### T4: Repository Implementation
163
+ - **Estimate:** 6h
164
+ - **Depends on:** T2
160
165
  - **Blocks:** T5
161
166
  - **Deliverables (TDD):**
162
- - [ ] Write test first
163
- - [ ] Implement repository
167
+ - [ ] Write repository tests first
168
+ - [ ] PostgreSQL repository implementation
164
169
  - **Deliverables (STUB):**
165
170
  - [ ] In-memory stub first
166
- - [ ] Real implementation
171
+ - [ ] PostgreSQL implementation
167
172
  - **Validation Test:**
168
173
  - [ ] Test Save
169
- - [ ] Test FindByID
170
- - [ ] Test FindByID not found
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: Implement API Handler
177
- - **Estimate:** 1h
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
- - [ ] Integration test
198
- - [ ] Code refactored, no smells
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 | 1h | Interface contract |
214
- | 2 | T2, T4 | 1.5h | Unit tests |
215
- | 3 | T3, T5 | 1h | Unit tests |
216
- | 4 | T6 | 1.5h | Integration tests |
217
- | **Total** | | **5h** | **All green** |
218
-
219
- **Critical Path:** T1 → T2 → T3 → T6 = 5h
220
- **With Parallelism:** ~4h
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 | ... | 1h | - | ✅ |
367
- | T2 | ... | 1.5h | T1 | 🔄 | ← Current
368
- | T3 | ... | 1h | T1 | ⬜ | ← Can run parallel with T2
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
  ```