@@ -10,7 +10,11 @@ argument-hint: "[path] [--tool <gemini|qwen|codex>] [--mode <full|partial>] [--c
1010Lightweight planner that analyzes project structure, decomposes documentation work into tasks, and generates execution plans. Does NOT generate documentation content itself - delegates to doc-generator agent.
1111
1212** Execution Strategy** :
13- - ** Dynamic Task Grouping** : Level 1 tasks dynamically grouped by directory count (max 2 dirs/task, ≤5 docs/task)
13+ - ** Dynamic Task Grouping** : Level 1 tasks grouped by top-level directories with document count limit
14+ - ** Primary constraint** : Each task generates ≤7 documents (API.md + README.md count)
15+ - ** Optimization goal** : Prefer grouping 2 top-level directories per task for context sharing
16+ - ** Conflict resolution** : If 2 dirs exceed 7 docs, reduce to 1 dir/task; if 1 dir exceeds 7 docs, split by subdirectories
17+ - ** Context benefit** : Same-task directories analyzed together via single Gemini call
1418- ** Parallel Execution** : Multiple Level 1 tasks execute concurrently for faster completion
1519- ** Pre-computed Analysis** : Phase 2 performs unified analysis once, stored in ` .process/ ` for reuse
1620- ** Efficient Data Loading** : All existing docs loaded once in Phase 2, shared across tasks
@@ -133,25 +137,47 @@ bash(cat .workflow/WFS-docs-{timestamp}/.process/phase2-analysis.json | jq '.exi
133137
134138### Phase 4: Decompose Tasks
135139
136- ** Task Hierarchy** (Dynamic based on directory count):
140+ ** Task Hierarchy** (Dynamic based on document count):
137141
138142```
139- Small Projects (≤3 dirs ):
140- Level 1: IMPL-001 (all directories, single task)
143+ Small Projects (total ≤7 docs ):
144+ Level 1: IMPL-001 (all directories in single task, shared context )
141145 Level 2: IMPL-002 (README, full mode only)
142146 Level 3: IMPL-003 (ARCHITECTURE+EXAMPLES), IMPL-004 (HTTP API, optional)
143147
144- Large Projects (≥4 dirs, Example: 7 dirs):
145- Level 1: IMPL-001 to IMPL-004 (parallel groups, 2 dirs/task)
146- ├─ IMPL-001: Group 1 (dirs 1-2)
147- ├─ IMPL-002: Group 2 (dirs 3-4)
148- ├─ IMPL-003: Group 3 (dirs 5-6)
149- └─ IMPL-004: Group 4 (dir 7)
150- Level 2: IMPL-005 (README, depends on Level 1, full mode only)
151- Level 3: IMPL-006 (ARCHITECTURE+EXAMPLES), IMPL-007 (HTTP API, optional)
148+ Medium Projects (Example: 7 top-level dirs, 12 total docs):
149+ Step 1: Count docs per top-level dir
150+ ├─ dir1: 2 docs, dir2: 3 docs → Group 1 (5 docs)
151+ ├─ dir3: 4 docs, dir4: 2 docs → Group 2 (6 docs)
152+ ├─ dir5: 1 doc → Group 3 (1 doc, can add more)
153+
154+ Step 2: Create tasks with ≤7 docs constraint
155+ Level 1: IMPL-001 to IMPL-003 (parallel groups)
156+ ├─ IMPL-001: Group 1 (dir1 + dir2, 5 docs, shared context)
157+ ├─ IMPL-002: Group 2 (dir3 + dir4, 6 docs, shared context)
158+ └─ IMPL-003: Group 3 (remaining dirs, ≤7 docs)
159+ Level 2: IMPL-004 (README, depends on Level 1, full mode only)
160+ Level 3: IMPL-005 (ARCHITECTURE+EXAMPLES), IMPL-006 (HTTP API, optional)
161+
162+ Large Projects (single dir >7 docs):
163+ Step 1: Detect oversized directory
164+ └─ src/modules/: 12 subdirs → 24 docs (exceeds limit)
165+
166+ Step 2: Split by subdirectories
167+ Level 1: IMPL-001 to IMPL-004 (split oversized dir)
168+ ├─ IMPL-001: src/modules/ subdirs 1-3 (6 docs)
169+ ├─ IMPL-002: src/modules/ subdirs 4-6 (6 docs)
170+ └─ IMPL-003: src/modules/ subdirs 7-12 (12 docs) → further split
152171```
153172
154- ** Benefits** : Parallel execution, failure isolation, progress visibility, load balancing (max 2 dirs/task).
173+ ** Grouping Algorithm** :
174+ 1 . Count total docs for each top-level directory
175+ 2 . Try grouping 2 directories (optimization for context sharing)
176+ 3 . If group exceeds 7 docs, split to 1 dir/task
177+ 4 . If single dir exceeds 7 docs, split by subdirectories
178+ 5 . Create parallel Level 1 tasks with ≤7 docs each
179+
180+ ** Benefits** : Parallel execution, failure isolation, progress visibility, context sharing, document count control.
155181
156182** Commands** :
157183
@@ -167,16 +193,22 @@ bash(grep -r "router\.|@Get\|@Post" src/ 2>/dev/null && echo "API_FOUND" || echo
167193```
168194
169195** Data Processing** :
170- 1 . Parse directory list and create groups (max 2 dirs/group):
171- - ≤3 dirs: Single group with all directories
172- - ≥4 dirs: Multiple groups, 2 dirs each
173- 2 . Use ** Edit tool** to update ` phase2-analysis.json ` adding groups field:
196+ 1 . Count documents for each top-level directory (from folder_analysis):
197+ - Code folders: 2 docs each (API.md + README.md)
198+ - Navigation folders: 1 doc each (README.md only)
199+ 2 . Apply grouping algorithm with ≤7 docs constraint:
200+ - Try grouping 2 directories, calculate total docs
201+ - If total ≤7 docs: create group
202+ - If total >7 docs: split to 1 dir/group or subdivide
203+ - If single dir >7 docs: split by subdirectories
204+ 3 . Use ** Edit tool** to update ` phase2-analysis.json ` adding groups field:
174205 ``` json
175206 "groups" : {
176- "count" : 2 ,
207+ "count" : 3 ,
177208 "assignments" : [
178- {"group_id" : " 001" , "directories" : [" src/modules" , " src/utils" ]},
179- {"group_id" : " 002" , "directories" : [" lib/core" ]}
209+ {"group_id" : " 001" , "directories" : [" src/modules" , " src/utils" ], "doc_count" : 5 },
210+ {"group_id" : " 002" , "directories" : [" lib/core" ], "doc_count" : 6 },
211+ {"group_id" : " 003" , "directories" : [" lib/helpers" ], "doc_count" : 3 }
180212 ]
181213 }
182214 ```
@@ -465,8 +497,8 @@ api_id=$((group_count + 3))
465497 "groups" : {
466498 "count" : 4 ,
467499 "assignments" : [
468- {"group_id" : " 001" , "directories" : [" src/modules" , " src/utils" ]},
469- {"group_id" : " 002" , "directories" : [" lib/core" , " lib/helpers" ]}
500+ {"group_id" : " 001" , "directories" : [" src/modules" , " src/utils" ], "doc_count" : 6 },
501+ {"group_id" : " 002" , "directories" : [" lib/core" , " lib/helpers" ], "doc_count" : 7 }
470502 ]
471503 },
472504 "statistics" : {
0 commit comments