maestro-flow 0.3.9 → 0.3.11

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.
Files changed (281) hide show
  1. package/.claude/agents/workflow-collab-planner.md +1 -1
  2. package/.claude/agents/workflow-executor.md +1 -1
  3. package/.claude/agents/workflow-plan-checker.md +1 -1
  4. package/.claude/agents/workflow-planner.md +1 -1
  5. package/.claude/commands/learn-decompose.md +176 -176
  6. package/.claude/commands/learn-follow.md +167 -167
  7. package/.claude/commands/learn-retro.md +1 -1
  8. package/.claude/commands/maestro-analyze.md +46 -3
  9. package/.claude/commands/maestro-coordinate.md +1 -3
  10. package/.claude/commands/maestro-execute.md +14 -0
  11. package/.claude/commands/maestro-plan.md +16 -0
  12. package/.claude/commands/manage-harvest.md +131 -131
  13. package/.claude/commands/manage-issue-discover.md +2 -2
  14. package/.claude/commands/manage-issue.md +5 -5
  15. package/.claude/commands/spec-add.md +67 -56
  16. package/.claude/commands/spec-load.md +66 -64
  17. package/.claude/commands/spec-setup.md +5 -9
  18. package/.codex/skills/learn-decompose/SKILL.md +119 -0
  19. package/.codex/skills/learn-follow/SKILL.md +83 -0
  20. package/.codex/skills/learn-investigate/SKILL.md +83 -0
  21. package/.codex/skills/learn-retro/SKILL.md +83 -0
  22. package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
  23. package/.codex/skills/maestro/SKILL.md +335 -0
  24. package/.codex/skills/maestro-analyze/SKILL.md +84 -75
  25. package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
  26. package/.codex/skills/maestro-chain/SKILL.md +233 -0
  27. package/.codex/skills/maestro-coordinate/SKILL.md +167 -278
  28. package/.codex/skills/maestro-execute/SKILL.md +435 -438
  29. package/.codex/skills/maestro-fork/SKILL.md +68 -0
  30. package/.codex/skills/maestro-init/SKILL.md +171 -167
  31. package/.codex/skills/maestro-learn/SKILL.md +80 -0
  32. package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
  33. package/.codex/skills/maestro-merge/SKILL.md +62 -0
  34. package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
  35. package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
  36. package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
  37. package/.codex/skills/maestro-overlay/SKILL.md +188 -185
  38. package/.codex/skills/maestro-plan/SKILL.md +66 -69
  39. package/.codex/skills/maestro-quick/SKILL.md +26 -23
  40. package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
  41. package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
  42. package/.codex/skills/maestro-ui-design/SKILL.md +34 -31
  43. package/.codex/skills/maestro-verify/SKILL.md +556 -566
  44. package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
  45. package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
  46. package/.codex/skills/manage-harvest/SKILL.md +82 -0
  47. package/.codex/skills/manage-issue/SKILL.md +80 -65
  48. package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
  49. package/.codex/skills/manage-learn/SKILL.md +190 -186
  50. package/.codex/skills/manage-memory/SKILL.md +95 -72
  51. package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
  52. package/.codex/skills/manage-status/SKILL.md +102 -89
  53. package/.codex/skills/quality-business-test/SKILL.md +228 -223
  54. package/.codex/skills/quality-debug/SKILL.md +54 -66
  55. package/.codex/skills/quality-integration-test/SKILL.md +532 -544
  56. package/.codex/skills/quality-refactor/SKILL.md +197 -191
  57. package/.codex/skills/quality-retrospective/SKILL.md +512 -505
  58. package/.codex/skills/quality-review/SKILL.md +93 -105
  59. package/.codex/skills/quality-sync/SKILL.md +101 -89
  60. package/.codex/skills/quality-test/SKILL.md +202 -198
  61. package/.codex/skills/quality-test-gen/SKILL.md +93 -104
  62. package/.codex/skills/spec-add/SKILL.md +58 -39
  63. package/.codex/skills/spec-load/SKILL.md +45 -40
  64. package/.codex/skills/spec-map/SKILL.md +180 -182
  65. package/.codex/skills/spec-setup/SKILL.md +94 -76
  66. package/.codex/skills/team-coordinate/SKILL.md +346 -357
  67. package/.codex/skills/team-executor/SKILL.md +70 -112
  68. package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
  69. package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
  70. package/.codex/skills/team-review/SKILL.md +232 -225
  71. package/.codex/skills/team-tech-debt/SKILL.md +78 -100
  72. package/.codex/skills/team-testing/SKILL.md +242 -235
  73. package/.codex/skills/wiki-connect/SKILL.md +75 -0
  74. package/.codex/skills/wiki-digest/SKILL.md +87 -0
  75. package/README.md +14 -11
  76. package/README.zh-CN.md +14 -11
  77. package/chains/issue-lifecycle.json +13 -13
  78. package/chains/singles/issue-analyze.json +3 -3
  79. package/chains/singles/issue-execute.json +3 -3
  80. package/chains/singles/issue-plan.json +3 -3
  81. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js +2 -2
  82. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js.map +1 -1
  83. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +3 -3
  84. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  85. package/dashboard/dist-server/dashboard/src/server/routes/issues.js +34 -0
  86. package/dashboard/dist-server/dashboard/src/server/routes/issues.js.map +1 -1
  87. package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
  88. package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
  89. package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
  90. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
  91. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
  92. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  93. package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js +2 -3
  94. package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js.map +1 -1
  95. package/dashboard/dist-server/dashboard/src/shared/constants.js +5 -0
  96. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  97. package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +5 -0
  98. package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
  99. package/dashboard/dist-server/dashboard/src/shared/normalize-task.d.ts +2 -0
  100. package/dashboard/dist-server/dashboard/src/shared/normalize-task.js +75 -0
  101. package/dashboard/dist-server/dashboard/src/shared/normalize-task.js.map +1 -0
  102. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +21 -0
  103. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  104. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
  105. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +1 -1
  106. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  107. package/dashboard/dist-server/src/hooks/constants.d.ts +92 -12
  108. package/dashboard/dist-server/src/hooks/constants.js +151 -16
  109. package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
  110. package/dashboard/dist-server/src/types/index.d.ts +5 -0
  111. package/dist/src/commands/collab.d.ts +1 -34
  112. package/dist/src/commands/collab.d.ts.map +1 -1
  113. package/dist/src/commands/collab.js +8 -76
  114. package/dist/src/commands/collab.js.map +1 -1
  115. package/dist/src/commands/hooks.d.ts +5 -1
  116. package/dist/src/commands/hooks.d.ts.map +1 -1
  117. package/dist/src/commands/hooks.js +115 -10
  118. package/dist/src/commands/hooks.js.map +1 -1
  119. package/dist/src/commands/install-ui/InstallConfirm.d.ts +3 -1
  120. package/dist/src/commands/install-ui/InstallConfirm.d.ts.map +1 -1
  121. package/dist/src/commands/install-ui/InstallConfirm.js +3 -1
  122. package/dist/src/commands/install-ui/InstallConfirm.js.map +1 -1
  123. package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
  124. package/dist/src/commands/install-ui/InstallExecution.js +5 -1
  125. package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
  126. package/dist/src/commands/install-ui/InstallFlow.d.ts.map +1 -1
  127. package/dist/src/commands/install-ui/InstallFlow.js +7 -3
  128. package/dist/src/commands/install-ui/InstallFlow.js.map +1 -1
  129. package/dist/src/commands/install-ui/StatuslineConfig.d.ts +6 -1
  130. package/dist/src/commands/install-ui/StatuslineConfig.d.ts.map +1 -1
  131. package/dist/src/commands/install-ui/StatuslineConfig.js +27 -5
  132. package/dist/src/commands/install-ui/StatuslineConfig.js.map +1 -1
  133. package/dist/src/commands/spec.d.ts.map +1 -1
  134. package/dist/src/commands/spec.js +7 -2
  135. package/dist/src/commands/spec.js.map +1 -1
  136. package/dist/src/hooks/__tests__/statusline-visual-test.d.ts +7 -0
  137. package/dist/src/hooks/__tests__/statusline-visual-test.d.ts.map +1 -0
  138. package/dist/src/hooks/__tests__/statusline-visual-test.js +236 -0
  139. package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -0
  140. package/dist/src/hooks/constants.d.ts +92 -12
  141. package/dist/src/hooks/constants.d.ts.map +1 -1
  142. package/dist/src/hooks/constants.js +151 -16
  143. package/dist/src/hooks/constants.js.map +1 -1
  144. package/dist/src/hooks/guards/index.d.ts +2 -0
  145. package/dist/src/hooks/guards/index.d.ts.map +1 -1
  146. package/dist/src/hooks/guards/index.js +2 -0
  147. package/dist/src/hooks/guards/index.js.map +1 -1
  148. package/dist/src/hooks/guards/preflight-guard.d.ts +29 -0
  149. package/dist/src/hooks/guards/preflight-guard.d.ts.map +1 -0
  150. package/dist/src/hooks/guards/preflight-guard.js +95 -0
  151. package/dist/src/hooks/guards/preflight-guard.js.map +1 -0
  152. package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
  153. package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
  154. package/dist/src/hooks/guards/spec-validator.js +66 -0
  155. package/dist/src/hooks/guards/spec-validator.js.map +1 -0
  156. package/dist/src/hooks/index.d.ts +1 -0
  157. package/dist/src/hooks/index.d.ts.map +1 -1
  158. package/dist/src/hooks/index.js +1 -0
  159. package/dist/src/hooks/index.js.map +1 -1
  160. package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
  161. package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
  162. package/dist/src/hooks/keyword-spec-injector.js +96 -0
  163. package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
  164. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
  165. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
  166. package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
  167. package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
  168. package/dist/src/hooks/preflight-core.d.ts +37 -0
  169. package/dist/src/hooks/preflight-core.d.ts.map +1 -0
  170. package/dist/src/hooks/preflight-core.js +86 -0
  171. package/dist/src/hooks/preflight-core.js.map +1 -0
  172. package/dist/src/hooks/spec-bridge.d.ts +40 -0
  173. package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
  174. package/dist/src/hooks/spec-bridge.js +97 -0
  175. package/dist/src/hooks/spec-bridge.js.map +1 -0
  176. package/dist/src/hooks/spec-injector.d.ts.map +1 -1
  177. package/dist/src/hooks/spec-injector.js +18 -12
  178. package/dist/src/hooks/spec-injector.js.map +1 -1
  179. package/dist/src/hooks/statusline.d.ts +8 -17
  180. package/dist/src/hooks/statusline.d.ts.map +1 -1
  181. package/dist/src/hooks/statusline.js +269 -112
  182. package/dist/src/hooks/statusline.js.map +1 -1
  183. package/dist/src/i18n/locales/en.d.ts.map +1 -1
  184. package/dist/src/i18n/locales/en.js +5 -0
  185. package/dist/src/i18n/locales/en.js.map +1 -1
  186. package/dist/src/i18n/locales/zh.d.ts.map +1 -1
  187. package/dist/src/i18n/locales/zh.js +5 -0
  188. package/dist/src/i18n/locales/zh.js.map +1 -1
  189. package/dist/src/i18n/types.d.ts +5 -0
  190. package/dist/src/i18n/types.d.ts.map +1 -1
  191. package/dist/src/team/phase-orchestrator.d.ts +52 -0
  192. package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
  193. package/dist/src/team/phase-orchestrator.js +165 -0
  194. package/dist/src/team/phase-orchestrator.js.map +1 -0
  195. package/dist/src/team/phase-types.d.ts +51 -0
  196. package/dist/src/team/phase-types.d.ts.map +1 -0
  197. package/dist/src/team/phase-types.js +41 -0
  198. package/dist/src/team/phase-types.js.map +1 -0
  199. package/dist/src/tools/collab-adapter.d.ts +17 -0
  200. package/dist/src/tools/collab-adapter.d.ts.map +1 -1
  201. package/dist/src/tools/collab-adapter.js +138 -0
  202. package/dist/src/tools/collab-adapter.js.map +1 -1
  203. package/dist/src/tools/index.d.ts.map +1 -1
  204. package/dist/src/tools/index.js +6 -0
  205. package/dist/src/tools/index.js.map +1 -1
  206. package/dist/src/tools/merge-validator.d.ts +24 -0
  207. package/dist/src/tools/merge-validator.d.ts.map +1 -0
  208. package/dist/src/tools/merge-validator.js +220 -0
  209. package/dist/src/tools/merge-validator.js.map +1 -0
  210. package/dist/src/tools/spec-entry-parser.d.ts +56 -0
  211. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
  212. package/dist/src/tools/spec-entry-parser.js +196 -0
  213. package/dist/src/tools/spec-entry-parser.js.map +1 -0
  214. package/dist/src/tools/spec-init.d.ts.map +1 -1
  215. package/dist/src/tools/spec-init.js +66 -92
  216. package/dist/src/tools/spec-init.js.map +1 -1
  217. package/dist/src/tools/spec-keyword-index.d.ts +30 -0
  218. package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
  219. package/dist/src/tools/spec-keyword-index.js +101 -0
  220. package/dist/src/tools/spec-keyword-index.js.map +1 -0
  221. package/dist/src/tools/spec-loader.d.ts +3 -3
  222. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  223. package/dist/src/tools/spec-loader.js +49 -23
  224. package/dist/src/tools/spec-loader.js.map +1 -1
  225. package/dist/src/tools/team-agents.d.ts +27 -0
  226. package/dist/src/tools/team-agents.d.ts.map +1 -0
  227. package/dist/src/tools/team-agents.js +362 -0
  228. package/dist/src/tools/team-agents.js.map +1 -0
  229. package/dist/src/tools/team-mailbox.d.ts +40 -0
  230. package/dist/src/tools/team-mailbox.d.ts.map +1 -0
  231. package/dist/src/tools/team-mailbox.js +384 -0
  232. package/dist/src/tools/team-mailbox.js.map +1 -0
  233. package/dist/src/tools/team-msg.d.ts +17 -8
  234. package/dist/src/tools/team-msg.d.ts.map +1 -1
  235. package/dist/src/tools/team-msg.js +110 -13
  236. package/dist/src/tools/team-msg.js.map +1 -1
  237. package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
  238. package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
  239. package/dist/src/tools/team-tasks-mcp.js +408 -0
  240. package/dist/src/tools/team-tasks-mcp.js.map +1 -0
  241. package/dist/src/types/index.d.ts +5 -0
  242. package/dist/src/types/index.d.ts.map +1 -1
  243. package/package.json +2 -1
  244. package/templates/cli/prompts/workflow-skill-conflict-patterns.txt +3 -3
  245. package/templates/cli/prompts/workflow-skill-lessons-learned.txt +3 -3
  246. package/templates/search-tools.md +1 -1
  247. package/workflows/analyze.md +816 -816
  248. package/workflows/brainstorm.md +471 -471
  249. package/workflows/cli-tools-usage.md +44 -27
  250. package/workflows/codebase-rebuild.md +332 -332
  251. package/workflows/codebase-refresh.md +240 -240
  252. package/workflows/delegate-usage.md +3 -3
  253. package/workflows/execute.md +1 -1
  254. package/workflows/harvest.md +420 -420
  255. package/workflows/integration-test.md +343 -343
  256. package/workflows/issue-analyze.md +6 -2
  257. package/workflows/issue-discover.md +414 -414
  258. package/workflows/issue-execute.md +6 -3
  259. package/workflows/issue-plan.md +5 -2
  260. package/workflows/maestro-coordinate.codex.md +281 -470
  261. package/workflows/maestro-coordinate.md +14 -14
  262. package/workflows/maestro-link-coordinate.md +2 -2
  263. package/workflows/maestro.codex.md +710 -0
  264. package/workflows/maestro.md +10 -11
  265. package/workflows/map.md +111 -111
  266. package/workflows/milestone-complete.md +176 -176
  267. package/workflows/plan.md +1 -1
  268. package/workflows/quick.md +497 -497
  269. package/workflows/refactor.md +300 -300
  270. package/workflows/retrospective.md +1 -1
  271. package/workflows/roadmap.md +335 -335
  272. package/workflows/spec-generate.md +640 -640
  273. package/workflows/specs-add.md +46 -81
  274. package/workflows/specs-load.md +15 -17
  275. package/workflows/specs-setup.md +40 -161
  276. package/.claude/commands/manage-issue-analyze.md +0 -62
  277. package/.claude/commands/manage-issue-execute.md +0 -73
  278. package/.claude/commands/manage-issue-plan.md +0 -62
  279. package/.codex/skills/manage-issue-analyze/SKILL.md +0 -207
  280. package/.codex/skills/manage-issue-execute/SKILL.md +0 -200
  281. package/.codex/skills/manage-issue-plan/SKILL.md +0 -186
@@ -1,343 +1,343 @@
1
- # Integration Test Workflow
2
-
3
- Self-iterating integration test cycle that combines exploration, test design, execution, reflection, and adaptive strategy adjustment. Runs automated tests in a closed loop that self-corrects until convergence.
4
-
5
- 6-phase cycle: Explore -> Design -> Develop -> Test -> Reflect -> Adjust
6
- Adaptive strategy: Conservative -> Aggressive -> Surgical -> Reflective
7
- L0-L3 progressive layers: Static Analysis -> Unit -> Integration -> E2E
8
-
9
- ---
10
-
11
- ### Step 1: Parse Input and Initialize
12
-
13
- **Parse arguments:**
14
-
15
- | Input | Result |
16
- |-------|--------|
17
- | No arguments | Error E001 |
18
- | Phase number | Resolve `.workflow/phases/{NN}-{slug}/` |
19
- | `--max-iter N` | Set MAX_ITER = N (default 5) |
20
- | `--layer L2` | Start from L2 layer |
21
-
22
- Check for existing integration test session:
23
- ```bash
24
- ls .workflow/phases/{NN}-*/.tests/integration/state.json 2>/dev/null
25
- ```
26
-
27
- If session exists: offer resume or restart.
28
-
29
- **Initialize session:**
30
-
31
- Create `.tests/integration/` directory.
32
-
33
- Write initial `state.json`:
34
- ```json
35
- {
36
- "phase": "{phase}",
37
- "started_at": "{ISO timestamp}",
38
- "current_iteration": 0,
39
- "max_iterations": 5,
40
- "strategy": "conservative",
41
- "current_layer": "L0",
42
- "pass_rates": [],
43
- "convergence_threshold": 95,
44
- "status": "running"
45
- }
46
- ```
47
-
48
- Initialize `reflection-log.md`:
49
- ```markdown
50
- # Integration Test Reflection Log
51
- Phase: {phase_name}
52
- Started: {timestamp}
53
-
54
- ## Iterations
55
- ```
56
-
57
- ---
58
-
59
- ### Step 1.3: Load Project Specs
60
-
61
- ```
62
- specs_content = maestro spec load --category test
63
- arch_content = maestro spec load --category planning
64
- ```
65
-
66
- `specs_content` for test conventions; `arch_content` for module boundaries in Step 2-3.
67
-
68
- ---
69
-
70
- ### Step 1.5: Load Previously Generated Tests
71
-
72
- Check for tests already generated by `quality-test-gen`:
73
-
74
- ```
75
- generated_tests = []
76
- IF file exists "${PHASE_DIR}/.tests/test-gen-report.json":
77
- report = read_json("${PHASE_DIR}/.tests/test-gen-report.json")
78
- FOR test_entry IN report.generated:
79
- IF test_entry.layer is "integration" or "e2e":
80
- generated_tests.push(test_entry)
81
- IF generated_tests.length > 0:
82
- display "Found {generated_tests.length} pre-generated integration/e2e tests from test-gen. Will incorporate into test plan."
83
- ```
84
-
85
- These tests are merged into the test plan in Step 3 (Design) — they are executed but not re-generated.
86
-
87
- ---
88
-
89
- ### Step 2: Explore
90
-
91
- **Phase 1: Explore codebase for testable integration points.**
92
-
93
- Discover:
94
- - Module boundaries and cross-module calls
95
- - API endpoints and their handlers
96
- - Database interactions and queries
97
- - External service integrations
98
- - Event flows and message passing
99
-
100
- ```bash
101
- # Find cross-module imports
102
- grep -r "import.*from.*\.\./" src/ --include="*.ts" --include="*.tsx" -l 2>/dev/null | head -20
103
-
104
- # Find API route definitions
105
- grep -r "router\.\|app\.\(get\|post\|put\|delete\)" src/ --include="*.ts" -l 2>/dev/null | head -20
106
-
107
- # Find database calls
108
- grep -r "prisma\.\|query\|findMany\|findOne\|create\|update\|delete" src/ --include="*.ts" -l 2>/dev/null | head -20
109
- ```
110
-
111
- Map integration points: which modules talk to which, through what interfaces.
112
-
113
- ---
114
-
115
- ### Step 3: Design
116
-
117
- **Phase 2: Design integration test plan.**
118
-
119
- **Merge pre-generated tests** (from Step 1.5):
120
- If `generated_tests` is not empty, incorporate them into the test plan directly — mark as "pre-existing" so Step 4 (Develop) skips writing them and Step 5 (Test Execute) includes them in the run.
121
-
122
- Based on exploration (and pre-generated tests if available), design tests per layer:
123
-
124
- **L0 - Static Analysis:**
125
- - Type check command
126
- - Lint command
127
- - Dead code detection
128
-
129
- **L1 - Unit Tests (isolation):**
130
- - Critical functions identified in explore
131
- - Edge cases for core logic
132
-
133
- **L2 - Integration Tests:**
134
- - API endpoint tests (request -> response)
135
- - Cross-module interaction tests
136
- - Database query tests (with fixtures)
137
-
138
- **L3 - E2E Tests:**
139
- - Critical user flows
140
- - Happy path + error path
141
-
142
- Write test plan to `.tests/integration/test-plan.json`:
143
- ```json
144
- {
145
- "layers": {
146
- "L0": { "commands": ["tsc --noEmit", "eslint src/"], "expected_pass": true },
147
- "L1": { "test_files": [...], "test_count": N },
148
- "L2": { "test_files": [...], "test_count": N },
149
- "L3": { "test_files": [...], "test_count": N }
150
- },
151
- "total_tests": M
152
- }
153
- ```
154
-
155
- ---
156
-
157
- ### Step 4: Develop
158
-
159
- **Phase 3: Develop/write test code.**
160
-
161
- For each layer (current and below), write tests following existing patterns.
162
- Use quality-test-gen's RED-GREEN methodology for test writing.
163
-
164
- For integration tests (L2) specifically:
165
- - Set up test fixtures (DB seeds, mock services)
166
- - Write request/response assertions
167
- - Test error handling paths
168
- - Verify cross-module data flow
169
-
170
- ---
171
-
172
- ### Step 5: Test Execute
173
-
174
- **Phase 4: Execute tests for current layer.**
175
-
176
- Run tests progressively (L0 must pass before L1, etc.):
177
-
178
- ```bash
179
- # L0: Static analysis
180
- tsc --noEmit 2>&1 | tail -30
181
- eslint src/ 2>&1 | tail -30
182
-
183
- # L1: Unit tests
184
- {test_command} --testPathPattern="unit|__tests__" 2>&1 | tail -50
185
-
186
- # L2: Integration tests
187
- {test_command} --testPathPattern="integration" 2>&1 | tail -50
188
-
189
- # L3: E2E tests
190
- {test_command} --testPathPattern="e2e" 2>&1 | tail -50
191
- ```
192
-
193
- Record results in `test-results-iter-{N}.json`:
194
- ```json
195
- {
196
- "iteration": N,
197
- "timestamp": "{ISO timestamp}",
198
- "strategy": "{current_strategy}",
199
- "layers": {
200
- "L0": { "status": "pass|fail", "errors": [...] },
201
- "L1": { "total": N, "passed": P, "failed": F, "pass_rate": 95.0 },
202
- "L2": { "total": N, "passed": P, "failed": F, "pass_rate": 87.5 },
203
- "L3": { "total": N, "passed": P, "failed": F, "pass_rate": 100.0 }
204
- },
205
- "overall_pass_rate": 92.3
206
- }
207
- ```
208
-
209
- Calculate overall pass rate.
210
-
211
- ---
212
-
213
- ### Step 6: Reflect
214
-
215
- **Phase 5: Reflect on iteration results.**
216
-
217
- Analyze what happened:
218
- - Which tests failed and why?
219
- - Is pass rate improving, plateauing, or regressing?
220
- - Are failures clustered in one area or spread out?
221
- - Is the current strategy working?
222
-
223
- Append to `reflection-log.md`:
224
- ```markdown
225
- ## Iteration {N}
226
- Strategy: {strategy_name}
227
- Pass rate: {rate}% (previous: {prev_rate}%)
228
- Delta: {+/-}%
229
-
230
- ### What worked
231
- - {observation}
232
-
233
- ### What failed
234
- - {test}: {reason}
235
-
236
- ### Pattern detected
237
- - {pattern, e.g., "all failures in auth module"}
238
-
239
- ### Strategy assessment
240
- - Current strategy: {effective|ineffective|partially_effective}
241
- - Recommendation: {keep|switch_to_X}
242
- ```
243
-
244
- ---
245
-
246
- ### Step 7: Adjust
247
-
248
- **Phase 6: Adjust strategy based on reflection.**
249
-
250
- **Adaptive Strategy Engine:**
251
-
252
- | Condition | Strategy | Behavior |
253
- |-----------|----------|----------|
254
- | Iteration 1-2 | Conservative | Fix obvious failures, don't refactor |
255
- | Pass rate >80% AND failures similar to previous | Aggressive | Batch-fix related failures together |
256
- | New regressions appeared | Surgical | Revert last changes, fix regression only |
257
- | Stuck 3+ iterations (rate not improving) | Reflective | Step back, re-analyze root cause pattern |
258
-
259
- **Strategy transitions:**
260
- ```
261
- Conservative -> (pass rate >80%) -> Aggressive
262
- Aggressive -> (regression) -> Surgical
263
- Surgical -> (regression fixed) -> Aggressive
264
- Any -> (stuck 3+ iters) -> Reflective
265
- Reflective -> (new insight) -> Conservative (restart approach)
266
- ```
267
-
268
- Update state.json with new strategy and iteration count.
269
-
270
- **Convergence check:**
271
- - If overall_pass_rate >= convergence_threshold (95%): CONVERGED -> go to Step 8
272
- - If iteration >= max_iterations: MAX_ITER_REACHED -> go to Step 8
273
- - Otherwise: go back to Step 4 (next iteration)
274
-
275
- ---
276
-
277
- ### Step 8: Complete
278
-
279
- **Complete integration test cycle.**
280
-
281
- Update state.json: status -> "complete" or "max_iter_reached".
282
-
283
- Write `.tests/integration/summary.json`:
284
- ```json
285
- {
286
- "phase": "{phase}",
287
- "completed_at": "{ISO timestamp}",
288
- "iterations": N,
289
- "final_pass_rate": 97.5,
290
- "converged": true,
291
- "strategy_history": ["conservative", "conservative", "aggressive"],
292
- "layers": {
293
- "L0": { "status": "pass" },
294
- "L1": { "pass_rate": 100.0 },
295
- "L2": { "pass_rate": 95.0 },
296
- "L3": { "pass_rate": 100.0 }
297
- },
298
- "bugs_discovered": [...],
299
- "regressions_fixed": [...]
300
- }
301
- ```
302
-
303
- Update index.json with integration test results.
304
-
305
- ---
306
-
307
- ### Step 9: Report
308
-
309
- ```
310
- === INTEGRATION TEST CYCLE ===
311
- Phase: {phase_name}
312
- Iterations: {N}/{max_iter}
313
- Converged: {yes/no} (threshold: {threshold}%)
314
-
315
- Layer Results:
316
- L0 Static: {pass/fail}
317
- L1 Unit: {pass_rate}% ({passed}/{total})
318
- L2 Integration: {pass_rate}% ({passed}/{total})
319
- L3 E2E: {pass_rate}% ({passed}/{total})
320
-
321
- Overall: {final_pass_rate}%
322
- Strategy: {final_strategy} (transitioned {N} times)
323
-
324
- Bugs Found: {bug_count}
325
- Regressions: {regression_count} found, {fixed_count} fixed
326
-
327
- Files:
328
- {target_dir}/.tests/integration/state.json
329
- {target_dir}/.tests/integration/reflection-log.md
330
- {target_dir}/.tests/integration/summary.json
331
-
332
- Next steps:
333
- {suggested_next_command}
334
- ```
335
-
336
- **Next step routing:**
337
-
338
- | Result | Suggestion |
339
- |--------|------------|
340
- | Converged (>=95%) | Skill({ skill: "maestro-verify", args: "{phase}" }) to update validation |
341
- | Max iter, >80% | Skill({ skill: "quality-test", args: "{phase}" }) for manual UAT on remaining gaps |
342
- | Max iter, <80% | Skill({ skill: "quality-debug" }) for deep investigation |
343
- | Bugs discovered | Skill({ skill: "maestro-plan", args: "{phase} --gaps" }) to plan fixes |
1
+ # Integration Test Workflow
2
+
3
+ Self-iterating integration test cycle that combines exploration, test design, execution, reflection, and adaptive strategy adjustment. Runs automated tests in a closed loop that self-corrects until convergence.
4
+
5
+ 6-phase cycle: Explore -> Design -> Develop -> Test -> Reflect -> Adjust
6
+ Adaptive strategy: Conservative -> Aggressive -> Surgical -> Reflective
7
+ L0-L3 progressive layers: Static Analysis -> Unit -> Integration -> E2E
8
+
9
+ ---
10
+
11
+ ### Step 1: Parse Input and Initialize
12
+
13
+ **Parse arguments:**
14
+
15
+ | Input | Result |
16
+ |-------|--------|
17
+ | No arguments | Error E001 |
18
+ | Phase number | Resolve `.workflow/phases/{NN}-{slug}/` |
19
+ | `--max-iter N` | Set MAX_ITER = N (default 5) |
20
+ | `--layer L2` | Start from L2 layer |
21
+
22
+ Check for existing integration test session:
23
+ ```bash
24
+ ls .workflow/phases/{NN}-*/.tests/integration/state.json 2>/dev/null
25
+ ```
26
+
27
+ If session exists: offer resume or restart.
28
+
29
+ **Initialize session:**
30
+
31
+ Create `.tests/integration/` directory.
32
+
33
+ Write initial `state.json`:
34
+ ```json
35
+ {
36
+ "phase": "{phase}",
37
+ "started_at": "{ISO timestamp}",
38
+ "current_iteration": 0,
39
+ "max_iterations": 5,
40
+ "strategy": "conservative",
41
+ "current_layer": "L0",
42
+ "pass_rates": [],
43
+ "convergence_threshold": 95,
44
+ "status": "running"
45
+ }
46
+ ```
47
+
48
+ Initialize `reflection-log.md`:
49
+ ```markdown
50
+ # Integration Test Reflection Log
51
+ Phase: {phase_name}
52
+ Started: {timestamp}
53
+
54
+ ## Iterations
55
+ ```
56
+
57
+ ---
58
+
59
+ ### Step 1.3: Load Project Specs
60
+
61
+ ```
62
+ specs_content = maestro spec load --category test
63
+ arch_content = maestro spec load --category arch
64
+ ```
65
+
66
+ `specs_content` for test conventions; `arch_content` for module boundaries in Step 2-3.
67
+
68
+ ---
69
+
70
+ ### Step 1.5: Load Previously Generated Tests
71
+
72
+ Check for tests already generated by `quality-test-gen`:
73
+
74
+ ```
75
+ generated_tests = []
76
+ IF file exists "${PHASE_DIR}/.tests/test-gen-report.json":
77
+ report = read_json("${PHASE_DIR}/.tests/test-gen-report.json")
78
+ FOR test_entry IN report.generated:
79
+ IF test_entry.layer is "integration" or "e2e":
80
+ generated_tests.push(test_entry)
81
+ IF generated_tests.length > 0:
82
+ display "Found {generated_tests.length} pre-generated integration/e2e tests from test-gen. Will incorporate into test plan."
83
+ ```
84
+
85
+ These tests are merged into the test plan in Step 3 (Design) — they are executed but not re-generated.
86
+
87
+ ---
88
+
89
+ ### Step 2: Explore
90
+
91
+ **Phase 1: Explore codebase for testable integration points.**
92
+
93
+ Discover:
94
+ - Module boundaries and cross-module calls
95
+ - API endpoints and their handlers
96
+ - Database interactions and queries
97
+ - External service integrations
98
+ - Event flows and message passing
99
+
100
+ ```bash
101
+ # Find cross-module imports
102
+ grep -r "import.*from.*\.\./" src/ --include="*.ts" --include="*.tsx" -l 2>/dev/null | head -20
103
+
104
+ # Find API route definitions
105
+ grep -r "router\.\|app\.\(get\|post\|put\|delete\)" src/ --include="*.ts" -l 2>/dev/null | head -20
106
+
107
+ # Find database calls
108
+ grep -r "prisma\.\|query\|findMany\|findOne\|create\|update\|delete" src/ --include="*.ts" -l 2>/dev/null | head -20
109
+ ```
110
+
111
+ Map integration points: which modules talk to which, through what interfaces.
112
+
113
+ ---
114
+
115
+ ### Step 3: Design
116
+
117
+ **Phase 2: Design integration test plan.**
118
+
119
+ **Merge pre-generated tests** (from Step 1.5):
120
+ If `generated_tests` is not empty, incorporate them into the test plan directly — mark as "pre-existing" so Step 4 (Develop) skips writing them and Step 5 (Test Execute) includes them in the run.
121
+
122
+ Based on exploration (and pre-generated tests if available), design tests per layer:
123
+
124
+ **L0 - Static Analysis:**
125
+ - Type check command
126
+ - Lint command
127
+ - Dead code detection
128
+
129
+ **L1 - Unit Tests (isolation):**
130
+ - Critical functions identified in explore
131
+ - Edge cases for core logic
132
+
133
+ **L2 - Integration Tests:**
134
+ - API endpoint tests (request -> response)
135
+ - Cross-module interaction tests
136
+ - Database query tests (with fixtures)
137
+
138
+ **L3 - E2E Tests:**
139
+ - Critical user flows
140
+ - Happy path + error path
141
+
142
+ Write test plan to `.tests/integration/test-plan.json`:
143
+ ```json
144
+ {
145
+ "layers": {
146
+ "L0": { "commands": ["tsc --noEmit", "eslint src/"], "expected_pass": true },
147
+ "L1": { "test_files": [...], "test_count": N },
148
+ "L2": { "test_files": [...], "test_count": N },
149
+ "L3": { "test_files": [...], "test_count": N }
150
+ },
151
+ "total_tests": M
152
+ }
153
+ ```
154
+
155
+ ---
156
+
157
+ ### Step 4: Develop
158
+
159
+ **Phase 3: Develop/write test code.**
160
+
161
+ For each layer (current and below), write tests following existing patterns.
162
+ Use quality-test-gen's RED-GREEN methodology for test writing.
163
+
164
+ For integration tests (L2) specifically:
165
+ - Set up test fixtures (DB seeds, mock services)
166
+ - Write request/response assertions
167
+ - Test error handling paths
168
+ - Verify cross-module data flow
169
+
170
+ ---
171
+
172
+ ### Step 5: Test Execute
173
+
174
+ **Phase 4: Execute tests for current layer.**
175
+
176
+ Run tests progressively (L0 must pass before L1, etc.):
177
+
178
+ ```bash
179
+ # L0: Static analysis
180
+ tsc --noEmit 2>&1 | tail -30
181
+ eslint src/ 2>&1 | tail -30
182
+
183
+ # L1: Unit tests
184
+ {test_command} --testPathPattern="unit|__tests__" 2>&1 | tail -50
185
+
186
+ # L2: Integration tests
187
+ {test_command} --testPathPattern="integration" 2>&1 | tail -50
188
+
189
+ # L3: E2E tests
190
+ {test_command} --testPathPattern="e2e" 2>&1 | tail -50
191
+ ```
192
+
193
+ Record results in `test-results-iter-{N}.json`:
194
+ ```json
195
+ {
196
+ "iteration": N,
197
+ "timestamp": "{ISO timestamp}",
198
+ "strategy": "{current_strategy}",
199
+ "layers": {
200
+ "L0": { "status": "pass|fail", "errors": [...] },
201
+ "L1": { "total": N, "passed": P, "failed": F, "pass_rate": 95.0 },
202
+ "L2": { "total": N, "passed": P, "failed": F, "pass_rate": 87.5 },
203
+ "L3": { "total": N, "passed": P, "failed": F, "pass_rate": 100.0 }
204
+ },
205
+ "overall_pass_rate": 92.3
206
+ }
207
+ ```
208
+
209
+ Calculate overall pass rate.
210
+
211
+ ---
212
+
213
+ ### Step 6: Reflect
214
+
215
+ **Phase 5: Reflect on iteration results.**
216
+
217
+ Analyze what happened:
218
+ - Which tests failed and why?
219
+ - Is pass rate improving, plateauing, or regressing?
220
+ - Are failures clustered in one area or spread out?
221
+ - Is the current strategy working?
222
+
223
+ Append to `reflection-log.md`:
224
+ ```markdown
225
+ ## Iteration {N}
226
+ Strategy: {strategy_name}
227
+ Pass rate: {rate}% (previous: {prev_rate}%)
228
+ Delta: {+/-}%
229
+
230
+ ### What worked
231
+ - {observation}
232
+
233
+ ### What failed
234
+ - {test}: {reason}
235
+
236
+ ### Pattern detected
237
+ - {pattern, e.g., "all failures in auth module"}
238
+
239
+ ### Strategy assessment
240
+ - Current strategy: {effective|ineffective|partially_effective}
241
+ - Recommendation: {keep|switch_to_X}
242
+ ```
243
+
244
+ ---
245
+
246
+ ### Step 7: Adjust
247
+
248
+ **Phase 6: Adjust strategy based on reflection.**
249
+
250
+ **Adaptive Strategy Engine:**
251
+
252
+ | Condition | Strategy | Behavior |
253
+ |-----------|----------|----------|
254
+ | Iteration 1-2 | Conservative | Fix obvious failures, don't refactor |
255
+ | Pass rate >80% AND failures similar to previous | Aggressive | Batch-fix related failures together |
256
+ | New regressions appeared | Surgical | Revert last changes, fix regression only |
257
+ | Stuck 3+ iterations (rate not improving) | Reflective | Step back, re-analyze root cause pattern |
258
+
259
+ **Strategy transitions:**
260
+ ```
261
+ Conservative -> (pass rate >80%) -> Aggressive
262
+ Aggressive -> (regression) -> Surgical
263
+ Surgical -> (regression fixed) -> Aggressive
264
+ Any -> (stuck 3+ iters) -> Reflective
265
+ Reflective -> (new insight) -> Conservative (restart approach)
266
+ ```
267
+
268
+ Update state.json with new strategy and iteration count.
269
+
270
+ **Convergence check:**
271
+ - If overall_pass_rate >= convergence_threshold (95%): CONVERGED -> go to Step 8
272
+ - If iteration >= max_iterations: MAX_ITER_REACHED -> go to Step 8
273
+ - Otherwise: go back to Step 4 (next iteration)
274
+
275
+ ---
276
+
277
+ ### Step 8: Complete
278
+
279
+ **Complete integration test cycle.**
280
+
281
+ Update state.json: status -> "complete" or "max_iter_reached".
282
+
283
+ Write `.tests/integration/summary.json`:
284
+ ```json
285
+ {
286
+ "phase": "{phase}",
287
+ "completed_at": "{ISO timestamp}",
288
+ "iterations": N,
289
+ "final_pass_rate": 97.5,
290
+ "converged": true,
291
+ "strategy_history": ["conservative", "conservative", "aggressive"],
292
+ "layers": {
293
+ "L0": { "status": "pass" },
294
+ "L1": { "pass_rate": 100.0 },
295
+ "L2": { "pass_rate": 95.0 },
296
+ "L3": { "pass_rate": 100.0 }
297
+ },
298
+ "bugs_discovered": [...],
299
+ "regressions_fixed": [...]
300
+ }
301
+ ```
302
+
303
+ Update index.json with integration test results.
304
+
305
+ ---
306
+
307
+ ### Step 9: Report
308
+
309
+ ```
310
+ === INTEGRATION TEST CYCLE ===
311
+ Phase: {phase_name}
312
+ Iterations: {N}/{max_iter}
313
+ Converged: {yes/no} (threshold: {threshold}%)
314
+
315
+ Layer Results:
316
+ L0 Static: {pass/fail}
317
+ L1 Unit: {pass_rate}% ({passed}/{total})
318
+ L2 Integration: {pass_rate}% ({passed}/{total})
319
+ L3 E2E: {pass_rate}% ({passed}/{total})
320
+
321
+ Overall: {final_pass_rate}%
322
+ Strategy: {final_strategy} (transitioned {N} times)
323
+
324
+ Bugs Found: {bug_count}
325
+ Regressions: {regression_count} found, {fixed_count} fixed
326
+
327
+ Files:
328
+ {target_dir}/.tests/integration/state.json
329
+ {target_dir}/.tests/integration/reflection-log.md
330
+ {target_dir}/.tests/integration/summary.json
331
+
332
+ Next steps:
333
+ {suggested_next_command}
334
+ ```
335
+
336
+ **Next step routing:**
337
+
338
+ | Result | Suggestion |
339
+ |--------|------------|
340
+ | Converged (>=95%) | Skill({ skill: "maestro-verify", args: "{phase}" }) to update validation |
341
+ | Max iter, >80% | Skill({ skill: "quality-test", args: "{phase}" }) for manual UAT on remaining gaps |
342
+ | Max iter, <80% | Skill({ skill: "quality-debug" }) for deep investigation |
343
+ | Bugs discovered | Skill({ skill: "maestro-plan", args: "{phase} --gaps" }) to plan fixes |