ma-agents 2.19.2 → 2.20.1

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 (571) hide show
  1. package/agents.code-workspace +11 -0
  2. package/bin/cli.js +250 -151
  3. package/docs/architecture.md +284 -0
  4. package/docs/development-guide.md +122 -0
  5. package/docs/index.md +48 -0
  6. package/docs/project-overview.md +56 -0
  7. package/docs/project-scan-report.json +50 -0
  8. package/docs/source-tree-analysis.md +84 -0
  9. package/docs/validation/bundled-installation-validation.md +52 -0
  10. package/lib/bmad-cache/bmb/.markdownlint-cli2.yaml +35 -0
  11. package/lib/bmad-cache/bmb/.nvmrc +1 -0
  12. package/lib/bmad-cache/bmb/.prettierignore +9 -0
  13. package/lib/bmad-cache/bmb/CNAME +1 -0
  14. package/lib/bmad-cache/bmb/LICENSE +30 -0
  15. package/lib/bmad-cache/bmb/README.md +63 -0
  16. package/lib/bmad-cache/bmb/eslint.config.mjs +141 -0
  17. package/lib/bmad-cache/bmb/package-lock.json +15283 -0
  18. package/lib/bmad-cache/bmb/package.json +96 -0
  19. package/lib/bmad-cache/bmb/prettier.config.mjs +32 -0
  20. package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/bmad-manifest.json +62 -0
  21. package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/recall_metrics.py +229 -0
  22. package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/seed_tracker.py +156 -0
  23. package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/symbol_stats.py +162 -0
  24. package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/tests/test_recall_metrics.py +115 -0
  25. package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/tests/test_seed_tracker.py +140 -0
  26. package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/tests/test_symbol_stats.py +113 -0
  27. package/lib/bmad-cache/bmb/samples/bmad-excalidraw/bmad-manifest.json +18 -0
  28. package/lib/bmad-cache/bmb/samples/bmad-excalidraw/scripts/generate_excalidraw.py +605 -0
  29. package/lib/bmad-cache/bmb/samples/bmad-excalidraw/scripts/tests/test_generate_excalidraw.py +360 -0
  30. package/lib/bmad-cache/bmb/samples/bmad-excalidraw/scripts/tests/test_validate_excalidraw.py +246 -0
  31. package/lib/bmad-cache/bmb/samples/bmad-excalidraw/scripts/validate_excalidraw.py +264 -0
  32. package/lib/bmad-cache/bmb/src/module-help.csv +7 -0
  33. package/lib/bmad-cache/bmb/src/module.yaml +20 -0
  34. package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/bmad-manifest.json +24 -0
  35. package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/bmad-skill-manifest.yaml +1 -0
  36. package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/bmad-manifest-schema.json +103 -0
  37. package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/generate-html-report.py +1002 -0
  38. package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/manifest.py +420 -0
  39. package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/prepass-execution-deps.py +368 -0
  40. package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/prepass-prompt-metrics.py +476 -0
  41. package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/prepass-structure-capabilities.py +636 -0
  42. package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/scan-path-standards.py +253 -0
  43. package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/scan-scripts.py +745 -0
  44. package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/bmad-manifest.json +23 -0
  45. package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/bmad-skill-manifest.yaml +1 -0
  46. package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/bmad-manifest-schema.json +103 -0
  47. package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/generate-html-report.py +1002 -0
  48. package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/manifest.py +420 -0
  49. package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/prepass-execution-deps.py +313 -0
  50. package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/prepass-prompt-metrics.py +285 -0
  51. package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/prepass-workflow-integrity.py +485 -0
  52. package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/scan-path-standards.py +213 -0
  53. package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/scan-scripts.py +745 -0
  54. package/lib/bmad-cache/bmb/tools/build-docs.mjs +448 -0
  55. package/lib/bmad-cache/bmb/tools/validate-file-refs.mjs +657 -0
  56. package/lib/bmad-cache/bmb/website/astro.config.mjs +134 -0
  57. package/lib/bmad-cache/bmb/website/public/favicon.ico +0 -0
  58. package/lib/bmad-cache/bmb/website/public/img/bmad-dark.png +0 -0
  59. package/lib/bmad-cache/bmb/website/public/img/bmad-light.png +0 -0
  60. package/lib/bmad-cache/bmb/website/src/components/Banner.astro +56 -0
  61. package/lib/bmad-cache/bmb/website/src/components/Header.astro +94 -0
  62. package/lib/bmad-cache/bmb/website/src/components/MobileMenuFooter.astro +33 -0
  63. package/lib/bmad-cache/bmb/website/src/content/config.ts +6 -0
  64. package/lib/bmad-cache/bmb/website/src/content/docs +1 -0
  65. package/lib/bmad-cache/bmb/website/src/lib/site-url.mjs +25 -0
  66. package/lib/bmad-cache/bmb/website/src/rehype-base-paths.js +88 -0
  67. package/lib/bmad-cache/bmb/website/src/rehype-markdown-links.js +117 -0
  68. package/lib/bmad-cache/bmb/website/src/styles/custom.css +484 -0
  69. package/lib/bmad-cache/cache-manifest.json +30 -0
  70. package/lib/bmad-cache/cis/.markdownlint-cli2.yaml +35 -0
  71. package/lib/bmad-cache/cis/.nvmrc +1 -0
  72. package/lib/bmad-cache/cis/.prettierignore +9 -0
  73. package/lib/bmad-cache/cis/CNAME +1 -0
  74. package/lib/bmad-cache/cis/LICENSE +26 -0
  75. package/lib/bmad-cache/cis/README.md +105 -0
  76. package/lib/bmad-cache/cis/eslint.config.mjs +141 -0
  77. package/lib/bmad-cache/cis/package.json +92 -0
  78. package/lib/bmad-cache/cis/prettier.config.mjs +32 -0
  79. package/lib/bmad-cache/cis/src/agents/brainstorming-coach.agent.yaml +21 -0
  80. package/lib/bmad-cache/cis/src/agents/creative-problem-solver.agent.yaml +21 -0
  81. package/lib/bmad-cache/cis/src/agents/design-thinking-coach.agent.yaml +21 -0
  82. package/lib/bmad-cache/cis/src/agents/innovation-strategist.agent.yaml +21 -0
  83. package/lib/bmad-cache/cis/src/agents/presentation-master.agent.yaml +53 -0
  84. package/lib/bmad-cache/cis/src/agents/storyteller/storyteller.agent.yaml +25 -0
  85. package/lib/bmad-cache/cis/src/module-help.csv +6 -0
  86. package/lib/bmad-cache/cis/src/module.yaml +27 -0
  87. package/lib/bmad-cache/cis/src/teams/creative-squad.yaml +7 -0
  88. package/lib/bmad-cache/cis/src/teams/default-party.csv +12 -0
  89. package/lib/bmad-cache/cis/src/workflows/README.md +175 -0
  90. package/lib/bmad-cache/cis/src/workflows/bmad-cis-design-thinking/bmad-skill-manifest.yaml +1 -0
  91. package/lib/bmad-cache/cis/src/workflows/bmad-cis-design-thinking/design-methods.csv +31 -0
  92. package/lib/bmad-cache/cis/src/workflows/bmad-cis-innovation-strategy/bmad-skill-manifest.yaml +1 -0
  93. package/lib/bmad-cache/cis/src/workflows/bmad-cis-innovation-strategy/innovation-frameworks.csv +31 -0
  94. package/lib/bmad-cache/cis/src/workflows/bmad-cis-problem-solving/bmad-skill-manifest.yaml +1 -0
  95. package/lib/bmad-cache/cis/src/workflows/bmad-cis-problem-solving/solving-methods.csv +31 -0
  96. package/lib/bmad-cache/cis/src/workflows/bmad-cis-storytelling/bmad-skill-manifest.yaml +1 -0
  97. package/lib/bmad-cache/cis/src/workflows/bmad-cis-storytelling/story-types.csv +26 -0
  98. package/lib/bmad-cache/cis/tools/build-docs.mjs +448 -0
  99. package/lib/bmad-cache/cis/website/astro.config.mjs +134 -0
  100. package/lib/bmad-cache/cis/website/public/favicon.ico +0 -0
  101. package/lib/bmad-cache/cis/website/public/img/bmad-dark.png +0 -0
  102. package/lib/bmad-cache/cis/website/public/img/bmad-light.png +0 -0
  103. package/lib/bmad-cache/cis/website/src/components/Banner.astro +56 -0
  104. package/lib/bmad-cache/cis/website/src/components/Header.astro +94 -0
  105. package/lib/bmad-cache/cis/website/src/components/MobileMenuFooter.astro +33 -0
  106. package/lib/bmad-cache/cis/website/src/content/config.ts +6 -0
  107. package/lib/bmad-cache/cis/website/src/content/docs +1 -0
  108. package/lib/bmad-cache/cis/website/src/lib/site-url.mjs +25 -0
  109. package/lib/bmad-cache/cis/website/src/rehype-base-paths.js +88 -0
  110. package/lib/bmad-cache/cis/website/src/rehype-markdown-links.js +117 -0
  111. package/lib/bmad-cache/cis/website/src/styles/custom.css +484 -0
  112. package/lib/bmad-cache/gds/.markdownlint-cli2.yaml +35 -0
  113. package/lib/bmad-cache/gds/.nvmrc +1 -0
  114. package/lib/bmad-cache/gds/.prettierignore +9 -0
  115. package/lib/bmad-cache/gds/CNAME +1 -0
  116. package/lib/bmad-cache/gds/LICENSE +26 -0
  117. package/lib/bmad-cache/gds/README.md +121 -0
  118. package/lib/bmad-cache/gds/eslint.config.mjs +141 -0
  119. package/lib/bmad-cache/gds/package.json +92 -0
  120. package/lib/bmad-cache/gds/prettier.config.mjs +32 -0
  121. package/lib/bmad-cache/gds/src/agents/game-architect.agent.yaml +44 -0
  122. package/lib/bmad-cache/gds/src/agents/game-designer.agent.yaml +45 -0
  123. package/lib/bmad-cache/gds/src/agents/game-dev.agent.yaml +49 -0
  124. package/lib/bmad-cache/gds/src/agents/game-qa.agent.yaml +63 -0
  125. package/lib/bmad-cache/gds/src/agents/game-scrum-master.agent.yaml +52 -0
  126. package/lib/bmad-cache/gds/src/agents/game-solo-dev.agent.yaml +53 -0
  127. package/lib/bmad-cache/gds/src/agents/tech-writer/tech-writer.agent.yaml +45 -0
  128. package/lib/bmad-cache/gds/src/gametest/qa-index.csv +18 -0
  129. package/lib/bmad-cache/gds/src/module-help.csv +35 -0
  130. package/lib/bmad-cache/gds/src/module.yaml +71 -0
  131. package/lib/bmad-cache/gds/src/teams/default-party.csv +12 -0
  132. package/lib/bmad-cache/gds/src/teams/team-gamedev.yaml +29 -0
  133. package/lib/bmad-cache/gds/src/workflows/1-preproduction/brainstorm-game/bmad-skill-manifest.yaml +3 -0
  134. package/lib/bmad-cache/gds/src/workflows/1-preproduction/brainstorm-game/game-brain-methods.csv +26 -0
  135. package/lib/bmad-cache/gds/src/workflows/1-preproduction/game-brief/bmad-skill-manifest.yaml +3 -0
  136. package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/bmad-skill-manifest.yaml +9 -0
  137. package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/gds-domain-research/bmad-skill-manifest.yaml +1 -0
  138. package/lib/bmad-cache/gds/src/workflows/2-design/create-prd/bmad-skill-manifest.yaml +14 -0
  139. package/lib/bmad-cache/gds/src/workflows/2-design/create-prd/data/domain-complexity.csv +15 -0
  140. package/lib/bmad-cache/gds/src/workflows/2-design/create-prd/data/project-types.csv +11 -0
  141. package/lib/bmad-cache/gds/src/workflows/2-design/gdd/bmad-skill-manifest.yaml +3 -0
  142. package/lib/bmad-cache/gds/src/workflows/2-design/gdd/game-types.csv +25 -0
  143. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-ux-design/bmad-skill-manifest.yaml +1 -0
  144. package/lib/bmad-cache/gds/src/workflows/2-design/narrative/bmad-skill-manifest.yaml +3 -0
  145. package/lib/bmad-cache/gds/src/workflows/3-technical/check-implementation-readiness/bmad-skill-manifest.yaml +3 -0
  146. package/lib/bmad-cache/gds/src/workflows/3-technical/create-epics-and-stories/bmad-skill-manifest.yaml +3 -0
  147. package/lib/bmad-cache/gds/src/workflows/3-technical/game-architecture/architecture-patterns.yaml +507 -0
  148. package/lib/bmad-cache/gds/src/workflows/3-technical/game-architecture/bmad-skill-manifest.yaml +3 -0
  149. package/lib/bmad-cache/gds/src/workflows/3-technical/game-architecture/decision-catalog.yaml +340 -0
  150. package/lib/bmad-cache/gds/src/workflows/3-technical/game-architecture/engine-mcps.yaml +270 -0
  151. package/lib/bmad-cache/gds/src/workflows/3-technical/game-architecture/pattern-categories.csv +13 -0
  152. package/lib/bmad-cache/gds/src/workflows/3-technical/generate-project-context/bmad-skill-manifest.yaml +3 -0
  153. package/lib/bmad-cache/gds/src/workflows/4-production/code-review/bmad-skill-manifest.yaml +3 -0
  154. package/lib/bmad-cache/gds/src/workflows/4-production/correct-course/bmad-skill-manifest.yaml +3 -0
  155. package/lib/bmad-cache/gds/src/workflows/4-production/gds-create-story/bmad-skill-manifest.yaml +1 -0
  156. package/lib/bmad-cache/gds/src/workflows/4-production/gds-dev-story/bmad-skill-manifest.yaml +1 -0
  157. package/lib/bmad-cache/gds/src/workflows/4-production/retrospective/bmad-skill-manifest.yaml +3 -0
  158. package/lib/bmad-cache/gds/src/workflows/4-production/sprint-planning/bmad-skill-manifest.yaml +3 -0
  159. package/lib/bmad-cache/gds/src/workflows/4-production/sprint-planning/sprint-status-template.yaml +55 -0
  160. package/lib/bmad-cache/gds/src/workflows/4-production/sprint-status/bmad-skill-manifest.yaml +3 -0
  161. package/lib/bmad-cache/gds/src/workflows/document-project/bmad-skill-manifest.yaml +3 -0
  162. package/lib/bmad-cache/gds/src/workflows/document-project/documentation-requirements.csv +12 -0
  163. package/lib/bmad-cache/gds/src/workflows/document-project/templates/project-scan-report-schema.json +160 -0
  164. package/lib/bmad-cache/gds/src/workflows/gametest/automate/bmad-skill-manifest.yaml +3 -0
  165. package/lib/bmad-cache/gds/src/workflows/gametest/e2e-scaffold/bmad-skill-manifest.yaml +3 -0
  166. package/lib/bmad-cache/gds/src/workflows/gametest/performance/bmad-skill-manifest.yaml +3 -0
  167. package/lib/bmad-cache/gds/src/workflows/gametest/playtest-plan/bmad-skill-manifest.yaml +3 -0
  168. package/lib/bmad-cache/gds/src/workflows/gametest/test-design/bmad-skill-manifest.yaml +3 -0
  169. package/lib/bmad-cache/gds/src/workflows/gametest/test-framework/bmad-skill-manifest.yaml +3 -0
  170. package/lib/bmad-cache/gds/src/workflows/gametest/test-review/bmad-skill-manifest.yaml +3 -0
  171. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev/bmad-skill-manifest.yaml +4 -0
  172. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev-new-preview/bmad-skill-manifest.yaml +4 -0
  173. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/quick-spec/bmad-skill-manifest.yaml +3 -0
  174. package/lib/bmad-cache/gds/tools/build-docs.mjs +450 -0
  175. package/lib/bmad-cache/gds/website/astro.config.mjs +134 -0
  176. package/lib/bmad-cache/gds/website/public/favicon.ico +0 -0
  177. package/lib/bmad-cache/gds/website/public/img/bmad-dark.png +0 -0
  178. package/lib/bmad-cache/gds/website/public/img/bmad-light.png +0 -0
  179. package/lib/bmad-cache/gds/website/src/components/Banner.astro +56 -0
  180. package/lib/bmad-cache/gds/website/src/components/Header.astro +94 -0
  181. package/lib/bmad-cache/gds/website/src/components/MobileMenuFooter.astro +33 -0
  182. package/lib/bmad-cache/gds/website/src/content/config.ts +6 -0
  183. package/lib/bmad-cache/gds/website/src/content/docs +1 -0
  184. package/lib/bmad-cache/gds/website/src/lib/site-url.mjs +25 -0
  185. package/lib/bmad-cache/gds/website/src/rehype-base-paths.js +88 -0
  186. package/lib/bmad-cache/gds/website/src/rehype-markdown-links.js +117 -0
  187. package/lib/bmad-cache/gds/website/src/styles/custom.css +484 -0
  188. package/lib/bmad-cache/tea/.coderabbit.yaml +40 -0
  189. package/lib/bmad-cache/tea/.husky/pre-commit +20 -0
  190. package/lib/bmad-cache/tea/.markdownlint-cli2.yaml +36 -0
  191. package/lib/bmad-cache/tea/.nvmrc +1 -0
  192. package/lib/bmad-cache/tea/.prettierignore +9 -0
  193. package/lib/bmad-cache/tea/CHANGELOG.md +253 -0
  194. package/lib/bmad-cache/tea/CONTRIBUTING.md +268 -0
  195. package/lib/bmad-cache/tea/LICENSE +26 -0
  196. package/lib/bmad-cache/tea/README.md +371 -0
  197. package/lib/bmad-cache/tea/SECURITY.md +85 -0
  198. package/lib/bmad-cache/tea/docs/404.md +20 -0
  199. package/lib/bmad-cache/tea/docs/MIGRATION.md +488 -0
  200. package/lib/bmad-cache/tea/docs/explanation/engagement-models.md +767 -0
  201. package/lib/bmad-cache/tea/docs/explanation/fixture-architecture.md +484 -0
  202. package/lib/bmad-cache/tea/docs/explanation/knowledge-base-system.md +601 -0
  203. package/lib/bmad-cache/tea/docs/explanation/network-first-patterns.md +884 -0
  204. package/lib/bmad-cache/tea/docs/explanation/risk-based-testing.md +628 -0
  205. package/lib/bmad-cache/tea/docs/explanation/step-file-architecture.md +599 -0
  206. package/lib/bmad-cache/tea/docs/explanation/subagent-architecture.md +189 -0
  207. package/lib/bmad-cache/tea/docs/explanation/tea-overview.md +474 -0
  208. package/lib/bmad-cache/tea/docs/explanation/test-quality-standards.md +965 -0
  209. package/lib/bmad-cache/tea/docs/explanation/testing-as-engineering.md +115 -0
  210. package/lib/bmad-cache/tea/docs/glossary/index.md +160 -0
  211. package/lib/bmad-cache/tea/docs/how-to/brownfield/use-tea-for-enterprise.md +571 -0
  212. package/lib/bmad-cache/tea/docs/how-to/brownfield/use-tea-with-existing-tests.md +631 -0
  213. package/lib/bmad-cache/tea/docs/how-to/customization/configure-browser-automation.md +243 -0
  214. package/lib/bmad-cache/tea/docs/how-to/customization/integrate-playwright-utils.md +846 -0
  215. package/lib/bmad-cache/tea/docs/how-to/workflows/run-atdd.md +464 -0
  216. package/lib/bmad-cache/tea/docs/how-to/workflows/run-automate.md +693 -0
  217. package/lib/bmad-cache/tea/docs/how-to/workflows/run-nfr-assess.md +731 -0
  218. package/lib/bmad-cache/tea/docs/how-to/workflows/run-test-design.md +144 -0
  219. package/lib/bmad-cache/tea/docs/how-to/workflows/run-test-review.md +634 -0
  220. package/lib/bmad-cache/tea/docs/how-to/workflows/run-trace.md +959 -0
  221. package/lib/bmad-cache/tea/docs/how-to/workflows/setup-ci.md +763 -0
  222. package/lib/bmad-cache/tea/docs/how-to/workflows/setup-test-framework.md +122 -0
  223. package/lib/bmad-cache/tea/docs/how-to/workflows/teach-me-testing.md +302 -0
  224. package/lib/bmad-cache/tea/docs/index.md +74 -0
  225. package/lib/bmad-cache/tea/docs/reference/commands.md +353 -0
  226. package/lib/bmad-cache/tea/docs/reference/configuration.md +1122 -0
  227. package/lib/bmad-cache/tea/docs/reference/knowledge-base.md +404 -0
  228. package/lib/bmad-cache/tea/docs/reference/troubleshooting.md +788 -0
  229. package/lib/bmad-cache/tea/docs/tutorials/learn-testing-tea-academy.md +266 -0
  230. package/lib/bmad-cache/tea/docs/tutorials/tea-lite-quickstart.md +465 -0
  231. package/lib/bmad-cache/tea/eslint.config.mjs +141 -0
  232. package/lib/bmad-cache/tea/package-lock.json +16046 -0
  233. package/lib/bmad-cache/tea/package.json +118 -0
  234. package/lib/bmad-cache/tea/prettier.config.mjs +32 -0
  235. package/lib/bmad-cache/tea/src/agents/tea.agent.yaml +67 -0
  236. package/lib/bmad-cache/tea/src/module-help.csv +10 -0
  237. package/lib/bmad-cache/tea/src/module.yaml +299 -0
  238. package/lib/bmad-cache/tea/src/teams/default-party.csv +2 -0
  239. package/lib/bmad-cache/tea/src/testarch/knowledge/adr-quality-readiness-checklist.md +377 -0
  240. package/lib/bmad-cache/tea/src/testarch/knowledge/api-request.md +563 -0
  241. package/lib/bmad-cache/tea/src/testarch/knowledge/api-testing-patterns.md +915 -0
  242. package/lib/bmad-cache/tea/src/testarch/knowledge/auth-session.md +548 -0
  243. package/lib/bmad-cache/tea/src/testarch/knowledge/burn-in.md +273 -0
  244. package/lib/bmad-cache/tea/src/testarch/knowledge/ci-burn-in.md +717 -0
  245. package/lib/bmad-cache/tea/src/testarch/knowledge/component-tdd.md +486 -0
  246. package/lib/bmad-cache/tea/src/testarch/knowledge/contract-testing.md +1050 -0
  247. package/lib/bmad-cache/tea/src/testarch/knowledge/data-factories.md +500 -0
  248. package/lib/bmad-cache/tea/src/testarch/knowledge/email-auth.md +721 -0
  249. package/lib/bmad-cache/tea/src/testarch/knowledge/error-handling.md +725 -0
  250. package/lib/bmad-cache/tea/src/testarch/knowledge/feature-flags.md +750 -0
  251. package/lib/bmad-cache/tea/src/testarch/knowledge/file-utils.md +456 -0
  252. package/lib/bmad-cache/tea/src/testarch/knowledge/fixture-architecture.md +401 -0
  253. package/lib/bmad-cache/tea/src/testarch/knowledge/fixtures-composition.md +382 -0
  254. package/lib/bmad-cache/tea/src/testarch/knowledge/intercept-network-call.md +426 -0
  255. package/lib/bmad-cache/tea/src/testarch/knowledge/log.md +426 -0
  256. package/lib/bmad-cache/tea/src/testarch/knowledge/network-error-monitor.md +401 -0
  257. package/lib/bmad-cache/tea/src/testarch/knowledge/network-first.md +486 -0
  258. package/lib/bmad-cache/tea/src/testarch/knowledge/network-recorder.md +527 -0
  259. package/lib/bmad-cache/tea/src/testarch/knowledge/nfr-criteria.md +670 -0
  260. package/lib/bmad-cache/tea/src/testarch/knowledge/overview.md +286 -0
  261. package/lib/bmad-cache/tea/src/testarch/knowledge/pact-consumer-di.md +310 -0
  262. package/lib/bmad-cache/tea/src/testarch/knowledge/pact-consumer-framework-setup.md +635 -0
  263. package/lib/bmad-cache/tea/src/testarch/knowledge/pact-mcp.md +204 -0
  264. package/lib/bmad-cache/tea/src/testarch/knowledge/pactjs-utils-consumer-helpers.md +270 -0
  265. package/lib/bmad-cache/tea/src/testarch/knowledge/pactjs-utils-overview.md +216 -0
  266. package/lib/bmad-cache/tea/src/testarch/knowledge/pactjs-utils-provider-verifier.md +315 -0
  267. package/lib/bmad-cache/tea/src/testarch/knowledge/pactjs-utils-request-filter.md +224 -0
  268. package/lib/bmad-cache/tea/src/testarch/knowledge/playwright-cli.md +165 -0
  269. package/lib/bmad-cache/tea/src/testarch/knowledge/playwright-config.md +730 -0
  270. package/lib/bmad-cache/tea/src/testarch/knowledge/probability-impact.md +601 -0
  271. package/lib/bmad-cache/tea/src/testarch/knowledge/recurse.md +421 -0
  272. package/lib/bmad-cache/tea/src/testarch/knowledge/risk-governance.md +615 -0
  273. package/lib/bmad-cache/tea/src/testarch/knowledge/selective-testing.md +732 -0
  274. package/lib/bmad-cache/tea/src/testarch/knowledge/selector-resilience.md +527 -0
  275. package/lib/bmad-cache/tea/src/testarch/knowledge/test-healing-patterns.md +644 -0
  276. package/lib/bmad-cache/tea/src/testarch/knowledge/test-levels-framework.md +473 -0
  277. package/lib/bmad-cache/tea/src/testarch/knowledge/test-priorities-matrix.md +373 -0
  278. package/lib/bmad-cache/tea/src/testarch/knowledge/test-quality.md +664 -0
  279. package/lib/bmad-cache/tea/src/testarch/knowledge/timing-debugging.md +372 -0
  280. package/lib/bmad-cache/tea/src/testarch/knowledge/visual-debugging.md +524 -0
  281. package/lib/bmad-cache/tea/src/testarch/tea-index.csv +43 -0
  282. package/lib/bmad-cache/tea/src/workflows/testarch/README.md +74 -0
  283. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/SKILL.md +6 -0
  284. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/bmad-skill-manifest.yaml +1 -0
  285. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/checklist.md +197 -0
  286. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/curriculum.yaml +129 -0
  287. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/quiz-questions.yaml +206 -0
  288. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/role-paths.yaml +136 -0
  289. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/session-content-map.yaml +207 -0
  290. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/tea-resources-index.yaml +359 -0
  291. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/instructions.md +130 -0
  292. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-01-init.md +235 -0
  293. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-01b-continue.md +147 -0
  294. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-02-assess.md +258 -0
  295. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-03-session-menu.md +219 -0
  296. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-01.md +460 -0
  297. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-02.md +465 -0
  298. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-03.md +301 -0
  299. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-04.md +234 -0
  300. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-05.md +234 -0
  301. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-06.md +209 -0
  302. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-07.md +212 -0
  303. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-05-completion.md +339 -0
  304. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-e/step-e-01-assess-workflow.md +141 -0
  305. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-e/step-e-02-apply-edits.md +122 -0
  306. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-v/step-v-01-validate.md +263 -0
  307. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/templates/certificate-template.md +86 -0
  308. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/templates/progress-template.yaml +95 -0
  309. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/templates/session-notes-template.md +83 -0
  310. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/workflow-plan-teach-me-testing.md +950 -0
  311. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/workflow.md +90 -0
  312. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/SKILL.md +6 -0
  313. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/atdd-checklist-template.md +371 -0
  314. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/bmad-skill-manifest.yaml +1 -0
  315. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/checklist.md +374 -0
  316. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/instructions.md +45 -0
  317. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-01-preflight-and-context.md +226 -0
  318. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-01b-resume.md +96 -0
  319. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-02-generation-mode.md +125 -0
  320. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-03-test-strategy.md +110 -0
  321. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04-generate-tests.md +334 -0
  322. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04a-subagent-api-failing.md +286 -0
  323. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04b-subagent-e2e-failing.md +244 -0
  324. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04c-aggregate.md +370 -0
  325. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-05-validate-and-complete.md +106 -0
  326. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-e/step-01-assess.md +65 -0
  327. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-e/step-02-apply-edit.md +60 -0
  328. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-v/step-01-validate.md +67 -0
  329. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/validation-report-20260127-095021.md +73 -0
  330. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/validation-report-20260127-102401.md +116 -0
  331. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/workflow-plan.md +21 -0
  332. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/workflow.md +41 -0
  333. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/workflow.yaml +46 -0
  334. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/SKILL.md +6 -0
  335. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/bmad-skill-manifest.yaml +1 -0
  336. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/checklist.md +611 -0
  337. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/instructions.md +50 -0
  338. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-01-preflight-and-context.md +237 -0
  339. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-01b-resume.md +94 -0
  340. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-02-identify-targets.md +169 -0
  341. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03-generate-tests.md +394 -0
  342. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03a-subagent-api.md +263 -0
  343. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03b-subagent-backend.md +246 -0
  344. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03b-subagent-e2e.md +213 -0
  345. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03c-aggregate.md +393 -0
  346. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-04-validate-and-summarize.md +106 -0
  347. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-e/step-01-assess.md +65 -0
  348. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-e/step-02-apply-edit.md +60 -0
  349. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-v/step-01-validate.md +67 -0
  350. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/validation-report-20260127-095021.md +72 -0
  351. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/validation-report-20260127-102401.md +114 -0
  352. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/workflow-plan.md +20 -0
  353. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/workflow.md +41 -0
  354. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/workflow.yaml +53 -0
  355. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/SKILL.md +6 -0
  356. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/azure-pipelines-template.yaml +155 -0
  357. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/bmad-skill-manifest.yaml +1 -0
  358. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/checklist.md +289 -0
  359. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/github-actions-template.yaml +328 -0
  360. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/gitlab-ci-template.yaml +158 -0
  361. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/harness-pipeline-template.yaml +159 -0
  362. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/instructions.md +45 -0
  363. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/jenkins-pipeline-template.groovy +129 -0
  364. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-01-preflight.md +158 -0
  365. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-01b-resume.md +110 -0
  366. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-02-generate-pipeline.md +279 -0
  367. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-03-configure-quality-gates.md +135 -0
  368. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-04-validate-and-summary.md +92 -0
  369. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-e/step-01-assess.md +65 -0
  370. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-e/step-02-apply-edit.md +60 -0
  371. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-v/step-01-validate.md +81 -0
  372. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/validation-report-20260127-095021.md +72 -0
  373. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/validation-report-20260127-102401.md +114 -0
  374. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/workflow-plan.md +20 -0
  375. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/workflow.md +41 -0
  376. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/workflow.yaml +48 -0
  377. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/SKILL.md +6 -0
  378. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/bmad-skill-manifest.yaml +1 -0
  379. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/checklist.md +345 -0
  380. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/instructions.md +45 -0
  381. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-01-preflight.md +132 -0
  382. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-01b-resume.md +116 -0
  383. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-02-select-framework.md +117 -0
  384. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-03-scaffold-framework.md +323 -0
  385. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-04-docs-and-scripts.md +105 -0
  386. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-05-validate-and-summary.md +93 -0
  387. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-e/step-01-assess.md +65 -0
  388. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-e/step-02-apply-edit.md +60 -0
  389. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-v/step-01-validate.md +67 -0
  390. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/validation-report-20260127-095021.md +73 -0
  391. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/validation-report-20260127-102401.md +116 -0
  392. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/workflow-plan.md +22 -0
  393. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/workflow.md +41 -0
  394. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/workflow.yaml +48 -0
  395. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/SKILL.md +6 -0
  396. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/bmad-skill-manifest.yaml +1 -0
  397. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/checklist.md +407 -0
  398. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/instructions.md +43 -0
  399. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/nfr-report-template.md +470 -0
  400. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-01-load-context.md +138 -0
  401. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-01b-resume.md +106 -0
  402. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-02-define-thresholds.md +107 -0
  403. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-03-gather-evidence.md +108 -0
  404. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04-evaluate-and-score.md +254 -0
  405. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04a-subagent-security.md +138 -0
  406. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04b-subagent-performance.md +84 -0
  407. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04c-subagent-reliability.md +85 -0
  408. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04d-subagent-scalability.md +88 -0
  409. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04e-aggregate-nfr.md +264 -0
  410. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-05-generate-report.md +108 -0
  411. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-e/step-01-assess.md +65 -0
  412. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-e/step-02-apply-edit.md +60 -0
  413. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-v/step-01-validate.md +67 -0
  414. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/validation-report-20260127-095021.md +73 -0
  415. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/validation-report-20260127-102401.md +116 -0
  416. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/workflow-plan.md +19 -0
  417. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/workflow.md +41 -0
  418. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/workflow.yaml +48 -0
  419. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/SKILL.md +6 -0
  420. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/bmad-skill-manifest.yaml +1 -0
  421. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/checklist.md +464 -0
  422. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/instructions.md +105 -0
  423. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-01-detect-mode.md +134 -0
  424. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-01b-resume.md +102 -0
  425. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-02-load-context.md +242 -0
  426. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-03-risk-and-testability.md +110 -0
  427. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-04-coverage-plan.md +123 -0
  428. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-05-generate-output.md +222 -0
  429. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-e/step-01-assess.md +65 -0
  430. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-e/step-02-apply-edit.md +60 -0
  431. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-v/step-01-validate.md +67 -0
  432. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-architecture-template.md +230 -0
  433. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-handoff-template.md +70 -0
  434. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-qa-template.md +396 -0
  435. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-template.md +344 -0
  436. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/validation-report-20260127-095021.md +73 -0
  437. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/validation-report-20260127-102401.md +116 -0
  438. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/workflow-plan.md +22 -0
  439. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/workflow.md +41 -0
  440. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/workflow.yaml +77 -0
  441. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/SKILL.md +6 -0
  442. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/bmad-skill-manifest.yaml +1 -0
  443. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/checklist.md +475 -0
  444. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/instructions.md +45 -0
  445. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-01-load-context.md +197 -0
  446. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-01b-resume.md +104 -0
  447. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-02-discover-tests.md +113 -0
  448. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03-quality-evaluation.md +274 -0
  449. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03a-subagent-determinism.md +214 -0
  450. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03b-subagent-isolation.md +125 -0
  451. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03c-subagent-maintainability.md +102 -0
  452. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03e-subagent-performance.md +117 -0
  453. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03f-aggregate-scores.md +277 -0
  454. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-04-generate-report.md +111 -0
  455. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-e/step-01-assess.md +65 -0
  456. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-e/step-02-apply-edit.md +60 -0
  457. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-v/step-01-validate.md +67 -0
  458. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/test-review-template.md +387 -0
  459. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/validation-report-20260127-095021.md +72 -0
  460. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/validation-report-20260127-102401.md +114 -0
  461. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/workflow-plan.md +18 -0
  462. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/workflow.md +41 -0
  463. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/workflow.yaml +48 -0
  464. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/SKILL.md +6 -0
  465. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/bmad-skill-manifest.yaml +1 -0
  466. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/checklist.md +647 -0
  467. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/instructions.md +43 -0
  468. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-01-load-context.md +105 -0
  469. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-01b-resume.md +102 -0
  470. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-02-discover-tests.md +112 -0
  471. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-03-map-criteria.md +97 -0
  472. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-04-analyze-gaps.md +421 -0
  473. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-05-gate-decision.md +266 -0
  474. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-e/step-01-assess.md +65 -0
  475. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-e/step-02-apply-edit.md +60 -0
  476. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-v/step-01-validate.md +67 -0
  477. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/trace-template.md +708 -0
  478. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/validation-report-20260127-095021.md +73 -0
  479. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/validation-report-20260127-102401.md +116 -0
  480. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow-plan.md +21 -0
  481. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow.md +41 -0
  482. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow.yaml +56 -0
  483. package/lib/bmad-cache/tea/test/README.md +23 -0
  484. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +27 -0
  485. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +30 -0
  486. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +22 -0
  487. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +20 -0
  488. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +25 -0
  489. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +24 -0
  490. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +25 -0
  491. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +25 -0
  492. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +25 -0
  493. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +31 -0
  494. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +25 -0
  495. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +25 -0
  496. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +25 -0
  497. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +25 -0
  498. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +26 -0
  499. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +24 -0
  500. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +27 -0
  501. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +23 -0
  502. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +24 -0
  503. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +27 -0
  504. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +27 -0
  505. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +24 -0
  506. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +29 -0
  507. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +31 -0
  508. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +28 -0
  509. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +28 -0
  510. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +5 -0
  511. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +28 -0
  512. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +11 -0
  513. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +19 -0
  514. package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +18 -0
  515. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +24 -0
  516. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +22 -0
  517. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +27 -0
  518. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +31 -0
  519. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +22 -0
  520. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +38 -0
  521. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +24 -0
  522. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +31 -0
  523. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +34 -0
  524. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +24 -0
  525. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +24 -0
  526. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +24 -0
  527. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +24 -0
  528. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +23 -0
  529. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +24 -0
  530. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +24 -0
  531. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +24 -0
  532. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +22 -0
  533. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +28 -0
  534. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +30 -0
  535. package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +24 -0
  536. package/lib/bmad-cache/tea/test/schema/agent.js +491 -0
  537. package/lib/bmad-cache/tea/test/test-agent-schema.js +387 -0
  538. package/lib/bmad-cache/tea/test/test-installation-components.js +214 -0
  539. package/lib/bmad-cache/tea/test/test-knowledge-base.js +208 -0
  540. package/lib/bmad-cache/tea/test/unit-test-schema.js +133 -0
  541. package/lib/bmad-cache/tea/test/validate-agent-schema.js +110 -0
  542. package/lib/bmad-cache/tea/tools/build-docs.js +575 -0
  543. package/lib/bmad-cache/tea/tools/fix-doc-links.js +288 -0
  544. package/lib/bmad-cache/tea/tools/schema/agent.js +491 -0
  545. package/lib/bmad-cache/tea/tools/validate-agent-schema.js +111 -0
  546. package/lib/bmad-cache/tea/tools/validate-doc-links.js +371 -0
  547. package/lib/bmad-cache/tea/tools/validate-tea-workflow-descriptions.js +122 -0
  548. package/lib/bmad-cache/tea/tools/verify-paths.js +100 -0
  549. package/lib/bmad-cache/tea/website/README.md +137 -0
  550. package/lib/bmad-cache/tea/website/astro.config.mjs +179 -0
  551. package/lib/bmad-cache/tea/website/package-lock.json +6856 -0
  552. package/lib/bmad-cache/tea/website/package.json +24 -0
  553. package/lib/bmad-cache/tea/website/public/favicon.ico +0 -0
  554. package/lib/bmad-cache/tea/website/public/img/tea-logo.svg +7 -0
  555. package/lib/bmad-cache/tea/website/public/robots.txt +37 -0
  556. package/lib/bmad-cache/tea/website/src/components/Banner.astro +59 -0
  557. package/lib/bmad-cache/tea/website/src/components/Header.astro +121 -0
  558. package/lib/bmad-cache/tea/website/src/components/MobileMenuFooter.astro +53 -0
  559. package/lib/bmad-cache/tea/website/src/content/config.ts +6 -0
  560. package/lib/bmad-cache/tea/website/src/content/docs +1 -0
  561. package/lib/bmad-cache/tea/website/src/lib/site-url.js +25 -0
  562. package/lib/bmad-cache/tea/website/src/pages/404.astro +11 -0
  563. package/lib/bmad-cache/tea/website/src/rehype-base-paths.js +89 -0
  564. package/lib/bmad-cache/tea/website/src/rehype-markdown-links.js +117 -0
  565. package/lib/bmad-cache/tea/website/src/styles/custom.css +499 -0
  566. package/lib/bmad-cache/tea/website/tsconfig.json +9 -0
  567. package/lib/bmad.js +76 -10
  568. package/lib/installer.js +23 -1
  569. package/package.json +4 -2
  570. package/scripts/build-bmad-cache.js +288 -0
  571. package/test/yes-flag.test.js +193 -0
@@ -0,0 +1,421 @@
1
+ ---
2
+ name: 'step-04-analyze-gaps'
3
+ description: 'Complete Phase 1 with adaptive orchestration (agent-team, subagent, or sequential)'
4
+ nextStepFile: './step-05-gate-decision.md'
5
+ outputFile: '{test_artifacts}/traceability-report.md'
6
+ tempOutputFile: '/tmp/tea-trace-coverage-matrix-{{timestamp}}.json'
7
+ ---
8
+
9
+ # Step 4: Complete Phase 1 - Coverage Matrix Generation
10
+
11
+ ## STEP GOAL
12
+
13
+ **Phase 1 Final Step:** Analyze coverage gaps (including endpoint/auth/error-path blind spots), generate recommendations, and output complete coverage matrix to temp file for Phase 2 (gate decision).
14
+
15
+ ---
16
+
17
+ ## MANDATORY EXECUTION RULES
18
+
19
+ - 📖 Read the entire step file before acting
20
+ - ✅ Speak in `{communication_language}`
21
+ - ✅ Output coverage matrix to temp file
22
+ - ✅ Resolve execution mode from explicit user request first, then config
23
+ - ✅ Apply fallback rules deterministically when requested mode is unsupported
24
+ - ❌ Do NOT make gate decision (that's Phase 2 - Step 5)
25
+
26
+ ---
27
+
28
+ ## EXECUTION PROTOCOLS:
29
+
30
+ - 🎯 Follow the MANDATORY SEQUENCE exactly
31
+ - 💾 Record outputs before proceeding
32
+ - 📖 Load the next step only when instructed
33
+
34
+ ## CONTEXT BOUNDARIES:
35
+
36
+ - Available context: requirements from Step 1, tests from Step 2, traceability matrix from Step 3
37
+ - Focus: gap analysis and matrix completion
38
+ - Limits: do not make gate decision (Phase 2 responsibility)
39
+
40
+ ---
41
+
42
+ ## MANDATORY SEQUENCE
43
+
44
+ ### 0. Resolve Execution Mode (User Override First)
45
+
46
+ ```javascript
47
+ const parseBooleanFlag = (value, defaultValue = true) => {
48
+ if (typeof value === 'string') {
49
+ const normalized = value.trim().toLowerCase();
50
+ if (['false', '0', 'off', 'no'].includes(normalized)) return false;
51
+ if (['true', '1', 'on', 'yes'].includes(normalized)) return true;
52
+ }
53
+ if (value === undefined || value === null) return defaultValue;
54
+ return Boolean(value);
55
+ };
56
+
57
+ const orchestrationContext = {
58
+ config: {
59
+ execution_mode: config.tea_execution_mode || 'auto', // "auto" | "subagent" | "agent-team" | "sequential"
60
+ capability_probe: parseBooleanFlag(config.tea_capability_probe, true), // supports booleans and "false"/"true" strings
61
+ },
62
+ timestamp: new Date().toISOString().replace(/[:.]/g, '-'),
63
+ };
64
+
65
+ const normalizeUserExecutionMode = (mode) => {
66
+ if (typeof mode !== 'string') return null;
67
+ const normalized = mode.trim().toLowerCase().replace(/[-_]/g, ' ').replace(/\s+/g, ' ');
68
+
69
+ if (normalized === 'auto') return 'auto';
70
+ if (normalized === 'sequential') return 'sequential';
71
+ if (normalized === 'subagent' || normalized === 'sub agent' || normalized === 'subagents' || normalized === 'sub agents') {
72
+ return 'subagent';
73
+ }
74
+ if (normalized === 'agent team' || normalized === 'agent teams' || normalized === 'agentteam') {
75
+ return 'agent-team';
76
+ }
77
+
78
+ return null;
79
+ };
80
+
81
+ const normalizeConfigExecutionMode = (mode) => {
82
+ if (mode === 'subagent') return 'subagent';
83
+ if (mode === 'auto' || mode === 'sequential' || mode === 'subagent' || mode === 'agent-team') {
84
+ return mode;
85
+ }
86
+ return null;
87
+ };
88
+
89
+ // Explicit user instruction in the active run takes priority over config.
90
+ const explicitModeFromUser = normalizeUserExecutionMode(runtime.getExplicitExecutionModeHint?.() || null);
91
+
92
+ const requestedMode = explicitModeFromUser || normalizeConfigExecutionMode(orchestrationContext.config.execution_mode) || 'auto';
93
+ const probeEnabled = orchestrationContext.config.capability_probe;
94
+
95
+ const supports = { subagent: false, agentTeam: false };
96
+ if (probeEnabled) {
97
+ supports.subagent = runtime.canLaunchSubagents?.() === true;
98
+ supports.agentTeam = runtime.canLaunchAgentTeams?.() === true;
99
+ }
100
+
101
+ let resolvedMode = requestedMode;
102
+ if (requestedMode === 'auto') {
103
+ if (supports.agentTeam) resolvedMode = 'agent-team';
104
+ else if (supports.subagent) resolvedMode = 'subagent';
105
+ else resolvedMode = 'sequential';
106
+ } else if (probeEnabled && requestedMode === 'agent-team' && !supports.agentTeam) {
107
+ resolvedMode = supports.subagent ? 'subagent' : 'sequential';
108
+ } else if (probeEnabled && requestedMode === 'subagent' && !supports.subagent) {
109
+ resolvedMode = 'sequential';
110
+ }
111
+ ```
112
+
113
+ Resolution precedence:
114
+
115
+ 1. Explicit user request in this run (`agent team` => `agent-team`; `subagent` => `subagent`; `sequential`; `auto`)
116
+ 2. `tea_execution_mode` from config
117
+ 3. Runtime capability fallback (when probing enabled)
118
+
119
+ ### 1. Gap Analysis
120
+
121
+ **Identify uncovered requirements:**
122
+
123
+ ```javascript
124
+ const uncoveredRequirements = traceabilityMatrix.filter((req) => req.coverage === 'NONE');
125
+ const partialCoverage = traceabilityMatrix.filter((req) => req.coverage === 'PARTIAL');
126
+ const unitOnlyCoverage = traceabilityMatrix.filter((req) => req.coverage === 'UNIT-ONLY');
127
+ ```
128
+
129
+ **Prioritize gaps by risk:**
130
+
131
+ ```javascript
132
+ const criticalGaps = uncoveredRequirements.filter((req) => req.priority === 'P0');
133
+ const highGaps = uncoveredRequirements.filter((req) => req.priority === 'P1');
134
+ const mediumGaps = uncoveredRequirements.filter((req) => req.priority === 'P2');
135
+ const lowGaps = uncoveredRequirements.filter((req) => req.priority === 'P3');
136
+ ```
137
+
138
+ ---
139
+
140
+ ### 2. Coverage Heuristics Checks
141
+
142
+ Use the heuristics inventory from Step 2 and mapped criteria from Step 3 to flag common coverage blind spots:
143
+
144
+ ```javascript
145
+ const endpointCoverageGaps = coverageHeuristics?.endpoints_without_tests || [];
146
+ const authCoverageGaps = coverageHeuristics?.auth_missing_negative_paths || [];
147
+ const errorPathGaps = coverageHeuristics?.criteria_happy_path_only || [];
148
+
149
+ const heuristicGapCounts = {
150
+ endpoints_without_tests: endpointCoverageGaps.length,
151
+ auth_missing_negative_paths: authCoverageGaps.length,
152
+ happy_path_only_criteria: errorPathGaps.length,
153
+ };
154
+ ```
155
+
156
+ Heuristics are advisory but must influence gap severity and recommendations, especially for P0/P1 criteria.
157
+
158
+ ---
159
+
160
+ ### 3. Generate Recommendations
161
+
162
+ **Based on gap analysis:**
163
+
164
+ ```javascript
165
+ const recommendations = [];
166
+
167
+ // Critical gaps (P0)
168
+ if (criticalGaps.length > 0) {
169
+ recommendations.push({
170
+ priority: 'URGENT',
171
+ action: `Run /bmad:tea:atdd for ${criticalGaps.length} P0 requirements`,
172
+ requirements: criticalGaps.map((r) => r.id),
173
+ });
174
+ }
175
+
176
+ // High priority gaps (P1)
177
+ if (highGaps.length > 0) {
178
+ recommendations.push({
179
+ priority: 'HIGH',
180
+ action: `Run /bmad:tea:automate to expand coverage for ${highGaps.length} P1 requirements`,
181
+ requirements: highGaps.map((r) => r.id),
182
+ });
183
+ }
184
+
185
+ // Partial coverage
186
+ if (partialCoverage.length > 0) {
187
+ recommendations.push({
188
+ priority: 'MEDIUM',
189
+ action: `Complete coverage for ${partialCoverage.length} partially covered requirements`,
190
+ requirements: partialCoverage.map((r) => r.id),
191
+ });
192
+ }
193
+
194
+ if (endpointCoverageGaps.length > 0) {
195
+ recommendations.push({
196
+ priority: 'HIGH',
197
+ action: `Add API tests for ${endpointCoverageGaps.length} uncovered endpoint(s)`,
198
+ requirements: endpointCoverageGaps.map((r) => r.id || r.endpoint || 'unknown'),
199
+ });
200
+ }
201
+
202
+ if (authCoverageGaps.length > 0) {
203
+ recommendations.push({
204
+ priority: 'HIGH',
205
+ action: `Add negative-path auth/authz tests for ${authCoverageGaps.length} requirement(s)`,
206
+ requirements: authCoverageGaps.map((r) => r.id || 'unknown'),
207
+ });
208
+ }
209
+
210
+ if (errorPathGaps.length > 0) {
211
+ recommendations.push({
212
+ priority: 'MEDIUM',
213
+ action: `Add error/edge scenario tests for ${errorPathGaps.length} happy-path-only criterion/criteria`,
214
+ requirements: errorPathGaps.map((r) => r.id || 'unknown'),
215
+ });
216
+ }
217
+
218
+ // Quality issues
219
+ recommendations.push({
220
+ priority: 'LOW',
221
+ action: 'Run /bmad:tea:test-review to assess test quality',
222
+ requirements: [],
223
+ });
224
+ ```
225
+
226
+ ---
227
+
228
+ ### 4. Calculate Coverage Statistics
229
+
230
+ ```javascript
231
+ const totalRequirements = traceabilityMatrix.length;
232
+ const coveredRequirements = traceabilityMatrix.filter((r) => r.coverage === 'FULL' || r.coverage === 'PARTIAL').length;
233
+ const fullyCovered = traceabilityMatrix.filter((r) => r.coverage === 'FULL').length;
234
+
235
+ const safePct = (covered, total) => (total > 0 ? Math.round((covered / total) * 100) : 100);
236
+ const coveragePercentage = safePct(fullyCovered, totalRequirements);
237
+
238
+ // Priority-specific coverage
239
+ const p0Total = traceabilityMatrix.filter((r) => r.priority === 'P0').length;
240
+ const p0Covered = traceabilityMatrix.filter((r) => r.priority === 'P0' && r.coverage === 'FULL').length;
241
+ const p1Total = traceabilityMatrix.filter((r) => r.priority === 'P1').length;
242
+ const p1Covered = traceabilityMatrix.filter((r) => r.priority === 'P1' && r.coverage === 'FULL').length;
243
+ const p2Total = traceabilityMatrix.filter((r) => r.priority === 'P2').length;
244
+ const p2Covered = traceabilityMatrix.filter((r) => r.priority === 'P2' && r.coverage === 'FULL').length;
245
+ const p3Total = traceabilityMatrix.filter((r) => r.priority === 'P3').length;
246
+ const p3Covered = traceabilityMatrix.filter((r) => r.priority === 'P3' && r.coverage === 'FULL').length;
247
+
248
+ const p0CoveragePercentage = safePct(p0Covered, p0Total);
249
+ const p1CoveragePercentage = safePct(p1Covered, p1Total);
250
+ const p2CoveragePercentage = safePct(p2Covered, p2Total);
251
+ const p3CoveragePercentage = safePct(p3Covered, p3Total);
252
+ ```
253
+
254
+ ---
255
+
256
+ ### 5. Generate Complete Coverage Matrix
257
+
258
+ **Compile all Phase 1 outputs:**
259
+
260
+ ```javascript
261
+ const coverageMatrix = {
262
+ phase: 'PHASE_1_COMPLETE',
263
+ generated_at: new Date().toISOString(),
264
+
265
+ requirements: traceabilityMatrix, // Full matrix from Step 3
266
+
267
+ coverage_statistics: {
268
+ total_requirements: totalRequirements,
269
+ fully_covered: fullyCovered,
270
+ partially_covered: partialCoverage.length,
271
+ uncovered: uncoveredRequirements.length,
272
+ overall_coverage_percentage: coveragePercentage,
273
+
274
+ priority_breakdown: {
275
+ P0: { total: p0Total, covered: p0Covered, percentage: p0CoveragePercentage },
276
+ P1: { total: p1Total, covered: p1Covered, percentage: p1CoveragePercentage },
277
+ P2: { total: p2Total, covered: p2Covered, percentage: p2CoveragePercentage },
278
+ P3: { total: p3Total, covered: p3Covered, percentage: p3CoveragePercentage },
279
+ },
280
+ },
281
+
282
+ gap_analysis: {
283
+ critical_gaps: criticalGaps,
284
+ high_gaps: highGaps,
285
+ medium_gaps: mediumGaps,
286
+ low_gaps: lowGaps,
287
+ partial_coverage_items: partialCoverage,
288
+ unit_only_items: unitOnlyCoverage,
289
+ },
290
+
291
+ coverage_heuristics: {
292
+ endpoint_gaps: endpointCoverageGaps,
293
+ auth_negative_path_gaps: authCoverageGaps,
294
+ happy_path_only_gaps: errorPathGaps,
295
+ counts: heuristicGapCounts,
296
+ },
297
+
298
+ recommendations: recommendations,
299
+ };
300
+ ```
301
+
302
+ ---
303
+
304
+ ### 6. Output Coverage Matrix to Temp File
305
+
306
+ **Write to temp file for Phase 2:**
307
+
308
+ ```javascript
309
+ const outputPath = '{tempOutputFile}';
310
+ fs.writeFileSync(outputPath, JSON.stringify(coverageMatrix, null, 2), 'utf8');
311
+
312
+ console.log(`✅ Phase 1 Complete: Coverage matrix saved to ${outputPath}`);
313
+ ```
314
+
315
+ ---
316
+
317
+ ### 7. Display Phase 1 Summary
318
+
319
+ ```
320
+ ✅ Phase 1 Complete: Coverage Matrix Generated
321
+
322
+ 📊 Coverage Statistics:
323
+ - Total Requirements: {totalRequirements}
324
+ - Fully Covered: {fullyCovered} ({coveragePercentage}%)
325
+ - Partially Covered: {partialCoverage.length}
326
+ - Uncovered: {uncoveredRequirements.length}
327
+
328
+ 🎯 Priority Coverage:
329
+ - P0: {p0Covered}/{p0Total} ({p0CoveragePercentage}%)
330
+ - P1: {p1Covered}/{p1Total} ({p1CoveragePercentage}%)
331
+ - P2: {p2Covered}/{p2Total} ({p2CoveragePercentage}%)
332
+ - P3: {p3Covered}/{p3Total} ({p3CoveragePercentage}%)
333
+
334
+ ⚠️ Gaps Identified:
335
+ - Critical (P0): {criticalGaps.length}
336
+ - High (P1): {highGaps.length}
337
+ - Medium (P2): {mediumGaps.length}
338
+ - Low (P3): {lowGaps.length}
339
+
340
+ 🔍 Coverage Heuristics:
341
+ - Endpoints without tests: {endpointCoverageGaps.length}
342
+ - Auth negative-path gaps: {authCoverageGaps.length}
343
+ - Happy-path-only criteria: {errorPathGaps.length}
344
+
345
+ 📝 Recommendations: {recommendations.length}
346
+
347
+ 🔄 Phase 2: Gate decision (next step)
348
+ ```
349
+
350
+ ### Orchestration Notes for This Step
351
+
352
+ When `resolvedMode` is `agent-team` or `subagent`, parallelize only dependency-safe sections:
353
+
354
+ - Worker A: gap classification (section 1)
355
+ - Worker B: heuristics gap extraction (section 2)
356
+ - Worker C: coverage statistics (section 4)
357
+
358
+ Section 3 (recommendation synthesis) depends on outputs from sections 1 and 2, so run it only after Workers A and B complete.
359
+
360
+ Section 5 remains the deterministic merge point after sections 1-4 are finished.
361
+
362
+ If `resolvedMode` is `sequential`, execute sections 1→7 in order.
363
+
364
+ ---
365
+
366
+ ## EXIT CONDITION
367
+
368
+ **PHASE 1 COMPLETE when:**
369
+
370
+ - ✅ Gap analysis complete
371
+ - ✅ Recommendations generated
372
+ - ✅ Coverage statistics calculated
373
+ - ✅ Coverage matrix saved to temp file
374
+ - ✅ Summary displayed
375
+
376
+ **Proceed to Phase 2 (Step 5: Gate Decision)**
377
+
378
+ ---
379
+
380
+ ### 8. Save Progress
381
+
382
+ **Save this step's accumulated work to `{outputFile}`.**
383
+
384
+ - **If `{outputFile}` does not exist** (first save), create it using the workflow template (if available) with YAML frontmatter:
385
+
386
+ ```yaml
387
+ ---
388
+ stepsCompleted: ['step-04-analyze-gaps']
389
+ lastStep: 'step-04-analyze-gaps'
390
+ lastSaved: '{date}'
391
+ ---
392
+ ```
393
+
394
+ Then write this step's output below the frontmatter.
395
+
396
+ - **If `{outputFile}` already exists**, update:
397
+ - Add `'step-04-analyze-gaps'` to `stepsCompleted` array (only if not already present)
398
+ - Set `lastStep: 'step-04-analyze-gaps'`
399
+ - Set `lastSaved: '{date}'`
400
+ - Append this step's output to the appropriate section of the document.
401
+
402
+ Load next step: `{nextStepFile}`
403
+
404
+ ---
405
+
406
+ ## 🚨 PHASE 1 SUCCESS METRICS
407
+
408
+ ### ✅ SUCCESS:
409
+
410
+ - Coverage matrix complete and accurate
411
+ - All gaps identified and prioritized
412
+ - Recommendations actionable
413
+ - Temp file output valid JSON
414
+
415
+ ### ❌ FAILURE:
416
+
417
+ - Coverage matrix incomplete
418
+ - Gap analysis missing
419
+ - Invalid JSON output
420
+
421
+ **Master Rule:** Phase 1 MUST output complete coverage matrix to temp file before Phase 2 can proceed.
@@ -0,0 +1,266 @@
1
+ ---
2
+ name: 'step-05-gate-decision'
3
+ description: 'Phase 2: Apply gate decision logic and generate outputs'
4
+ outputFile: '{test_artifacts}/traceability-report.md'
5
+ ---
6
+
7
+ # Step 5: Phase 2 - Gate Decision
8
+
9
+ ## STEP GOAL
10
+
11
+ **Phase 2:** Read coverage matrix from Phase 1, apply deterministic gate decision logic, and generate traceability report.
12
+
13
+ ---
14
+
15
+ ## MANDATORY EXECUTION RULES
16
+
17
+ - 📖 Read the entire step file before acting
18
+ - ✅ Speak in `{communication_language}`
19
+ - ✅ Read coverage matrix from Phase 1 temp file
20
+ - ✅ Apply gate decision logic
21
+ - ❌ Do NOT regenerate coverage matrix (use Phase 1 output)
22
+
23
+ ---
24
+
25
+ ## EXECUTION PROTOCOLS:
26
+
27
+ - 🎯 Follow the MANDATORY SEQUENCE exactly
28
+ - 💾 Record outputs before proceeding
29
+ - 📖 This is the FINAL step
30
+
31
+ ## CONTEXT BOUNDARIES:
32
+
33
+ - Available context: Coverage matrix from Phase 1 temp file
34
+ - Focus: gate decision logic only
35
+ - Dependencies: Phase 1 complete (coverage matrix exists)
36
+
37
+ ---
38
+
39
+ ## MANDATORY SEQUENCE
40
+
41
+ ### 1. Read Phase 1 Coverage Matrix
42
+
43
+ ```javascript
44
+ const matrixPath = '/tmp/tea-trace-coverage-matrix-{{timestamp}}.json';
45
+ const coverageMatrix = JSON.parse(fs.readFileSync(matrixPath, 'utf8'));
46
+
47
+ console.log('✅ Phase 1 coverage matrix loaded');
48
+ ```
49
+
50
+ **Verify Phase 1 complete:**
51
+
52
+ ```javascript
53
+ if (coverageMatrix.phase !== 'PHASE_1_COMPLETE') {
54
+ throw new Error('Phase 1 not complete - cannot proceed to gate decision');
55
+ }
56
+ ```
57
+
58
+ ---
59
+
60
+ ### 2. Apply Gate Decision Logic
61
+
62
+ **Decision Tree:**
63
+
64
+ ```javascript
65
+ const stats = coverageMatrix.coverage_statistics;
66
+ const p0Coverage = stats.priority_breakdown.P0.percentage;
67
+ const p1Coverage = stats.priority_breakdown.P1.percentage;
68
+ const hasP1Requirements = (stats.priority_breakdown.P1.total || 0) > 0;
69
+ const effectiveP1Coverage = hasP1Requirements ? p1Coverage : 100;
70
+ const overallCoverage = stats.overall_coverage_percentage;
71
+ const criticalGaps = coverageMatrix.gap_analysis.critical_gaps.length;
72
+
73
+ let gateDecision;
74
+ let rationale;
75
+
76
+ // Rule 1: P0 coverage must be 100%
77
+ if (p0Coverage < 100) {
78
+ gateDecision = 'FAIL';
79
+ rationale = `P0 coverage is ${p0Coverage}% (required: 100%). ${criticalGaps} critical requirements uncovered.`;
80
+ }
81
+ // Rule 2: Overall coverage must be >= 80%
82
+ else if (overallCoverage < 80) {
83
+ gateDecision = 'FAIL';
84
+ rationale = `Overall coverage is ${overallCoverage}% (minimum: 80%). Significant gaps exist.`;
85
+ }
86
+ // Rule 3: P1 coverage < 80% → FAIL
87
+ else if (effectiveP1Coverage < 80) {
88
+ gateDecision = 'FAIL';
89
+ rationale = hasP1Requirements
90
+ ? `P1 coverage is ${effectiveP1Coverage}% (minimum: 80%). High-priority gaps must be addressed.`
91
+ : `P1 requirements are not present; continuing with remaining gate criteria.`;
92
+ }
93
+ // Rule 4: P1 coverage >= 90% and overall >= 80% with P0 at 100% → PASS
94
+ else if (effectiveP1Coverage >= 90) {
95
+ gateDecision = 'PASS';
96
+ rationale = hasP1Requirements
97
+ ? `P0 coverage is 100%, P1 coverage is ${effectiveP1Coverage}% (target: 90%), and overall coverage is ${overallCoverage}% (minimum: 80%).`
98
+ : `P0 coverage is 100% and overall coverage is ${overallCoverage}% (minimum: 80%). No P1 requirements detected.`;
99
+ }
100
+ // Rule 5: P1 coverage 80-89% with P0 at 100% and overall >= 80% → CONCERNS
101
+ else if (effectiveP1Coverage >= 80) {
102
+ gateDecision = 'CONCERNS';
103
+ rationale = hasP1Requirements
104
+ ? `P0 coverage is 100% and overall coverage is ${overallCoverage}% (minimum: 80%), but P1 coverage is ${effectiveP1Coverage}% (target: 90%).`
105
+ : `P0 coverage is 100% and overall coverage is ${overallCoverage}% (minimum: 80%), but additional non-P1 gaps need mitigation.`;
106
+ }
107
+
108
+ // Rule 6: Manual waiver option
109
+ const manualWaiver = false; // Can be set via config or user input
110
+ if (manualWaiver) {
111
+ gateDecision = 'WAIVED';
112
+ rationale += ' Manual waiver applied by stakeholder.';
113
+ }
114
+ ```
115
+
116
+ ---
117
+
118
+ ### 3. Generate Gate Report
119
+
120
+ ```javascript
121
+ const gateReport = {
122
+ decision: gateDecision,
123
+ rationale: rationale,
124
+ decision_date: new Date().toISOString(),
125
+
126
+ coverage_matrix: coverageMatrix,
127
+
128
+ gate_criteria: {
129
+ p0_coverage_required: '100%',
130
+ p0_coverage_actual: `${p0Coverage}%`,
131
+ p0_status: p0Coverage === 100 ? 'MET' : 'NOT MET',
132
+
133
+ p1_coverage_target_pass: '90%',
134
+ p1_coverage_minimum: '80%',
135
+ p1_coverage_actual: `${effectiveP1Coverage}%`,
136
+ p1_status: effectiveP1Coverage >= 90 ? 'MET' : effectiveP1Coverage >= 80 ? 'PARTIAL' : 'NOT MET',
137
+
138
+ overall_coverage_minimum: '80%',
139
+ overall_coverage_actual: `${overallCoverage}%`,
140
+ overall_status: overallCoverage >= 80 ? 'MET' : 'NOT MET',
141
+ },
142
+
143
+ uncovered_requirements: coverageMatrix.gap_analysis.critical_gaps.concat(coverageMatrix.gap_analysis.high_gaps),
144
+
145
+ recommendations: coverageMatrix.recommendations,
146
+ };
147
+ ```
148
+
149
+ ---
150
+
151
+ ### 4. Generate Traceability Report
152
+
153
+ **Use trace-template.md to generate:**
154
+
155
+ ```markdown
156
+ # Traceability Report
157
+
158
+ ## Gate Decision: {gateDecision}
159
+
160
+ **Rationale:** {rationale}
161
+
162
+ ## Coverage Summary
163
+
164
+ - Total Requirements: {totalRequirements}
165
+ - Covered: {fullyCovered} ({coveragePercentage}%)
166
+ - P0 Coverage: {p0CoveragePercentage}%
167
+
168
+ ## Traceability Matrix
169
+
170
+ [Full matrix with requirement → test mappings]
171
+
172
+ ## Gaps & Recommendations
173
+
174
+ [List of uncovered requirements with recommended actions]
175
+
176
+ ## Next Actions
177
+
178
+ {recommendations}
179
+ ```
180
+
181
+ **Save to:**
182
+
183
+ ```javascript
184
+ fs.writeFileSync('{outputFile}', reportContent, 'utf8');
185
+ ```
186
+
187
+ ---
188
+
189
+ ### 5. Display Gate Decision
190
+
191
+ ```
192
+ 🚨 GATE DECISION: {gateDecision}
193
+
194
+ 📊 Coverage Analysis:
195
+ - P0 Coverage: {p0Coverage}% (Required: 100%) → {p0_status}
196
+ - P1 Coverage: {effectiveP1Coverage}% (PASS target: 90%, minimum: 80%) → {p1_status}
197
+ - Overall Coverage: {overallCoverage}% (Minimum: 80%) → {overall_status}
198
+
199
+ ✅ Decision Rationale:
200
+ {rationale}
201
+
202
+ ⚠️ Critical Gaps: {criticalGaps.length}
203
+
204
+ 📝 Recommended Actions:
205
+ {list top 3 recommendations}
206
+
207
+ 📂 Full Report: {outputFile}
208
+
209
+ {if FAIL}
210
+ 🚫 GATE: FAIL - Release BLOCKED until coverage improves
211
+ {endif}
212
+
213
+ {if CONCERNS}
214
+ ⚠️ GATE: CONCERNS - Proceed with caution, address gaps soon
215
+ {endif}
216
+
217
+ {if PASS}
218
+ ✅ GATE: PASS - Release approved, coverage meets standards
219
+ {endif}
220
+ ```
221
+
222
+ ---
223
+
224
+ ### 6. Save Progress
225
+
226
+ **Update the YAML frontmatter in `{outputFile}` to mark this final step complete.**
227
+
228
+ Since step 4 (Generate Traceability Report) already wrote the report content to `{outputFile}`, do NOT overwrite it. Instead, update only the frontmatter at the top of the existing file:
229
+
230
+ - Add `'step-05-gate-decision'` to `stepsCompleted` array (only if not already present)
231
+ - Set `lastStep: 'step-05-gate-decision'`
232
+ - Set `lastSaved: '{date}'`
233
+
234
+ Then append the gate decision summary (from section 5 above) to the end of the existing report content.
235
+
236
+ ---
237
+
238
+ ## EXIT CONDITION
239
+
240
+ **WORKFLOW COMPLETE when:**
241
+
242
+ - ✅ Phase 1 coverage matrix read successfully
243
+ - ✅ Gate decision logic applied
244
+ - ✅ Traceability report generated
245
+ - ✅ Gate decision displayed
246
+
247
+ **Workflow terminates here.**
248
+
249
+ ---
250
+
251
+ ## 🚨 PHASE 2 SUCCESS METRICS
252
+
253
+ ### ✅ SUCCESS:
254
+
255
+ - Coverage matrix read from Phase 1
256
+ - Gate decision made with clear rationale
257
+ - Report generated and saved
258
+ - Decision communicated clearly
259
+
260
+ ### ❌ FAILURE:
261
+
262
+ - Could not read Phase 1 matrix
263
+ - Gate decision logic incorrect
264
+ - Report missing or incomplete
265
+
266
+ **Master Rule:** Gate decision MUST be deterministic based on clear criteria (P0 100%, P1 90/80, overall >=80).