@pennyfarthing/core 7.4.0 → 7.4.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 (895) hide show
  1. package/LICENSE +14 -0
  2. package/README.md +301 -0
  3. package/package.json +31 -36
  4. package/packages/core/dist/cli/commands/init.js +525 -0
  5. package/packages/core/dist/cli/commands/init.js.map +1 -0
  6. package/packages/core/dist/cli/commands/update.js +421 -0
  7. package/packages/core/dist/cli/commands/update.js.map +1 -0
  8. package/packages/core/dist/cli/utils/node-modules.d.ts.map +1 -0
  9. package/packages/core/dist/cli/utils/node-modules.js +32 -0
  10. package/packages/core/dist/cli/utils/node-modules.js.map +1 -0
  11. package/packages/core/dist/cli/workspace.test.js +156 -0
  12. package/packages/core/dist/cli/workspace.test.js.map +1 -0
  13. package/packages/core/dist/workflow/handoff.d.ts +281 -0
  14. package/packages/core/dist/workflow/handoff.d.ts.map +1 -0
  15. package/packages/core/dist/workflow/handoff.js +411 -0
  16. package/packages/core/dist/workflow/handoff.js.map +1 -0
  17. package/packages/core/dist/workflow/handoff.test.d.ts +21 -0
  18. package/packages/core/dist/workflow/handoff.test.d.ts.map +1 -0
  19. package/packages/core/dist/workflow/handoff.test.js +499 -0
  20. package/packages/core/dist/workflow/handoff.test.js.map +1 -0
  21. package/packages/core/dist/workflow/sm-subagents.test.d.ts +23 -0
  22. package/packages/core/dist/workflow/sm-subagents.test.js +727 -0
  23. package/packages/core/dist/workflow/sm-subagents.test.js.map +1 -0
  24. package/pennyfarthing-dist/agents/README.md +340 -0
  25. package/pennyfarthing-dist/agents/architect.md +193 -0
  26. package/pennyfarthing-dist/agents/dev.md +254 -0
  27. package/pennyfarthing-dist/agents/devops.md +206 -0
  28. package/pennyfarthing-dist/agents/handoff.md +289 -0
  29. package/pennyfarthing-dist/agents/orchestrator.md +355 -0
  30. package/pennyfarthing-dist/agents/pm.md +169 -0
  31. package/pennyfarthing-dist/agents/reviewer-preflight.md +96 -0
  32. package/pennyfarthing-dist/agents/reviewer.md +382 -0
  33. package/pennyfarthing-dist/agents/sm-file-summary.md +58 -0
  34. package/pennyfarthing-dist/agents/sm-finish.md +61 -0
  35. package/pennyfarthing-dist/agents/sm-handoff.md +145 -0
  36. package/pennyfarthing-dist/agents/sm-setup.md +174 -0
  37. package/pennyfarthing-dist/agents/sm.md +632 -0
  38. package/pennyfarthing-dist/agents/tea.md +213 -0
  39. package/pennyfarthing-dist/agents/tech-writer.md +216 -0
  40. package/pennyfarthing-dist/agents/testing-runner.md +141 -0
  41. package/pennyfarthing-dist/agents/ux-designer.md +231 -0
  42. package/pennyfarthing-dist/agents/workflow-status-check.md +68 -0
  43. package/pennyfarthing-dist/commands/architect.md +62 -0
  44. package/pennyfarthing-dist/commands/benchmark-control.md +69 -0
  45. package/pennyfarthing-dist/commands/benchmark.md +467 -0
  46. package/pennyfarthing-dist/commands/brainstorming.md +91 -0
  47. package/pennyfarthing-dist/commands/check.md +156 -0
  48. package/pennyfarthing-dist/commands/chore.md +178 -0
  49. package/pennyfarthing-dist/commands/close-epic.md +139 -0
  50. package/pennyfarthing-dist/commands/continue-session.md +184 -0
  51. package/pennyfarthing-dist/commands/create-branches-from-story.md +358 -0
  52. package/pennyfarthing-dist/commands/create-theme.md +29 -0
  53. package/pennyfarthing-dist/commands/dev.md +60 -0
  54. package/pennyfarthing-dist/commands/devops.md +59 -0
  55. package/pennyfarthing-dist/commands/git-cleanup.md +340 -0
  56. package/pennyfarthing-dist/commands/health-check.md +108 -0
  57. package/pennyfarthing-dist/commands/help.md +264 -0
  58. package/pennyfarthing-dist/commands/job-fair.md +102 -0
  59. package/pennyfarthing-dist/commands/list-themes.md +21 -0
  60. package/pennyfarthing-dist/commands/orchestrator.md +56 -0
  61. package/pennyfarthing-dist/commands/parallel-work.md +71 -0
  62. package/pennyfarthing-dist/commands/party-mode.md +67 -0
  63. package/pennyfarthing-dist/commands/permissions.md +193 -0
  64. package/pennyfarthing-dist/commands/pm.md +60 -0
  65. package/pennyfarthing-dist/commands/prime.md +140 -0
  66. package/pennyfarthing-dist/commands/release.md +58 -0
  67. package/pennyfarthing-dist/commands/repo-status.md +49 -0
  68. package/pennyfarthing-dist/commands/retro.md +200 -0
  69. package/pennyfarthing-dist/commands/reviewer.md +64 -0
  70. package/pennyfarthing-dist/commands/run-ci.md +116 -0
  71. package/pennyfarthing-dist/commands/set-theme.md +56 -0
  72. package/pennyfarthing-dist/commands/show-theme.md +21 -0
  73. package/pennyfarthing-dist/commands/sm.md +70 -0
  74. package/pennyfarthing-dist/commands/solo.md +411 -0
  75. package/pennyfarthing-dist/commands/sprint-planning.md +109 -0
  76. package/pennyfarthing-dist/commands/start-epic.md +168 -0
  77. package/pennyfarthing-dist/commands/sync-epic-to-jira.md +184 -0
  78. package/pennyfarthing-dist/commands/sync-work-with-sprint.md +373 -0
  79. package/pennyfarthing-dist/commands/tea.md +63 -0
  80. package/pennyfarthing-dist/commands/tech-writer.md +53 -0
  81. package/pennyfarthing-dist/commands/theme-maker.md +671 -0
  82. package/pennyfarthing-dist/commands/update-domain-docs.md +83 -0
  83. package/pennyfarthing-dist/commands/ux-designer.md +62 -0
  84. package/pennyfarthing-dist/commands/work.md +122 -0
  85. package/pennyfarthing-dist/commands/workflow.md +21 -0
  86. package/pennyfarthing-dist/guides/AGENT-COORDINATION.md +480 -0
  87. package/pennyfarthing-dist/guides/HOOKS.md +230 -0
  88. package/pennyfarthing-dist/guides/PROMPT-PATTERNS.md +338 -0
  89. package/pennyfarthing-dist/guides/SESSION-ARTIFACTS.md +193 -0
  90. package/pennyfarthing-dist/guides/agent-behavior.md +238 -0
  91. package/pennyfarthing-dist/guides/agent-template-strategic.md +148 -0
  92. package/pennyfarthing-dist/guides/agent-template-tactical.md +162 -0
  93. package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +746 -0
  94. package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +574 -0
  95. package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +488 -0
  96. package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +402 -0
  97. package/pennyfarthing-dist/guides/permission-protocol.md +188 -0
  98. package/pennyfarthing-dist/guides/persona-loading.md +46 -0
  99. package/pennyfarthing-dist/guides/workflow-schema.md +257 -0
  100. package/pennyfarthing-dist/guides/worktree-mode.md +113 -0
  101. package/pennyfarthing-dist/output-styles/teaching.md +33 -0
  102. package/pennyfarthing-dist/output-styles/terse.md +20 -0
  103. package/pennyfarthing-dist/output-styles/verbose.md +28 -0
  104. package/pennyfarthing-dist/personas/themes/1984.yaml +312 -0
  105. package/pennyfarthing-dist/personas/themes/a-team.yaml +207 -0
  106. package/pennyfarthing-dist/personas/themes/agatha-christie.yaml +300 -0
  107. package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +330 -0
  108. package/pennyfarthing-dist/personas/themes/all-stars.yaml +332 -0
  109. package/pennyfarthing-dist/personas/themes/ancient-philosophers.yaml +320 -0
  110. package/pennyfarthing-dist/personas/themes/ancient-strategists.yaml +306 -0
  111. package/pennyfarthing-dist/personas/themes/arcane.yaml +288 -0
  112. package/pennyfarthing-dist/personas/themes/arthurian-mythos.yaml +331 -0
  113. package/pennyfarthing-dist/personas/themes/avatar-the-last-airbender.yaml +288 -0
  114. package/pennyfarthing-dist/personas/themes/babylon-5.yaml +288 -0
  115. package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +288 -0
  116. package/pennyfarthing-dist/personas/themes/better-call-saul.yaml +288 -0
  117. package/pennyfarthing-dist/personas/themes/big-lebowski.yaml +300 -0
  118. package/pennyfarthing-dist/personas/themes/black-sails.yaml +300 -0
  119. package/pennyfarthing-dist/personas/themes/blade-runner.yaml +295 -0
  120. package/pennyfarthing-dist/personas/themes/bobiverse.yaml +288 -0
  121. package/pennyfarthing-dist/personas/themes/breaking-bad.yaml +327 -0
  122. package/pennyfarthing-dist/personas/themes/catch-22.yaml +316 -0
  123. package/pennyfarthing-dist/personas/themes/classical-composers.yaml +310 -0
  124. package/pennyfarthing-dist/personas/themes/control.yaml +197 -0
  125. package/pennyfarthing-dist/personas/themes/count-of-monte-cristo.yaml +320 -0
  126. package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +323 -0
  127. package/pennyfarthing-dist/personas/themes/deadwood.yaml +300 -0
  128. package/pennyfarthing-dist/personas/themes/dickens.yaml +320 -0
  129. package/pennyfarthing-dist/personas/themes/discworld.yaml +332 -0
  130. package/pennyfarthing-dist/personas/themes/doctor-who.yaml +290 -0
  131. package/pennyfarthing-dist/personas/themes/don-quixote.yaml +320 -0
  132. package/pennyfarthing-dist/personas/themes/dune.yaml +307 -0
  133. package/pennyfarthing-dist/personas/themes/enlightenment-thinkers.yaml +320 -0
  134. package/pennyfarthing-dist/personas/themes/expeditionary-force.yaml +288 -0
  135. package/pennyfarthing-dist/personas/themes/fargo.yaml +330 -0
  136. package/pennyfarthing-dist/personas/themes/film-auteurs.yaml +312 -0
  137. package/pennyfarthing-dist/personas/themes/firefly.yaml +328 -0
  138. package/pennyfarthing-dist/personas/themes/foundation.yaml +290 -0
  139. package/pennyfarthing-dist/personas/themes/futurama.yaml +321 -0
  140. package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +290 -0
  141. package/pennyfarthing-dist/personas/themes/gilligans-island.yaml +243 -0
  142. package/pennyfarthing-dist/personas/themes/gothic-literature.yaml +308 -0
  143. package/pennyfarthing-dist/personas/themes/great-gatsby.yaml +308 -0
  144. package/pennyfarthing-dist/personas/themes/greek-mythology.yaml +330 -0
  145. package/pennyfarthing-dist/personas/themes/hannibal.yaml +300 -0
  146. package/pennyfarthing-dist/personas/themes/harry-potter.yaml +324 -0
  147. package/pennyfarthing-dist/personas/themes/his-dark-materials.yaml +291 -0
  148. package/pennyfarthing-dist/personas/themes/historical-figures.yaml +288 -0
  149. package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +331 -0
  150. package/pennyfarthing-dist/personas/themes/house-md.yaml +321 -0
  151. package/pennyfarthing-dist/personas/themes/imperial-radch.yaml +289 -0
  152. package/pennyfarthing-dist/personas/themes/inspector-morse.yaml +300 -0
  153. package/pennyfarthing-dist/personas/themes/jane-austen.yaml +287 -0
  154. package/pennyfarthing-dist/personas/themes/jazz-legends.yaml +320 -0
  155. package/pennyfarthing-dist/personas/themes/justified.yaml +300 -0
  156. package/pennyfarthing-dist/personas/themes/legion-of-doom.yaml +219 -0
  157. package/pennyfarthing-dist/personas/themes/les-miserables.yaml +299 -0
  158. package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +334 -0
  159. package/pennyfarthing-dist/personas/themes/lovecraft-mythos.yaml +334 -0
  160. package/pennyfarthing-dist/personas/themes/mad-max.yaml +355 -0
  161. package/pennyfarthing-dist/personas/themes/mad-men.yaml +289 -0
  162. package/pennyfarthing-dist/personas/themes/marvel-mcu.yaml +300 -0
  163. package/pennyfarthing-dist/personas/themes/mash.yaml +337 -0
  164. package/pennyfarthing-dist/personas/themes/mass-effect.yaml +289 -0
  165. package/pennyfarthing-dist/personas/themes/military-commanders.yaml +306 -0
  166. package/pennyfarthing-dist/personas/themes/moby-dick.yaml +320 -0
  167. package/pennyfarthing-dist/personas/themes/monty-python.yaml +303 -0
  168. package/pennyfarthing-dist/personas/themes/neuromancer.yaml +300 -0
  169. package/pennyfarthing-dist/personas/themes/norse-mythology.yaml +329 -0
  170. package/pennyfarthing-dist/personas/themes/parks-and-rec.yaml +242 -0
  171. package/pennyfarthing-dist/personas/themes/peaky-blinders.yaml +298 -0
  172. package/pennyfarthing-dist/personas/themes/princess-bride.yaml +220 -0
  173. package/pennyfarthing-dist/personas/themes/renaissance-masters.yaml +320 -0
  174. package/pennyfarthing-dist/personas/themes/rome.yaml +300 -0
  175. package/pennyfarthing-dist/personas/themes/russian-masters.yaml +318 -0
  176. package/pennyfarthing-dist/personas/themes/sandman.yaml +288 -0
  177. package/pennyfarthing-dist/personas/themes/scientific-revolutionaries.yaml +320 -0
  178. package/pennyfarthing-dist/personas/themes/shakespeare.yaml +301 -0
  179. package/pennyfarthing-dist/personas/themes/sherlock-holmes.yaml +289 -0
  180. package/pennyfarthing-dist/personas/themes/snow-crash.yaml +288 -0
  181. package/pennyfarthing-dist/personas/themes/software-pioneers.yaml +300 -0
  182. package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +230 -0
  183. package/pennyfarthing-dist/personas/themes/star-trek-tos.yaml +210 -0
  184. package/pennyfarthing-dist/personas/themes/star-wars.yaml +303 -0
  185. package/pennyfarthing-dist/personas/themes/succession.yaml +300 -0
  186. package/pennyfarthing-dist/personas/themes/superfriends.yaml +208 -0
  187. package/pennyfarthing-dist/personas/themes/ted-lasso.yaml +236 -0
  188. package/pennyfarthing-dist/personas/themes/the-americans.yaml +300 -0
  189. package/pennyfarthing-dist/personas/themes/the-crown.yaml +300 -0
  190. package/pennyfarthing-dist/personas/themes/the-expanse.yaml +213 -0
  191. package/pennyfarthing-dist/personas/themes/the-good-place.yaml +322 -0
  192. package/pennyfarthing-dist/personas/themes/the-matrix.yaml +353 -0
  193. package/pennyfarthing-dist/personas/themes/the-odyssey.yaml +300 -0
  194. package/pennyfarthing-dist/personas/themes/the-office.yaml +330 -0
  195. package/pennyfarthing-dist/personas/themes/the-simpsons.yaml +308 -0
  196. package/pennyfarthing-dist/personas/themes/the-sopranos.yaml +300 -0
  197. package/pennyfarthing-dist/personas/themes/the-wire.yaml +311 -0
  198. package/pennyfarthing-dist/personas/themes/the-witcher.yaml +300 -0
  199. package/pennyfarthing-dist/personas/themes/twin-peaks.yaml +302 -0
  200. package/pennyfarthing-dist/personas/themes/vorkosigan-saga.yaml +300 -0
  201. package/pennyfarthing-dist/personas/themes/watchmen.yaml +291 -0
  202. package/pennyfarthing-dist/personas/themes/west-wing.yaml +291 -0
  203. package/pennyfarthing-dist/personas/themes/world-explorers.yaml +320 -0
  204. package/pennyfarthing-dist/personas/themes/wwii-leaders.yaml +307 -0
  205. package/pennyfarthing-dist/personas/themes/x-files.yaml +302 -0
  206. package/pennyfarthing-dist/scripts/README.md +68 -0
  207. package/pennyfarthing-dist/scripts/core/README.md +26 -0
  208. package/pennyfarthing-dist/scripts/core/agent-session.sh +378 -0
  209. package/pennyfarthing-dist/scripts/core/check-context.sh +243 -0
  210. package/pennyfarthing-dist/scripts/core/handoff-marker.sh +90 -0
  211. package/pennyfarthing-dist/scripts/core/prime.sh +136 -0
  212. package/pennyfarthing-dist/scripts/core/run.sh +75 -0
  213. package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +21 -0
  214. package/pennyfarthing-dist/scripts/git/README.md +25 -0
  215. package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +226 -0
  216. package/pennyfarthing-dist/scripts/git/git-status-all.sh +127 -0
  217. package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +91 -0
  218. package/pennyfarthing-dist/scripts/git/release.sh +198 -0
  219. package/pennyfarthing-dist/scripts/git/worktree-manager.sh +494 -0
  220. package/pennyfarthing-dist/scripts/hooks/README.md +32 -0
  221. package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +60 -0
  222. package/pennyfarthing-dist/scripts/hooks/context-warning.sh +65 -0
  223. package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +35 -0
  224. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +166 -0
  225. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +50 -0
  226. package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +71 -0
  227. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +54 -0
  228. package/pennyfarthing-dist/scripts/hooks/session-start.sh +97 -0
  229. package/pennyfarthing-dist/scripts/hooks/session-stop.sh +58 -0
  230. package/pennyfarthing-dist/scripts/jira/README.md +33 -0
  231. package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +101 -0
  232. package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +97 -0
  233. package/pennyfarthing-dist/scripts/jira/jira-bidirectional-sync.mjs +327 -0
  234. package/pennyfarthing-dist/scripts/jira/jira-bidirectional-sync.test.mjs +503 -0
  235. package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +164 -0
  236. package/pennyfarthing-dist/scripts/jira/jira-lib.mjs +443 -0
  237. package/pennyfarthing-dist/scripts/jira/jira-lib.sh +464 -0
  238. package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +266 -0
  239. package/pennyfarthing-dist/scripts/jira/jira-sync-story.mjs +208 -0
  240. package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +8 -0
  241. package/pennyfarthing-dist/scripts/jira/jira-sync.mjs +198 -0
  242. package/pennyfarthing-dist/scripts/jira/jira-sync.sh +8 -0
  243. package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +104 -0
  244. package/pennyfarthing-dist/scripts/jira/sync-epic-to-jira.sh +16 -0
  245. package/pennyfarthing-dist/scripts/lib/README.md +29 -0
  246. package/pennyfarthing-dist/scripts/lib/background-tasks.sh +177 -0
  247. package/pennyfarthing-dist/scripts/lib/checkpoint.sh +136 -0
  248. package/pennyfarthing-dist/scripts/lib/common.sh +157 -0
  249. package/pennyfarthing-dist/scripts/lib/file-lock.sh +269 -0
  250. package/pennyfarthing-dist/scripts/lib/find-root.sh +35 -0
  251. package/pennyfarthing-dist/scripts/lib/logging.sh +186 -0
  252. package/pennyfarthing-dist/scripts/lib/retry.sh +76 -0
  253. package/pennyfarthing-dist/scripts/misc/README.md +44 -0
  254. package/pennyfarthing-dist/scripts/misc/add-short-names.mjs +264 -0
  255. package/pennyfarthing-dist/scripts/misc/backlog.sh +91 -0
  256. package/pennyfarthing-dist/scripts/misc/check-status.sh +247 -0
  257. package/pennyfarthing-dist/scripts/misc/deploy.sh +284 -0
  258. package/pennyfarthing-dist/scripts/misc/doctor-dogfood.sh +392 -0
  259. package/pennyfarthing-dist/scripts/misc/find-related-work.sh +231 -0
  260. package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +110 -0
  261. package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +74 -0
  262. package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.mjs +474 -0
  263. package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +9 -0
  264. package/pennyfarthing-dist/scripts/misc/repo-scan.sh +141 -0
  265. package/pennyfarthing-dist/scripts/misc/repo-utils.sh +778 -0
  266. package/pennyfarthing-dist/scripts/misc/run-ci.sh +219 -0
  267. package/pennyfarthing-dist/scripts/misc/run-timestamp.sh +7 -0
  268. package/pennyfarthing-dist/scripts/misc/session-cleanup.sh +319 -0
  269. package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +193 -0
  270. package/pennyfarthing-dist/scripts/misc/statusline.sh +259 -0
  271. package/pennyfarthing-dist/scripts/misc/uninstall.sh +270 -0
  272. package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +160 -0
  273. package/pennyfarthing-dist/scripts/sprint/README.md +29 -0
  274. package/pennyfarthing-dist/scripts/sprint/archive-story.sh +135 -0
  275. package/pennyfarthing-dist/scripts/sprint/available-stories.sh +97 -0
  276. package/pennyfarthing-dist/scripts/sprint/check-story.sh +164 -0
  277. package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +58 -0
  278. package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +69 -0
  279. package/pennyfarthing-dist/scripts/sprint/list-future.sh +151 -0
  280. package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +116 -0
  281. package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +164 -0
  282. package/pennyfarthing-dist/scripts/sprint/sprint-common.sh +421 -0
  283. package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +39 -0
  284. package/pennyfarthing-dist/scripts/sprint/sprint-metrics.sh +241 -0
  285. package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +134 -0
  286. package/pennyfarthing-dist/scripts/story/README.md +23 -0
  287. package/pennyfarthing-dist/scripts/story/create-story.sh +159 -0
  288. package/pennyfarthing-dist/scripts/story/size-story.sh +198 -0
  289. package/pennyfarthing-dist/scripts/story/story-template.sh +162 -0
  290. package/pennyfarthing-dist/scripts/test/README.md +23 -0
  291. package/pennyfarthing-dist/scripts/test/ground-truth-judge.py +289 -0
  292. package/pennyfarthing-dist/scripts/test/swebench-judge.py +400 -0
  293. package/pennyfarthing-dist/scripts/test/test-cache.sh +165 -0
  294. package/pennyfarthing-dist/scripts/test/test-setup.sh +337 -0
  295. package/pennyfarthing-dist/scripts/tests/check.test.sh +582 -0
  296. package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +515 -0
  297. package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +599 -0
  298. package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +332 -0
  299. package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +573 -0
  300. package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +859 -0
  301. package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +662 -0
  302. package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +589 -0
  303. package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +105 -0
  304. package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +597 -0
  305. package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +514 -0
  306. package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +517 -0
  307. package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +331 -0
  308. package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +647 -0
  309. package/pennyfarthing-dist/scripts/theme/README.md +22 -0
  310. package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +203 -0
  311. package/pennyfarthing-dist/scripts/theme/list-themes.sh +73 -0
  312. package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +97 -0
  313. package/pennyfarthing-dist/scripts/workflow/README.md +28 -0
  314. package/pennyfarthing-dist/scripts/workflow/check.sh +497 -0
  315. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +159 -0
  316. package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +228 -0
  317. package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +91 -0
  318. package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +163 -0
  319. package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +138 -0
  320. package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +256 -0
  321. package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +167 -0
  322. package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +242 -0
  323. package/pennyfarthing-dist/skills/changelog/SKILL.md +367 -0
  324. package/pennyfarthing-dist/skills/code-review/SKILL.md +168 -0
  325. package/pennyfarthing-dist/skills/context-engineering/SKILL.md +274 -0
  326. package/pennyfarthing-dist/skills/cyclist/SKILL.md +88 -0
  327. package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +437 -0
  328. package/pennyfarthing-dist/skills/finalize-run/SKILL.md +258 -0
  329. package/pennyfarthing-dist/skills/jira/SKILL.md +484 -0
  330. package/pennyfarthing-dist/skills/judge/SKILL.md +579 -0
  331. package/pennyfarthing-dist/skills/just/SKILL.md +403 -0
  332. package/pennyfarthing-dist/skills/mermaid/SKILL.md +240 -0
  333. package/pennyfarthing-dist/skills/otel/skill.md +223 -0
  334. package/pennyfarthing-dist/skills/permissions/skill.md +172 -0
  335. package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +178 -0
  336. package/pennyfarthing-dist/skills/skill-registry.schema.json +107 -0
  337. package/pennyfarthing-dist/skills/skill-registry.yaml +357 -0
  338. package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +101 -0
  339. package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +97 -0
  340. package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +164 -0
  341. package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +101 -0
  342. package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +116 -0
  343. package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +164 -0
  344. package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +39 -0
  345. package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +147 -0
  346. package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +104 -0
  347. package/pennyfarthing-dist/skills/sprint/skill.md +465 -0
  348. package/pennyfarthing-dist/skills/story/scripts/create-story.sh +159 -0
  349. package/pennyfarthing-dist/skills/story/scripts/size-story.sh +198 -0
  350. package/pennyfarthing-dist/skills/story/scripts/story-template.sh +162 -0
  351. package/pennyfarthing-dist/skills/story/skill.md +219 -0
  352. package/pennyfarthing-dist/skills/systematic-debugging/SKILL.md +390 -0
  353. package/pennyfarthing-dist/skills/testing/SKILL.md +99 -0
  354. package/pennyfarthing-dist/skills/testing/references/troubleshooting.md +124 -0
  355. package/pennyfarthing-dist/skills/theme/skill.md +129 -0
  356. package/pennyfarthing-dist/skills/theme-creation/SKILL.md +169 -0
  357. package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +91 -0
  358. package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +163 -0
  359. package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +138 -0
  360. package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +273 -0
  361. package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +167 -0
  362. package/pennyfarthing-dist/skills/workflow/skill.md +337 -0
  363. package/pennyfarthing-dist/skills/yq/SKILL.md +264 -0
  364. package/pennyfarthing-dist/templates/LEADERBOARD.schema.yaml +187 -0
  365. package/pennyfarthing-dist/templates/LEADERBOARD.template.md +59 -0
  366. package/pennyfarthing-dist/templates/agent-scopes.yaml.template +276 -0
  367. package/pennyfarthing-dist/templates/pennyfarthing-settings.yaml.template +61 -0
  368. package/pennyfarthing-dist/templates/persona-config.yaml.template +22 -0
  369. package/pennyfarthing-dist/templates/preferences.yaml.template +15 -0
  370. package/pennyfarthing-dist/templates/settings.local.json.template +90 -0
  371. package/pennyfarthing-dist/templates/setup-env.sh.template +18 -0
  372. package/pennyfarthing-dist/templates/shared-context.md.template +70 -0
  373. package/pennyfarthing-dist/templates/sidecar/decisions.md.template +40 -0
  374. package/pennyfarthing-dist/templates/sidecar/gotchas.md.template +37 -0
  375. package/pennyfarthing-dist/templates/sidecar/patterns.md.template +34 -0
  376. package/pennyfarthing-dist/workflows/agent-docs.yaml +70 -0
  377. package/pennyfarthing-dist/workflows/architecture/steps/step-01-initialize.md +101 -0
  378. package/pennyfarthing-dist/workflows/architecture/steps/step-01b-continue.md +93 -0
  379. package/pennyfarthing-dist/workflows/architecture/steps/step-02-context.md +115 -0
  380. package/pennyfarthing-dist/workflows/architecture/steps/step-03-patterns.md +133 -0
  381. package/pennyfarthing-dist/workflows/architecture/steps/step-04-components.md +138 -0
  382. package/pennyfarthing-dist/workflows/architecture/steps/step-05-interfaces.md +133 -0
  383. package/pennyfarthing-dist/workflows/architecture/steps/step-06-risks.md +142 -0
  384. package/pennyfarthing-dist/workflows/architecture/steps/step-07-document.md +160 -0
  385. package/pennyfarthing-dist/workflows/architecture/templates/architecture-decision.md +102 -0
  386. package/pennyfarthing-dist/workflows/architecture.yaml +65 -0
  387. package/pennyfarthing-dist/workflows/bdd.yaml +60 -0
  388. package/pennyfarthing-dist/workflows/brainstorming/brain-methods.csv +62 -0
  389. package/pennyfarthing-dist/workflows/brainstorming/checklist.md +44 -0
  390. package/pennyfarthing-dist/workflows/brainstorming/instructions.md +736 -0
  391. package/pennyfarthing-dist/workflows/brainstorming/workflow.yaml +49 -0
  392. package/pennyfarthing-dist/workflows/code-review/checklist.md +23 -0
  393. package/pennyfarthing-dist/workflows/code-review/instructions.md +234 -0
  394. package/pennyfarthing-dist/workflows/code-review/workflow.yaml +51 -0
  395. package/pennyfarthing-dist/workflows/dev-story/checklist.md +80 -0
  396. package/pennyfarthing-dist/workflows/dev-story/instructions.xml +410 -0
  397. package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +50 -0
  398. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-01-validate-prerequisites.md +256 -0
  399. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-02-design-epics.md +233 -0
  400. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-03-create-stories.md +272 -0
  401. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-04-final-validation.md +145 -0
  402. package/pennyfarthing-dist/workflows/epics-and-stories/templates/epics-template.md +57 -0
  403. package/pennyfarthing-dist/workflows/epics-and-stories/workflow.yaml +27 -0
  404. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-01-document-discovery.md +190 -0
  405. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-02-prd-analysis.md +178 -0
  406. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
  407. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-04-ux-alignment.md +139 -0
  408. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
  409. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-06-final-assessment.md +133 -0
  410. package/pennyfarthing-dist/workflows/implementation-readiness/templates/readiness-report-template.md +4 -0
  411. package/pennyfarthing-dist/workflows/implementation-readiness/workflow.yaml +40 -0
  412. package/pennyfarthing-dist/workflows/prd/data/domain-complexity.csv +13 -0
  413. package/pennyfarthing-dist/workflows/prd/data/prd-purpose.md +197 -0
  414. package/pennyfarthing-dist/workflows/prd/data/project-types.csv +11 -0
  415. package/pennyfarthing-dist/workflows/prd/steps-c/step-01-init.md +191 -0
  416. package/pennyfarthing-dist/workflows/prd/steps-c/step-01b-continue.md +153 -0
  417. package/pennyfarthing-dist/workflows/prd/steps-c/step-02-discovery.md +224 -0
  418. package/pennyfarthing-dist/workflows/prd/steps-c/step-03-success.md +226 -0
  419. package/pennyfarthing-dist/workflows/prd/steps-c/step-04-journeys.md +213 -0
  420. package/pennyfarthing-dist/workflows/prd/steps-c/step-05-domain.md +207 -0
  421. package/pennyfarthing-dist/workflows/prd/steps-c/step-06-innovation.md +226 -0
  422. package/pennyfarthing-dist/workflows/prd/steps-c/step-07-project-type.md +237 -0
  423. package/pennyfarthing-dist/workflows/prd/steps-c/step-08-scoping.md +228 -0
  424. package/pennyfarthing-dist/workflows/prd/steps-c/step-09-functional.md +231 -0
  425. package/pennyfarthing-dist/workflows/prd/steps-c/step-10-nonfunctional.md +242 -0
  426. package/pennyfarthing-dist/workflows/prd/steps-c/step-11-polish.md +217 -0
  427. package/pennyfarthing-dist/workflows/prd/steps-c/step-12-complete.md +180 -0
  428. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01-discovery.md +247 -0
  429. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
  430. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-02-review.md +249 -0
  431. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-03-edit.md +253 -0
  432. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-04-complete.md +168 -0
  433. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-01-discovery.md +218 -0
  434. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02-format-detection.md +191 -0
  435. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02b-parity-check.md +209 -0
  436. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-03-density-validation.md +174 -0
  437. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
  438. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-05-measurability-validation.md +228 -0
  439. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-06-traceability-validation.md +217 -0
  440. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
  441. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
  442. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-09-project-type-validation.md +263 -0
  443. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-10-smart-validation.md +209 -0
  444. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
  445. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-12-completeness-validation.md +242 -0
  446. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-13-report-complete.md +232 -0
  447. package/pennyfarthing-dist/workflows/prd/templates/prd-template.md +10 -0
  448. package/pennyfarthing-dist/workflows/prd/workflow.yaml +42 -0
  449. package/pennyfarthing-dist/workflows/product-brief/steps/step-01-init.md +177 -0
  450. package/pennyfarthing-dist/workflows/product-brief/steps/step-01b-continue.md +161 -0
  451. package/pennyfarthing-dist/workflows/product-brief/steps/step-02-vision.md +199 -0
  452. package/pennyfarthing-dist/workflows/product-brief/steps/step-03-users.md +202 -0
  453. package/pennyfarthing-dist/workflows/product-brief/steps/step-04-metrics.md +205 -0
  454. package/pennyfarthing-dist/workflows/product-brief/steps/step-05-scope.md +219 -0
  455. package/pennyfarthing-dist/workflows/product-brief/steps/step-06-complete.md +194 -0
  456. package/pennyfarthing-dist/workflows/product-brief/templates/product-brief.template.md +10 -0
  457. package/pennyfarthing-dist/workflows/product-brief/workflow.yaml +31 -0
  458. package/pennyfarthing-dist/workflows/project-context/project-context-template.md +21 -0
  459. package/pennyfarthing-dist/workflows/project-context/steps/step-01-discover.md +184 -0
  460. package/pennyfarthing-dist/workflows/project-context/steps/step-02-generate.md +318 -0
  461. package/pennyfarthing-dist/workflows/project-context/steps/step-03-complete.md +278 -0
  462. package/pennyfarthing-dist/workflows/project-context/workflow.yaml +27 -0
  463. package/pennyfarthing-dist/workflows/quick-dev/steps/step-01-mode-detection.md +156 -0
  464. package/pennyfarthing-dist/workflows/quick-dev/steps/step-02-context-gathering.md +120 -0
  465. package/pennyfarthing-dist/workflows/quick-dev/steps/step-03-execute.md +113 -0
  466. package/pennyfarthing-dist/workflows/quick-dev/steps/step-04-self-check.md +113 -0
  467. package/pennyfarthing-dist/workflows/quick-dev/steps/step-05-adversarial-review.md +106 -0
  468. package/pennyfarthing-dist/workflows/quick-dev/steps/step-06-resolve-findings.md +140 -0
  469. package/pennyfarthing-dist/workflows/quick-dev/workflow.yaml +27 -0
  470. package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +189 -0
  471. package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +144 -0
  472. package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +128 -0
  473. package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +191 -0
  474. package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +74 -0
  475. package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +27 -0
  476. package/pennyfarthing-dist/workflows/research/steps-domain/step-01-init.md +137 -0
  477. package/pennyfarthing-dist/workflows/research/steps-domain/step-02-domain-analysis.md +229 -0
  478. package/pennyfarthing-dist/workflows/research/steps-domain/step-03-competitive-landscape.md +238 -0
  479. package/pennyfarthing-dist/workflows/research/steps-domain/step-04-regulatory-focus.md +206 -0
  480. package/pennyfarthing-dist/workflows/research/steps-domain/step-05-technical-trends.md +234 -0
  481. package/pennyfarthing-dist/workflows/research/steps-domain/step-06-research-synthesis.md +443 -0
  482. package/pennyfarthing-dist/workflows/research/steps-market/step-01-init.md +182 -0
  483. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-behavior.md +237 -0
  484. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-insights.md +200 -0
  485. package/pennyfarthing-dist/workflows/research/steps-market/step-03-customer-pain-points.md +249 -0
  486. package/pennyfarthing-dist/workflows/research/steps-market/step-04-customer-decisions.md +259 -0
  487. package/pennyfarthing-dist/workflows/research/steps-market/step-05-competitive-analysis.md +177 -0
  488. package/pennyfarthing-dist/workflows/research/steps-market/step-06-research-completion.md +475 -0
  489. package/pennyfarthing-dist/workflows/research/steps-technical/step-01-init.md +137 -0
  490. package/pennyfarthing-dist/workflows/research/steps-technical/step-02-technical-overview.md +239 -0
  491. package/pennyfarthing-dist/workflows/research/steps-technical/step-03-integration-patterns.md +248 -0
  492. package/pennyfarthing-dist/workflows/research/steps-technical/step-04-architectural-patterns.md +202 -0
  493. package/pennyfarthing-dist/workflows/research/steps-technical/step-05-implementation-research.md +239 -0
  494. package/pennyfarthing-dist/workflows/research/steps-technical/step-06-research-synthesis.md +486 -0
  495. package/pennyfarthing-dist/workflows/research/templates/research.template.md +29 -0
  496. package/pennyfarthing-dist/workflows/research/workflow.yaml +45 -0
  497. package/pennyfarthing-dist/workflows/retrospective/checklist.md +31 -0
  498. package/pennyfarthing-dist/workflows/retrospective/instructions.md +1443 -0
  499. package/pennyfarthing-dist/workflows/retrospective/workflow.yaml +50 -0
  500. package/pennyfarthing-dist/workflows/sprint-planning/checklist.md +33 -0
  501. package/pennyfarthing-dist/workflows/sprint-planning/sprint-status-template.yaml +55 -0
  502. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-01-parse-epic-files.md +54 -0
  503. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-02-build-sprint-status.md +44 -0
  504. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-03-status-detection.md +64 -0
  505. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-04-generate-status-file.md +73 -0
  506. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-05-validate-and-report.md +56 -0
  507. package/pennyfarthing-dist/workflows/sprint-planning/workflow.yaml +34 -0
  508. package/pennyfarthing-dist/workflows/tdd.yaml +50 -0
  509. package/pennyfarthing-dist/workflows/trivial.yaml +40 -0
  510. package/pennyfarthing-dist/workflows/ux-design/steps/step-01-init.md +135 -0
  511. package/pennyfarthing-dist/workflows/ux-design/steps/step-01b-continue.md +127 -0
  512. package/pennyfarthing-dist/workflows/ux-design/steps/step-02-discovery.md +190 -0
  513. package/pennyfarthing-dist/workflows/ux-design/steps/step-03-core-experience.md +216 -0
  514. package/pennyfarthing-dist/workflows/ux-design/steps/step-04-emotional-response.md +219 -0
  515. package/pennyfarthing-dist/workflows/ux-design/steps/step-05-inspiration.md +234 -0
  516. package/pennyfarthing-dist/workflows/ux-design/steps/step-06-design-system.md +252 -0
  517. package/pennyfarthing-dist/workflows/ux-design/steps/step-07-defining-experience.md +254 -0
  518. package/pennyfarthing-dist/workflows/ux-design/steps/step-08-visual-foundation.md +224 -0
  519. package/pennyfarthing-dist/workflows/ux-design/steps/step-09-design-directions.md +224 -0
  520. package/pennyfarthing-dist/workflows/ux-design/steps/step-10-user-journeys.md +241 -0
  521. package/pennyfarthing-dist/workflows/ux-design/steps/step-11-component-strategy.md +248 -0
  522. package/pennyfarthing-dist/workflows/ux-design/steps/step-12-ux-patterns.md +237 -0
  523. package/pennyfarthing-dist/workflows/ux-design/steps/step-13-responsive-accessibility.md +264 -0
  524. package/pennyfarthing-dist/workflows/ux-design/steps/step-14-complete.md +228 -0
  525. package/pennyfarthing-dist/workflows/ux-design/ux-design-template.md +13 -0
  526. package/pennyfarthing-dist/workflows/ux-design/workflow.yaml +41 -0
  527. package/dist/cli/commands/init.js +0 -524
  528. package/dist/cli/commands/init.js.map +0 -1
  529. package/dist/cli/commands/update.js +0 -418
  530. package/dist/cli/commands/update.js.map +0 -1
  531. package/dist/cli/utils/node-modules.d.ts.map +0 -1
  532. package/dist/cli/utils/node-modules.js +0 -31
  533. package/dist/cli/utils/node-modules.js.map +0 -1
  534. package/dist/cli/workspace.test.js +0 -151
  535. package/dist/cli/workspace.test.js.map +0 -1
  536. package/dist/workflow/sm-subagents.test.d.ts +0 -23
  537. package/dist/workflow/sm-subagents.test.js +0 -727
  538. package/dist/workflow/sm-subagents.test.js.map +0 -1
  539. /package/{bin → packages/core/bin}/pennyfarthing.js +0 -0
  540. /package/{dist → packages/core/dist}/bmad/context-reader.d.ts +0 -0
  541. /package/{dist → packages/core/dist}/bmad/context-reader.d.ts.map +0 -0
  542. /package/{dist → packages/core/dist}/bmad/context-reader.js +0 -0
  543. /package/{dist → packages/core/dist}/bmad/context-reader.js.map +0 -0
  544. /package/{dist → packages/core/dist}/bmad/context-reader.test.d.ts +0 -0
  545. /package/{dist → packages/core/dist}/bmad/context-reader.test.d.ts.map +0 -0
  546. /package/{dist → packages/core/dist}/bmad/context-reader.test.js +0 -0
  547. /package/{dist → packages/core/dist}/bmad/context-reader.test.js.map +0 -0
  548. /package/{dist → packages/core/dist}/bmad/epics-parser.d.ts +0 -0
  549. /package/{dist → packages/core/dist}/bmad/epics-parser.d.ts.map +0 -0
  550. /package/{dist → packages/core/dist}/bmad/epics-parser.js +0 -0
  551. /package/{dist → packages/core/dist}/bmad/epics-parser.js.map +0 -0
  552. /package/{dist → packages/core/dist}/bmad/epics-parser.test.d.ts +0 -0
  553. /package/{dist → packages/core/dist}/bmad/epics-parser.test.d.ts.map +0 -0
  554. /package/{dist → packages/core/dist}/bmad/epics-parser.test.js +0 -0
  555. /package/{dist → packages/core/dist}/bmad/epics-parser.test.js.map +0 -0
  556. /package/{dist → packages/core/dist}/bmad/index.d.ts +0 -0
  557. /package/{dist → packages/core/dist}/bmad/index.d.ts.map +0 -0
  558. /package/{dist → packages/core/dist}/bmad/index.js +0 -0
  559. /package/{dist → packages/core/dist}/bmad/index.js.map +0 -0
  560. /package/{dist → packages/core/dist}/bmad/status-sync.d.ts +0 -0
  561. /package/{dist → packages/core/dist}/bmad/status-sync.d.ts.map +0 -0
  562. /package/{dist → packages/core/dist}/bmad/status-sync.js +0 -0
  563. /package/{dist → packages/core/dist}/bmad/status-sync.js.map +0 -0
  564. /package/{dist → packages/core/dist}/bmad/status-sync.test.d.ts +0 -0
  565. /package/{dist → packages/core/dist}/bmad/status-sync.test.d.ts.map +0 -0
  566. /package/{dist → packages/core/dist}/bmad/status-sync.test.js +0 -0
  567. /package/{dist → packages/core/dist}/bmad/status-sync.test.js.map +0 -0
  568. /package/{dist → packages/core/dist}/bmad/story-exporter.d.ts +0 -0
  569. /package/{dist → packages/core/dist}/bmad/story-exporter.d.ts.map +0 -0
  570. /package/{dist → packages/core/dist}/bmad/story-exporter.js +0 -0
  571. /package/{dist → packages/core/dist}/bmad/story-exporter.js.map +0 -0
  572. /package/{dist → packages/core/dist}/bmad/story-exporter.test.d.ts +0 -0
  573. /package/{dist → packages/core/dist}/bmad/story-exporter.test.d.ts.map +0 -0
  574. /package/{dist → packages/core/dist}/bmad/story-exporter.test.js +0 -0
  575. /package/{dist → packages/core/dist}/bmad/story-exporter.test.js.map +0 -0
  576. /package/{dist → packages/core/dist}/bmad/story-parser.d.ts +0 -0
  577. /package/{dist → packages/core/dist}/bmad/story-parser.d.ts.map +0 -0
  578. /package/{dist → packages/core/dist}/bmad/story-parser.js +0 -0
  579. /package/{dist → packages/core/dist}/bmad/story-parser.js.map +0 -0
  580. /package/{dist → packages/core/dist}/bmad/story-parser.test.d.ts +0 -0
  581. /package/{dist → packages/core/dist}/bmad/story-parser.test.d.ts.map +0 -0
  582. /package/{dist → packages/core/dist}/bmad/story-parser.test.js +0 -0
  583. /package/{dist → packages/core/dist}/bmad/story-parser.test.js.map +0 -0
  584. /package/{dist → packages/core/dist}/cli/commands/command.d.ts +0 -0
  585. /package/{dist → packages/core/dist}/cli/commands/command.d.ts.map +0 -0
  586. /package/{dist → packages/core/dist}/cli/commands/command.js +0 -0
  587. /package/{dist → packages/core/dist}/cli/commands/command.js.map +0 -0
  588. /package/{dist → packages/core/dist}/cli/commands/cyclist.d.ts +0 -0
  589. /package/{dist → packages/core/dist}/cli/commands/cyclist.d.ts.map +0 -0
  590. /package/{dist → packages/core/dist}/cli/commands/cyclist.js +0 -0
  591. /package/{dist → packages/core/dist}/cli/commands/cyclist.js.map +0 -0
  592. /package/{dist → packages/core/dist}/cli/commands/cyclist.test.d.ts +0 -0
  593. /package/{dist → packages/core/dist}/cli/commands/cyclist.test.d.ts.map +0 -0
  594. /package/{dist → packages/core/dist}/cli/commands/cyclist.test.js +0 -0
  595. /package/{dist → packages/core/dist}/cli/commands/cyclist.test.js.map +0 -0
  596. /package/{dist → packages/core/dist}/cli/commands/doctor.d.ts +0 -0
  597. /package/{dist → packages/core/dist}/cli/commands/doctor.d.ts.map +0 -0
  598. /package/{dist → packages/core/dist}/cli/commands/doctor.js +0 -0
  599. /package/{dist → packages/core/dist}/cli/commands/doctor.js.map +0 -0
  600. /package/{dist → packages/core/dist}/cli/commands/init.d.ts +0 -0
  601. /package/{dist → packages/core/dist}/cli/commands/init.d.ts.map +0 -0
  602. /package/{dist → packages/core/dist}/cli/commands/skill.d.ts +0 -0
  603. /package/{dist → packages/core/dist}/cli/commands/skill.d.ts.map +0 -0
  604. /package/{dist → packages/core/dist}/cli/commands/skill.js +0 -0
  605. /package/{dist → packages/core/dist}/cli/commands/skill.js.map +0 -0
  606. /package/{dist → packages/core/dist}/cli/commands/theme.d.ts +0 -0
  607. /package/{dist → packages/core/dist}/cli/commands/theme.d.ts.map +0 -0
  608. /package/{dist → packages/core/dist}/cli/commands/theme.js +0 -0
  609. /package/{dist → packages/core/dist}/cli/commands/theme.js.map +0 -0
  610. /package/{dist → packages/core/dist}/cli/commands/uninstall.d.ts +0 -0
  611. /package/{dist → packages/core/dist}/cli/commands/uninstall.d.ts.map +0 -0
  612. /package/{dist → packages/core/dist}/cli/commands/uninstall.js +0 -0
  613. /package/{dist → packages/core/dist}/cli/commands/uninstall.js.map +0 -0
  614. /package/{dist → packages/core/dist}/cli/commands/update.d.ts +0 -0
  615. /package/{dist → packages/core/dist}/cli/commands/update.d.ts.map +0 -0
  616. /package/{dist → packages/core/dist}/cli/commands/version.d.ts +0 -0
  617. /package/{dist → packages/core/dist}/cli/commands/version.d.ts.map +0 -0
  618. /package/{dist → packages/core/dist}/cli/commands/version.js +0 -0
  619. /package/{dist → packages/core/dist}/cli/commands/version.js.map +0 -0
  620. /package/{dist → packages/core/dist}/cli/customization.test.d.ts +0 -0
  621. /package/{dist → packages/core/dist}/cli/customization.test.d.ts.map +0 -0
  622. /package/{dist → packages/core/dist}/cli/customization.test.js +0 -0
  623. /package/{dist → packages/core/dist}/cli/customization.test.js.map +0 -0
  624. /package/{dist → packages/core/dist}/cli/cyclist-migration.test.d.ts +0 -0
  625. /package/{dist → packages/core/dist}/cli/cyclist-migration.test.d.ts.map +0 -0
  626. /package/{dist → packages/core/dist}/cli/cyclist-migration.test.js +0 -0
  627. /package/{dist → packages/core/dist}/cli/cyclist-migration.test.js.map +0 -0
  628. /package/{dist → packages/core/dist}/cli/index.d.ts +0 -0
  629. /package/{dist → packages/core/dist}/cli/index.d.ts.map +0 -0
  630. /package/{dist → packages/core/dist}/cli/index.js +0 -0
  631. /package/{dist → packages/core/dist}/cli/index.js.map +0 -0
  632. /package/{dist → packages/core/dist}/cli/ocean-profiles.test.d.ts +0 -0
  633. /package/{dist → packages/core/dist}/cli/ocean-profiles.test.d.ts.map +0 -0
  634. /package/{dist → packages/core/dist}/cli/ocean-profiles.test.js +0 -0
  635. /package/{dist → packages/core/dist}/cli/ocean-profiles.test.js.map +0 -0
  636. /package/{dist → packages/core/dist}/cli/theme-maker.test.d.ts +0 -0
  637. /package/{dist → packages/core/dist}/cli/theme-maker.test.d.ts.map +0 -0
  638. /package/{dist → packages/core/dist}/cli/theme-maker.test.js +0 -0
  639. /package/{dist → packages/core/dist}/cli/theme-maker.test.js.map +0 -0
  640. /package/{dist → packages/core/dist}/cli/utils/constants.d.ts +0 -0
  641. /package/{dist → packages/core/dist}/cli/utils/constants.d.ts.map +0 -0
  642. /package/{dist → packages/core/dist}/cli/utils/constants.js +0 -0
  643. /package/{dist → packages/core/dist}/cli/utils/constants.js.map +0 -0
  644. /package/{dist → packages/core/dist}/cli/utils/files.d.ts +0 -0
  645. /package/{dist → packages/core/dist}/cli/utils/files.d.ts.map +0 -0
  646. /package/{dist → packages/core/dist}/cli/utils/files.js +0 -0
  647. /package/{dist → packages/core/dist}/cli/utils/files.js.map +0 -0
  648. /package/{dist → packages/core/dist}/cli/utils/logger.d.ts +0 -0
  649. /package/{dist → packages/core/dist}/cli/utils/logger.d.ts.map +0 -0
  650. /package/{dist → packages/core/dist}/cli/utils/logger.js +0 -0
  651. /package/{dist → packages/core/dist}/cli/utils/logger.js.map +0 -0
  652. /package/{dist → packages/core/dist}/cli/utils/manifest.d.ts +0 -0
  653. /package/{dist → packages/core/dist}/cli/utils/manifest.d.ts.map +0 -0
  654. /package/{dist → packages/core/dist}/cli/utils/manifest.js +0 -0
  655. /package/{dist → packages/core/dist}/cli/utils/manifest.js.map +0 -0
  656. /package/{dist → packages/core/dist}/cli/utils/node-modules.d.ts +0 -0
  657. /package/{dist → packages/core/dist}/cli/utils/prompts.d.ts +0 -0
  658. /package/{dist → packages/core/dist}/cli/utils/prompts.d.ts.map +0 -0
  659. /package/{dist → packages/core/dist}/cli/utils/prompts.js +0 -0
  660. /package/{dist → packages/core/dist}/cli/utils/prompts.js.map +0 -0
  661. /package/{dist → packages/core/dist}/cli/utils/symlinks.d.ts +0 -0
  662. /package/{dist → packages/core/dist}/cli/utils/symlinks.d.ts.map +0 -0
  663. /package/{dist → packages/core/dist}/cli/utils/symlinks.js +0 -0
  664. /package/{dist → packages/core/dist}/cli/utils/symlinks.js.map +0 -0
  665. /package/{dist → packages/core/dist}/cli/utils/themes.d.ts +0 -0
  666. /package/{dist → packages/core/dist}/cli/utils/themes.d.ts.map +0 -0
  667. /package/{dist → packages/core/dist}/cli/utils/themes.js +0 -0
  668. /package/{dist → packages/core/dist}/cli/utils/themes.js.map +0 -0
  669. /package/{dist → packages/core/dist}/cli/utils/themes.test.d.ts +0 -0
  670. /package/{dist → packages/core/dist}/cli/utils/themes.test.d.ts.map +0 -0
  671. /package/{dist → packages/core/dist}/cli/utils/themes.test.js +0 -0
  672. /package/{dist → packages/core/dist}/cli/utils/themes.test.js.map +0 -0
  673. /package/{dist → packages/core/dist}/cli/utils/version.d.ts +0 -0
  674. /package/{dist → packages/core/dist}/cli/utils/version.d.ts.map +0 -0
  675. /package/{dist → packages/core/dist}/cli/utils/version.js +0 -0
  676. /package/{dist → packages/core/dist}/cli/utils/version.js.map +0 -0
  677. /package/{dist → packages/core/dist}/cli/workspace.test.d.ts +0 -0
  678. /package/{dist → packages/core/dist}/cli/workspace.test.d.ts.map +0 -0
  679. /package/{dist → packages/core/dist}/index.d.ts +0 -0
  680. /package/{dist → packages/core/dist}/index.d.ts.map +0 -0
  681. /package/{dist → packages/core/dist}/index.js +0 -0
  682. /package/{dist → packages/core/dist}/index.js.map +0 -0
  683. /package/{dist → packages/core/dist}/jira/jira-epic-creation.d.ts +0 -0
  684. /package/{dist → packages/core/dist}/jira/jira-epic-creation.d.ts.map +0 -0
  685. /package/{dist → packages/core/dist}/jira/jira-epic-creation.js +0 -0
  686. /package/{dist → packages/core/dist}/jira/jira-epic-creation.js.map +0 -0
  687. /package/{dist → packages/core/dist}/jira/jira-epic-creation.test.d.ts +0 -0
  688. /package/{dist → packages/core/dist}/jira/jira-epic-creation.test.d.ts.map +0 -0
  689. /package/{dist → packages/core/dist}/jira/jira-epic-creation.test.js +0 -0
  690. /package/{dist → packages/core/dist}/jira/jira-epic-creation.test.js.map +0 -0
  691. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.d.ts +0 -0
  692. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.d.ts.map +0 -0
  693. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.js +0 -0
  694. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.js.map +0 -0
  695. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.test.d.ts +0 -0
  696. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.test.d.ts.map +0 -0
  697. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.test.js +0 -0
  698. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.test.js.map +0 -0
  699. /package/{dist → packages/core/dist}/permissions/index.d.ts +0 -0
  700. /package/{dist → packages/core/dist}/permissions/index.d.ts.map +0 -0
  701. /package/{dist → packages/core/dist}/permissions/index.js +0 -0
  702. /package/{dist → packages/core/dist}/permissions/index.js.map +0 -0
  703. /package/{dist → packages/core/dist}/permissions/permission-schema.d.ts +0 -0
  704. /package/{dist → packages/core/dist}/permissions/permission-schema.d.ts.map +0 -0
  705. /package/{dist → packages/core/dist}/permissions/permission-schema.js +0 -0
  706. /package/{dist → packages/core/dist}/permissions/permission-schema.js.map +0 -0
  707. /package/{dist → packages/core/dist}/permissions/permission-schema.test.d.ts +0 -0
  708. /package/{dist → packages/core/dist}/permissions/permission-schema.test.d.ts.map +0 -0
  709. /package/{dist → packages/core/dist}/permissions/permission-schema.test.js +0 -0
  710. /package/{dist → packages/core/dist}/permissions/permission-schema.test.js.map +0 -0
  711. /package/{dist → packages/core/dist}/scripts/add-ocean-profiles.d.ts +0 -0
  712. /package/{dist → packages/core/dist}/scripts/add-ocean-profiles.d.ts.map +0 -0
  713. /package/{dist → packages/core/dist}/scripts/add-ocean-profiles.js +0 -0
  714. /package/{dist → packages/core/dist}/scripts/add-ocean-profiles.js.map +0 -0
  715. /package/{dist → packages/core/dist}/scripts/benchmark-integration.d.ts +0 -0
  716. /package/{dist → packages/core/dist}/scripts/benchmark-integration.d.ts.map +0 -0
  717. /package/{dist → packages/core/dist}/scripts/benchmark-integration.js +0 -0
  718. /package/{dist → packages/core/dist}/scripts/benchmark-integration.js.map +0 -0
  719. /package/{dist → packages/core/dist}/scripts/benchmark-integration.test.d.ts +0 -0
  720. /package/{dist → packages/core/dist}/scripts/benchmark-integration.test.d.ts.map +0 -0
  721. /package/{dist → packages/core/dist}/scripts/benchmark-integration.test.js +0 -0
  722. /package/{dist → packages/core/dist}/scripts/benchmark-integration.test.js.map +0 -0
  723. /package/{dist → packages/core/dist}/scripts/debugging-scenarios.test.d.ts +0 -0
  724. /package/{dist → packages/core/dist}/scripts/debugging-scenarios.test.d.ts.map +0 -0
  725. /package/{dist → packages/core/dist}/scripts/debugging-scenarios.test.js +0 -0
  726. /package/{dist → packages/core/dist}/scripts/debugging-scenarios.test.js.map +0 -0
  727. /package/{dist → packages/core/dist}/scripts/generate-all-spiders.d.ts +0 -0
  728. /package/{dist → packages/core/dist}/scripts/generate-all-spiders.d.ts.map +0 -0
  729. /package/{dist → packages/core/dist}/scripts/generate-all-spiders.js +0 -0
  730. /package/{dist → packages/core/dist}/scripts/generate-all-spiders.js.map +0 -0
  731. /package/{dist → packages/core/dist}/scripts/generate-report.d.ts +0 -0
  732. /package/{dist → packages/core/dist}/scripts/generate-report.d.ts.map +0 -0
  733. /package/{dist → packages/core/dist}/scripts/generate-report.js +0 -0
  734. /package/{dist → packages/core/dist}/scripts/generate-report.js.map +0 -0
  735. /package/{dist → packages/core/dist}/scripts/generate-report.test.d.ts +0 -0
  736. /package/{dist → packages/core/dist}/scripts/generate-report.test.d.ts.map +0 -0
  737. /package/{dist → packages/core/dist}/scripts/generate-report.test.js +0 -0
  738. /package/{dist → packages/core/dist}/scripts/generate-report.test.js.map +0 -0
  739. /package/{dist → packages/core/dist}/scripts/generate-spider-report.d.ts +0 -0
  740. /package/{dist → packages/core/dist}/scripts/generate-spider-report.d.ts.map +0 -0
  741. /package/{dist → packages/core/dist}/scripts/generate-spider-report.js +0 -0
  742. /package/{dist → packages/core/dist}/scripts/generate-spider-report.js.map +0 -0
  743. /package/{dist → packages/core/dist}/scripts/generate-spider-report.test.d.ts +0 -0
  744. /package/{dist → packages/core/dist}/scripts/generate-spider-report.test.d.ts.map +0 -0
  745. /package/{dist → packages/core/dist}/scripts/generate-spider-report.test.js +0 -0
  746. /package/{dist → packages/core/dist}/scripts/generate-spider-report.test.js.map +0 -0
  747. /package/{dist → packages/core/dist}/scripts/generate-spider.d.ts +0 -0
  748. /package/{dist → packages/core/dist}/scripts/generate-spider.d.ts.map +0 -0
  749. /package/{dist → packages/core/dist}/scripts/generate-spider.js +0 -0
  750. /package/{dist → packages/core/dist}/scripts/generate-spider.js.map +0 -0
  751. /package/{dist → packages/core/dist}/scripts/generate-spider.test.d.ts +0 -0
  752. /package/{dist → packages/core/dist}/scripts/generate-spider.test.d.ts.map +0 -0
  753. /package/{dist → packages/core/dist}/scripts/generate-spider.test.js +0 -0
  754. /package/{dist → packages/core/dist}/scripts/generate-spider.test.js.map +0 -0
  755. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.d.ts +0 -0
  756. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.d.ts.map +0 -0
  757. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.js +0 -0
  758. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.js.map +0 -0
  759. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.test.d.ts +0 -0
  760. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.test.d.ts.map +0 -0
  761. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.test.js +0 -0
  762. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.test.js.map +0 -0
  763. /package/{dist → packages/core/dist}/scripts/run-ci.test.d.ts +0 -0
  764. /package/{dist → packages/core/dist}/scripts/run-ci.test.d.ts.map +0 -0
  765. /package/{dist → packages/core/dist}/scripts/run-ci.test.js +0 -0
  766. /package/{dist → packages/core/dist}/scripts/run-ci.test.js.map +0 -0
  767. /package/{dist → packages/core/dist}/scripts/theme-detail.test.d.ts +0 -0
  768. /package/{dist → packages/core/dist}/scripts/theme-detail.test.d.ts.map +0 -0
  769. /package/{dist → packages/core/dist}/scripts/theme-detail.test.js +0 -0
  770. /package/{dist → packages/core/dist}/scripts/theme-detail.test.js.map +0 -0
  771. /package/{dist → packages/core/dist}/scripts/validate-ocean-profiles.d.ts +0 -0
  772. /package/{dist → packages/core/dist}/scripts/validate-ocean-profiles.d.ts.map +0 -0
  773. /package/{dist → packages/core/dist}/scripts/validate-ocean-profiles.js +0 -0
  774. /package/{dist → packages/core/dist}/scripts/validate-ocean-profiles.js.map +0 -0
  775. /package/{dist → packages/core/dist}/workflow/gate-handler.d.ts +0 -0
  776. /package/{dist → packages/core/dist}/workflow/gate-handler.d.ts.map +0 -0
  777. /package/{dist → packages/core/dist}/workflow/gate-handler.js +0 -0
  778. /package/{dist → packages/core/dist}/workflow/gate-handler.js.map +0 -0
  779. /package/{dist → packages/core/dist}/workflow/gate-handler.test.d.ts +0 -0
  780. /package/{dist → packages/core/dist}/workflow/gate-handler.test.d.ts.map +0 -0
  781. /package/{dist → packages/core/dist}/workflow/gate-handler.test.js +0 -0
  782. /package/{dist → packages/core/dist}/workflow/gate-handler.test.js.map +0 -0
  783. /package/{dist → packages/core/dist}/workflow/generic-handoff.d.ts +0 -0
  784. /package/{dist → packages/core/dist}/workflow/generic-handoff.d.ts.map +0 -0
  785. /package/{dist → packages/core/dist}/workflow/generic-handoff.js +0 -0
  786. /package/{dist → packages/core/dist}/workflow/generic-handoff.js.map +0 -0
  787. /package/{dist → packages/core/dist}/workflow/generic-handoff.test.d.ts +0 -0
  788. /package/{dist → packages/core/dist}/workflow/generic-handoff.test.d.ts.map +0 -0
  789. /package/{dist → packages/core/dist}/workflow/generic-handoff.test.js +0 -0
  790. /package/{dist → packages/core/dist}/workflow/generic-handoff.test.js.map +0 -0
  791. /package/{dist → packages/core/dist}/workflow/generic-sm-finish.d.ts +0 -0
  792. /package/{dist → packages/core/dist}/workflow/generic-sm-finish.d.ts.map +0 -0
  793. /package/{dist → packages/core/dist}/workflow/generic-sm-finish.js +0 -0
  794. /package/{dist → packages/core/dist}/workflow/generic-sm-finish.js.map +0 -0
  795. /package/{dist → packages/core/dist}/workflow/generic-sm-setup.d.ts +0 -0
  796. /package/{dist → packages/core/dist}/workflow/generic-sm-setup.d.ts.map +0 -0
  797. /package/{dist → packages/core/dist}/workflow/generic-sm-setup.js +0 -0
  798. /package/{dist → packages/core/dist}/workflow/generic-sm-setup.js.map +0 -0
  799. /package/{dist → packages/core/dist}/workflow/index.d.ts +0 -0
  800. /package/{dist → packages/core/dist}/workflow/index.d.ts.map +0 -0
  801. /package/{dist → packages/core/dist}/workflow/index.js +0 -0
  802. /package/{dist → packages/core/dist}/workflow/index.js.map +0 -0
  803. /package/{dist → packages/core/dist}/workflow/session-state.d.ts +0 -0
  804. /package/{dist → packages/core/dist}/workflow/session-state.d.ts.map +0 -0
  805. /package/{dist → packages/core/dist}/workflow/session-state.js +0 -0
  806. /package/{dist → packages/core/dist}/workflow/session-state.js.map +0 -0
  807. /package/{dist → packages/core/dist}/workflow/session-state.test.d.ts +0 -0
  808. /package/{dist → packages/core/dist}/workflow/session-state.test.d.ts.map +0 -0
  809. /package/{dist → packages/core/dist}/workflow/session-state.test.js +0 -0
  810. /package/{dist → packages/core/dist}/workflow/session-state.test.js.map +0 -0
  811. /package/{dist → packages/core/dist}/workflow/sm-subagents.test.d.ts.map +0 -0
  812. /package/{dist → packages/core/dist}/workflow/step-parser.d.ts +0 -0
  813. /package/{dist → packages/core/dist}/workflow/step-parser.d.ts.map +0 -0
  814. /package/{dist → packages/core/dist}/workflow/step-parser.js +0 -0
  815. /package/{dist → packages/core/dist}/workflow/step-parser.js.map +0 -0
  816. /package/{dist → packages/core/dist}/workflow/step-parser.test.d.ts +0 -0
  817. /package/{dist → packages/core/dist}/workflow/step-parser.test.d.ts.map +0 -0
  818. /package/{dist → packages/core/dist}/workflow/step-parser.test.js +0 -0
  819. /package/{dist → packages/core/dist}/workflow/step-parser.test.js.map +0 -0
  820. /package/{dist → packages/core/dist}/workflow/story-workflow-routing.test.d.ts +0 -0
  821. /package/{dist → packages/core/dist}/workflow/story-workflow-routing.test.d.ts.map +0 -0
  822. /package/{dist → packages/core/dist}/workflow/story-workflow-routing.test.js +0 -0
  823. /package/{dist → packages/core/dist}/workflow/story-workflow-routing.test.js.map +0 -0
  824. /package/{dist → packages/core/dist}/workflow/test-cache.d.ts +0 -0
  825. /package/{dist → packages/core/dist}/workflow/test-cache.d.ts.map +0 -0
  826. /package/{dist → packages/core/dist}/workflow/test-cache.js +0 -0
  827. /package/{dist → packages/core/dist}/workflow/test-cache.js.map +0 -0
  828. /package/{dist → packages/core/dist}/workflow/test-cache.test.d.ts +0 -0
  829. /package/{dist → packages/core/dist}/workflow/test-cache.test.d.ts.map +0 -0
  830. /package/{dist → packages/core/dist}/workflow/test-cache.test.js +0 -0
  831. /package/{dist → packages/core/dist}/workflow/test-cache.test.js.map +0 -0
  832. /package/{dist → packages/core/dist}/workflow/trimodal.d.ts +0 -0
  833. /package/{dist → packages/core/dist}/workflow/trimodal.d.ts.map +0 -0
  834. /package/{dist → packages/core/dist}/workflow/trimodal.js +0 -0
  835. /package/{dist → packages/core/dist}/workflow/trimodal.js.map +0 -0
  836. /package/{dist → packages/core/dist}/workflow/trimodal.test.d.ts +0 -0
  837. /package/{dist → packages/core/dist}/workflow/trimodal.test.d.ts.map +0 -0
  838. /package/{dist → packages/core/dist}/workflow/trimodal.test.js +0 -0
  839. /package/{dist → packages/core/dist}/workflow/trimodal.test.js.map +0 -0
  840. /package/{dist → packages/core/dist}/workflow/variable-resolver.d.ts +0 -0
  841. /package/{dist → packages/core/dist}/workflow/variable-resolver.d.ts.map +0 -0
  842. /package/{dist → packages/core/dist}/workflow/variable-resolver.js +0 -0
  843. /package/{dist → packages/core/dist}/workflow/variable-resolver.js.map +0 -0
  844. /package/{dist → packages/core/dist}/workflow/variable-resolver.test.d.ts +0 -0
  845. /package/{dist → packages/core/dist}/workflow/variable-resolver.test.d.ts.map +0 -0
  846. /package/{dist → packages/core/dist}/workflow/variable-resolver.test.js +0 -0
  847. /package/{dist → packages/core/dist}/workflow/variable-resolver.test.js.map +0 -0
  848. /package/{dist → packages/core/dist}/workflow/workflow-executor.d.ts +0 -0
  849. /package/{dist → packages/core/dist}/workflow/workflow-executor.d.ts.map +0 -0
  850. /package/{dist → packages/core/dist}/workflow/workflow-executor.js +0 -0
  851. /package/{dist → packages/core/dist}/workflow/workflow-executor.js.map +0 -0
  852. /package/{dist → packages/core/dist}/workflow/workflow-executor.test.d.ts +0 -0
  853. /package/{dist → packages/core/dist}/workflow/workflow-executor.test.d.ts.map +0 -0
  854. /package/{dist → packages/core/dist}/workflow/workflow-executor.test.js +0 -0
  855. /package/{dist → packages/core/dist}/workflow/workflow-executor.test.js.map +0 -0
  856. /package/{dist → packages/core/dist}/workflow/workflow-loader.d.ts +0 -0
  857. /package/{dist → packages/core/dist}/workflow/workflow-loader.d.ts.map +0 -0
  858. /package/{dist → packages/core/dist}/workflow/workflow-loader.js +0 -0
  859. /package/{dist → packages/core/dist}/workflow/workflow-loader.js.map +0 -0
  860. /package/{dist → packages/core/dist}/workflow/workflow-loader.test.d.ts +0 -0
  861. /package/{dist → packages/core/dist}/workflow/workflow-loader.test.d.ts.map +0 -0
  862. /package/{dist → packages/core/dist}/workflow/workflow-loader.test.js +0 -0
  863. /package/{dist → packages/core/dist}/workflow/workflow-loader.test.js.map +0 -0
  864. /package/{dist → packages/core/dist}/workflow/workflow-migration.test.d.ts +0 -0
  865. /package/{dist → packages/core/dist}/workflow/workflow-migration.test.d.ts.map +0 -0
  866. /package/{dist → packages/core/dist}/workflow/workflow-migration.test.js +0 -0
  867. /package/{dist → packages/core/dist}/workflow/workflow-migration.test.js.map +0 -0
  868. /package/{dist → packages/core/dist}/workflow/workflow-permissions.d.ts +0 -0
  869. /package/{dist → packages/core/dist}/workflow/workflow-permissions.d.ts.map +0 -0
  870. /package/{dist → packages/core/dist}/workflow/workflow-permissions.js +0 -0
  871. /package/{dist → packages/core/dist}/workflow/workflow-permissions.js.map +0 -0
  872. /package/{dist → packages/core/dist}/workflow/workflow-permissions.test.d.ts +0 -0
  873. /package/{dist → packages/core/dist}/workflow/workflow-permissions.test.d.ts.map +0 -0
  874. /package/{dist → packages/core/dist}/workflow/workflow-permissions.test.js +0 -0
  875. /package/{dist → packages/core/dist}/workflow/workflow-permissions.test.js.map +0 -0
  876. /package/{dist → packages/core/dist}/workflow/workflow-router.d.ts +0 -0
  877. /package/{dist → packages/core/dist}/workflow/workflow-router.d.ts.map +0 -0
  878. /package/{dist → packages/core/dist}/workflow/workflow-router.js +0 -0
  879. /package/{dist → packages/core/dist}/workflow/workflow-router.js.map +0 -0
  880. /package/{dist → packages/core/dist}/workflow/workflow-router.test.d.ts +0 -0
  881. /package/{dist → packages/core/dist}/workflow/workflow-router.test.d.ts.map +0 -0
  882. /package/{dist → packages/core/dist}/workflow/workflow-router.test.js +0 -0
  883. /package/{dist → packages/core/dist}/workflow/workflow-router.test.js.map +0 -0
  884. /package/{dist → packages/core/dist}/workflow/workflow-schema.d.ts +0 -0
  885. /package/{dist → packages/core/dist}/workflow/workflow-schema.d.ts.map +0 -0
  886. /package/{dist → packages/core/dist}/workflow/workflow-schema.js +0 -0
  887. /package/{dist → packages/core/dist}/workflow/workflow-schema.js.map +0 -0
  888. /package/{dist → packages/core/dist}/workflow/workflow-schema.test.d.ts +0 -0
  889. /package/{dist → packages/core/dist}/workflow/workflow-schema.test.d.ts.map +0 -0
  890. /package/{dist → packages/core/dist}/workflow/workflow-schema.test.js +0 -0
  891. /package/{dist → packages/core/dist}/workflow/workflow-schema.test.js.map +0 -0
  892. /package/{dist → packages/core/dist}/workflow/workflow-stepped-schema.test.d.ts +0 -0
  893. /package/{dist → packages/core/dist}/workflow/workflow-stepped-schema.test.d.ts.map +0 -0
  894. /package/{dist → packages/core/dist}/workflow/workflow-stepped-schema.test.js +0 -0
  895. /package/{dist → packages/core/dist}/workflow/workflow-stepped-schema.test.js.map +0 -0
@@ -0,0 +1,746 @@
1
+ # Approval Gates Pattern
2
+
3
+ **Pattern Type:** Human-in-the-Loop Verification
4
+ **Agents Involved:** Any agent requiring external validation
5
+ **Coordination Mechanism:** Assessment-first protocol with verdict-based routing
6
+
7
+ ## Problem Statement
8
+
9
+ Autonomous agent workflows need controlled decision points to ensure quality and maintain human oversight:
10
+
11
+ 1. **Quality Escapes:** Without explicit gates, flawed work may proceed unchecked through the workflow
12
+ 2. **Lost Accountability:** Decisions made without human awareness create auditability gaps
13
+ 3. **Uncontrolled Progression:** Workflows advance even when conditions for success aren't met
14
+ 4. **Context Loss:** State changes happen silently, making recovery and debugging difficult
15
+
16
+ Without approval gates, workflows may:
17
+ - Ship broken code that tests don't catch
18
+ - Make irreversible changes without confirmation
19
+ - Skip critical verification steps under time pressure
20
+ - Lose human oversight of important decisions
21
+
22
+ ## Solution
23
+
24
+ Implement **explicit verification points** where workflow progression requires passing a gate condition. Gates can be automated (tests must pass), require human review (Reviewer approval), or request user decisions (AskUserQuestion).
25
+
26
+ ```
27
+ Workflow Stage
28
+
29
+
30
+ ┌─────────────────┐
31
+ │ APPROVAL GATE │
32
+ │ (verification) │
33
+ └────────┬────────┘
34
+
35
+ ┌────┴────┐
36
+ │ │
37
+ PASS FAIL
38
+ │ │
39
+ ▼ ▼
40
+ Continue Block/Route
41
+ Workflow Back
42
+ ```
43
+
44
+ The key insight: **Make workflow progression conditional on explicit verification** rather than allowing autonomous advancement.
45
+
46
+ ### Four Gate Types
47
+
48
+ 1. **Automated Gates** - Mechanical checks that must pass (tests, lint, pre-flight)
49
+ 2. **Human Review Gates** - Expert judgment required before proceeding
50
+ 3. **User Decision Gates** - Interactive choices via AskUserQuestion
51
+ 4. **Plan Approval Gates** - Confirmation of proposed approach via EnterPlanMode
52
+
53
+ ## State Diagram
54
+
55
+ ```mermaid
56
+ stateDiagram-v2
57
+ [*] --> WORK_IN_PROGRESS: Agent working
58
+
59
+ WORK_IN_PROGRESS --> GATE_CHECK: Work complete
60
+
61
+ state GATE_CHECK {
62
+ [*] --> AUTOMATED: Pre-flight checks
63
+ AUTOMATED --> REVIEW: Checks pass
64
+ AUTOMATED --> BLOCKED: Checks fail
65
+ REVIEW --> DECISION: Reviewer verdict
66
+ }
67
+
68
+ DECISION --> APPROVED: Pass
69
+ DECISION --> REJECTED: Fail
70
+
71
+ APPROVED --> NEXT_STAGE: Continue workflow
72
+ REJECTED --> WORK_IN_PROGRESS: Fix and retry
73
+ BLOCKED --> WORK_IN_PROGRESS: Address failures
74
+
75
+ NEXT_STAGE --> [*]: Workflow proceeds
76
+
77
+ note right of AUTOMATED: Tests, lint, pre-flight
78
+ note right of REVIEW: Human judgment
79
+ note right of DECISION: APPROVE or REJECT
80
+ ```
81
+
82
+ ### ASCII Alternative
83
+
84
+ ```
85
+ ┌─────────────────────────────────────────────────────────────────────────┐
86
+ │ APPROVAL GATES PATTERN │
87
+ └─────────────────────────────────────────────────────────────────────────┘
88
+
89
+ ┌───────────────────┐
90
+ │ WORK_IN_PROGRESS │
91
+ │ (agent works) │
92
+ └─────────┬─────────┘
93
+
94
+ │ Work complete, assessment written
95
+
96
+
97
+ ┌───────────────────┐
98
+ │ AUTOMATED GATE │◄─── Tests, lint, pre-flight checks
99
+ │ (mechanical) │
100
+ └─────────┬─────────┘
101
+
102
+ ┌────┴────┐
103
+ │ │
104
+ PASS FAIL
105
+ │ │
106
+ ▼ └──────────────────────────────┐
107
+ ┌───────────────────┐ │
108
+ │ HUMAN REVIEW │◄─── Reviewer analyzes │
109
+ │ (judgment) │ code/docs │
110
+ └─────────┬─────────┘ │
111
+ │ │
112
+ ┌────┴────┐ │
113
+ │ │ │
114
+ APPROVE REJECT │
115
+ │ │ │
116
+ ▼ └──────────────────────────────┤
117
+ ┌───────────────────┐ │
118
+ │ NEXT STAGE │ │
119
+ │ (continues) │ │
120
+ └───────────────────┘ │
121
+
122
+ ┌─────────────────────────────────────────────┘
123
+
124
+
125
+ ┌───────────────────┐
126
+ │ WORK_IN_PROGRESS │◄─── Fix issues, retry gate
127
+ │ (fix & retry) │
128
+ └───────────────────┘
129
+ ```
130
+
131
+ ### The Rejection Loop
132
+
133
+ ```
134
+ ┌─────────────────────────────────────────────────────────────────────────┐
135
+ │ REJECTION LOOP │
136
+ └─────────────────────────────────────────────────────────────────────────┘
137
+
138
+ Attempt 1 Attempt 2
139
+ ┌─────────────────────┐ ┌─────────────────────┐
140
+ │ │ │ │
141
+ │ Dev implements │ │ Dev fixes issues │
142
+ │ ↓ │ │ ↓ │
143
+ │ Tests GREEN │ │ Tests GREEN │
144
+ │ ↓ │ │ ↓ │
145
+ │ Reviewer reviews │ │ Reviewer reviews │
146
+ │ ↓ │ │ ↓ │
147
+ │ REJECTED (3 issues)│─────►│ APPROVED │
148
+ │ │ │ ↓ │
149
+ └─────────────────────┘ │ Continue to SM │
150
+ │ │
151
+ └─────────────────────┘
152
+
153
+ The loop continues until:
154
+ - All Critical/Major issues resolved
155
+ - Reviewer approves
156
+ - Maximum retry limit (organizational choice)
157
+ ```
158
+
159
+ ## Implementation
160
+
161
+ ### Gate Type 1: Automated Gates
162
+
163
+ Mechanical checks that must pass before human review begins.
164
+
165
+ **Example: Reviewer Pre-flight**
166
+
167
+ ```yaml
168
+ # Reviewer spawns pre-flight check before analysis
169
+ Task:
170
+ subagent_type: "reviewer-preflight"
171
+ description: "Gather pre-flight data"
172
+ prompt: |
173
+ STORY_ID: 5-2
174
+ REPOS: api,frontend
175
+ BRANCH: feature/5-2-implement-feature
176
+ PR_NUMBER: 42
177
+
178
+ # Pre-flight returns:
179
+ # - Test results (must be GREEN)
180
+ # - Lint results (must be clean or documented exceptions)
181
+ # - Code smell analysis
182
+ # - Diff statistics
183
+ ```
184
+
185
+ **Gate Condition:** Pre-flight checks pass. If tests fail or critical lint issues exist, gate blocks progression.
186
+
187
+ **Example: TEA RED Verification**
188
+
189
+ ```yaml
190
+ # TEA handoff verifies tests are RED (failing)
191
+ # From tea-handoff.md L42-76
192
+
193
+ 1. Spawn testing-runner subagent
194
+ 2. Verify tests FAIL as expected
195
+ 3. If all GREEN → BLOCKED (tests don't exercise new code)
196
+ 4. If RED → PASS (ready for Dev)
197
+ ```
198
+
199
+ ### Gate Type 2: Human Review Gates
200
+
201
+ Require expert judgment from a designated reviewer agent.
202
+
203
+ **Example: Reviewer Approval/Rejection**
204
+
205
+ The Reviewer agent implements an adversarial review gate:
206
+
207
+ ```markdown
208
+ ## Reviewer Assessment
209
+
210
+ **PR:** #42
211
+ **Verdict:** APPROVED | REJECTED
212
+
213
+ **Code Review Evidence:**
214
+ - **Data flow traced:** userId from handler.go:47 → repo.go:89 (parameterized, safe)
215
+ - **Pattern observed:** Proper mutex usage in mock_client.go:45-60
216
+ - **Error handling:** API failures caught at service.go:112
217
+
218
+ **Issues Found:** (if REJECTED)
219
+ | Severity | Issue | Location | Fix Required |
220
+ |----------|-------|----------|--------------|
221
+ | Critical | SQL injection | query.go:23 | Use parameterized query |
222
+ | Major | Missing null check | handler.go:55 | Add validation |
223
+
224
+ **Handoff:** To SM for finish (APPROVED) | Back to Dev (REJECTED)
225
+ ```
226
+
227
+ **Gate Condition:** Reviewer verdict is APPROVED. If REJECTED, workflow returns to Dev with documented issues.
228
+
229
+ ### Gate Type 3: User Decision Gates
230
+
231
+ Interactive prompts that pause workflow for user input.
232
+
233
+ **Example: AskUserQuestion for Story Selection**
234
+
235
+ ```yaml
236
+ # SM presents story options to user
237
+ AskUserQuestion:
238
+ questions:
239
+ - question: "Which story shall we work on?"
240
+ header: "Story"
241
+ multiSelect: false
242
+ options:
243
+ - label: "5-2: Implement feature X (3 pts)"
244
+ description: "Add new capability to API"
245
+ - label: "5-3: Fix bug Y (2 pts)"
246
+ description: "Address reported issue"
247
+ - label: "5-4: Refactor Z (5 pts)"
248
+ description: "Technical debt reduction"
249
+ ```
250
+
251
+ **Gate Condition:** User selects an option. Workflow pauses until response received.
252
+
253
+ **Example: Confirmation Before Destructive Action**
254
+
255
+ ```yaml
256
+ # Before Jira claim or branch deletion
257
+ AskUserQuestion:
258
+ questions:
259
+ - question: "Confirm claiming MSSCI-11374 and creating branch?"
260
+ header: "Confirm"
261
+ multiSelect: false
262
+ options:
263
+ - label: "Yes, proceed"
264
+ description: "Claim ticket and create feature branch"
265
+ - label: "No, cancel"
266
+ description: "Abort setup and return to story selection"
267
+ ```
268
+
269
+ ### Gate Type 4: Plan Approval Gates
270
+
271
+ Present proposed approach for user confirmation before execution.
272
+
273
+ **Example: EnterPlanMode for Complex Work**
274
+
275
+ ```yaml
276
+ # Agent enters plan mode for non-trivial implementation
277
+ EnterPlanMode:
278
+ # Triggers transition to planning state
279
+ # Agent then:
280
+ # 1. Explores codebase
281
+ # 2. Designs approach
282
+ # 3. Writes plan to designated file
283
+ # 4. Calls ExitPlanMode for user approval
284
+
285
+ # In plan mode, agent writes:
286
+ ## Implementation Plan
287
+
288
+ ### Approach
289
+ 1. Create new service layer component
290
+ 2. Add repository methods for data access
291
+ 3. Wire up HTTP handlers
292
+ 4. Add comprehensive tests
293
+
294
+ ### Files to Modify
295
+ - internal/service/feature.go (new)
296
+ - internal/repository/feature.go (new)
297
+ - internal/handler/feature.go (new)
298
+ - internal/handler/routes.go (modify)
299
+
300
+ ### Risks
301
+ - May require database migration
302
+ - Performance impact on existing queries
303
+ ```
304
+
305
+ **Gate Condition:** User approves plan via ExitPlanMode acceptance. If rejected, agent revises approach.
306
+
307
+ ### The Assessment-First Protocol
308
+
309
+ **Critical Pattern:** All agents must write their assessment BEFORE spawning the handoff subagent.
310
+
311
+ ```
312
+ ┌─────────────────────────────────────────────────────────────────────────┐
313
+ │ ASSESSMENT-FIRST PROTOCOL │
314
+ └─────────────────────────────────────────────────────────────────────────┘
315
+
316
+ CORRECT SEQUENCE:
317
+
318
+ ┌─────────────────┐
319
+ │ Agent works │
320
+ └────────┬────────┘
321
+
322
+
323
+ ┌─────────────────┐
324
+ │ Write Assessment│◄─── Agent writes to session file FIRST
325
+ │ to session file │
326
+ └────────┬────────┘
327
+
328
+
329
+ ┌─────────────────┐
330
+ │ Spawn handoff │◄─── Then spawns subagent
331
+ │ subagent │
332
+ └────────┬────────┘
333
+
334
+
335
+ ┌─────────────────┐
336
+ │ Subagent verifies│◄─── Subagent checks assessment exists
337
+ │ assessment exists│ (grep "## {Agent} Assessment")
338
+ └────────┬────────┘
339
+
340
+
341
+ ┌─────────────────┐
342
+ │ Subagent routes │◄─── Routes based on verdict
343
+ │ based on verdict│
344
+ └─────────────────┘
345
+
346
+
347
+ WRONG (Anti-pattern):
348
+
349
+ Agent → Spawn subagent → Subagent writes assessment
350
+
351
+ This fails because:
352
+ - Subagent may miss critical context
353
+ - No verification step
354
+ - Assessment quality suffers
355
+ ```
356
+
357
+ **Verification Code** (from handoff subagents):
358
+
359
+ ```bash
360
+ # Step 0: Verify assessment exists
361
+ grep -q "## Reviewer Assessment" .session/{STORY_ID}-session.md
362
+
363
+ # If NOT found: STOP and escalate
364
+ # If found: Continue with routing
365
+ ```
366
+
367
+ ### Verdict Verification
368
+
369
+ Handoff subagents verify they were called with the correct verdict:
370
+
371
+ ```yaml
372
+ # reviewer-handoff-approve.md L35-36
373
+ Step 2: Verify verdict is "APPROVED"
374
+ - Read assessment section
375
+ - Confirm verdict field says "APPROVED"
376
+ - If "REJECTED": STOP - wrong subagent called, escalate
377
+
378
+ # reviewer-handoff-reject.md L39
379
+ Step 2: Verify verdict is "REJECTED"
380
+ - Read assessment section
381
+ - Confirm verdict field says "REJECTED"
382
+ - If "APPROVED": STOP - wrong subagent called, escalate
383
+ ```
384
+
385
+ ### Context-Aware Routing
386
+
387
+ After gate passage, check context usage before invoking next agent:
388
+
389
+ ```bash
390
+ # Check context usage
391
+ $CLAUDE_PROJECT_DIR/scripts/core/check-context.sh --human
392
+
393
+ # Routing decision:
394
+ # If < 60%: Invoke next agent directly in this session
395
+ # If > 60%: Tell user to start fresh session with next agent
396
+ ```
397
+
398
+ This prevents context overflow in long sessions by creating natural break points.
399
+
400
+ ## When to Use
401
+
402
+ ### Ideal Scenarios
403
+
404
+ | Scenario | Gate Type | Why |
405
+ |----------|-----------|-----|
406
+ | Before merging code | Human Review | Expert judgment on quality |
407
+ | Before destructive operations | User Decision | Confirmation prevents accidents |
408
+ | Complex multi-file changes | Plan Approval | Validate approach before execution |
409
+ | Before production deployment | Automated + Human | Multiple verification layers |
410
+ | Story point estimation | User Decision | Human judgment on complexity |
411
+
412
+ ### Decision Heuristic
413
+
414
+ ```
415
+ Does the action...
416
+ ├── Affect production data or systems?
417
+ │ └── YES → Automated + Human Review gates
418
+ ├── Involve irreversible changes?
419
+ │ └── YES → User Decision gate (confirmation)
420
+ ├── Require choosing between approaches?
421
+ │ └── YES → Plan Approval or User Decision gate
422
+ ├── Need expert judgment on quality?
423
+ │ └── YES → Human Review gate
424
+ └── Have mechanical pass/fail criteria?
425
+ └── YES → Automated gate (tests, lint)
426
+ ```
427
+
428
+ ### Gate Placement in TDD Flow
429
+
430
+ ```
431
+ ┌─────────────────────────────────────────────────────────────────────────┐
432
+ │ GATES IN TDD FLOW │
433
+ └─────────────────────────────────────────────────────────────────────────┘
434
+
435
+ SM (setup)
436
+
437
+ ├── [User Decision Gate] Story selection
438
+ ├── [User Decision Gate] Confirm Jira claim
439
+
440
+
441
+ TEA (RED)
442
+
443
+ ├── [Automated Gate] Tests must be RED (failing)
444
+
445
+
446
+ Dev (GREEN)
447
+
448
+ ├── [Automated Gate] Tests must be GREEN (passing)
449
+ ├── [Automated Gate] Lint must pass
450
+
451
+
452
+ Reviewer
453
+
454
+ ├── [Automated Gate] Pre-flight checks
455
+ ├── [Human Review Gate] Code review verdict
456
+ │ │
457
+ │ ┌────┴────┐
458
+ │ APPROVE REJECT
459
+ │ │ │
460
+ │ ▼ └──► Back to Dev (loop)
461
+
462
+
463
+ SM (finish)
464
+
465
+ ├── [User Decision Gate] Confirm archive
466
+
467
+
468
+ DONE
469
+ ```
470
+
471
+ ## Error Recovery
472
+
473
+ ### Retry Pattern
474
+
475
+ All handoff subagents follow this pattern:
476
+
477
+ ```
478
+ 1. Log the failure
479
+ - What step failed
480
+ - Error message
481
+ - Current state
482
+
483
+ 2. Diagnose
484
+ - What specifically went wrong?
485
+ - Is this retryable?
486
+
487
+ 3. Adjust (max 2 retries)
488
+ - Try alternative approach
489
+ - Use fallback path
490
+
491
+ 4. Escalate
492
+ - Report structured error
493
+ - Let calling agent decide
494
+ ```
495
+
496
+ ### Escalation Format
497
+
498
+ When gates cannot be passed:
499
+
500
+ ```markdown
501
+ GATE BLOCKED
502
+
503
+ Gate: [which gate]
504
+ Step failed: [step number and name]
505
+ Error: [error message]
506
+ Diagnosis: [what went wrong]
507
+
508
+ Current state:
509
+ - Session: .session/{STORY_ID}-session.md
510
+ - Phase: [current phase]
511
+ - Last successful step: [step]
512
+
513
+ Recommended action: [what calling agent should do]
514
+ ```
515
+
516
+ ### Common Failures
517
+
518
+ | Failure | Gate | Recovery |
519
+ |---------|------|----------|
520
+ | Assessment missing | Any handoff | Agent must write assessment first |
521
+ | Wrong verdict | Reviewer handoff | Call correct subagent (approve vs reject) |
522
+ | Tests all GREEN | TEA handoff | TEA must verify tests exercise new code |
523
+ | No issues documented | Rejection handoff | Reviewer must document specific issues |
524
+ | Context overflow | Any routing | Start fresh session |
525
+ | Jira unavailable | SM setup | Proceed without Jira, document for later |
526
+
527
+ ### Partial Gate Passage
528
+
529
+ When some checks pass but others fail:
530
+
531
+ ```markdown
532
+ ## Gate Results
533
+
534
+ ### Passed (2/3)
535
+ - Tests: GREEN (all passing)
536
+ - Lint: CLEAN (no issues)
537
+
538
+ ### Failed (1/3)
539
+ - Pre-flight security scan: BLOCKED
540
+ - Issue: Hardcoded credentials detected
541
+ - Location: config/secrets.go:23
542
+ - Action: Remove and use environment variables
543
+
544
+ ### Decision
545
+ Gate BLOCKED. Address security issue before proceeding.
546
+ ```
547
+
548
+ ## Anti-Patterns
549
+
550
+ ### Skipping the Assessment Step
551
+
552
+ **Wrong:**
553
+ ```
554
+ Agent completes work
555
+
556
+ Spawns handoff subagent immediately
557
+
558
+ Subagent has no assessment to verify
559
+
560
+ Gate is effectively bypassed
561
+ ```
562
+
563
+ **Correct:**
564
+ ```
565
+ Agent completes work
566
+
567
+ Writes assessment to session file
568
+
569
+ Spawns handoff subagent
570
+
571
+ Subagent verifies assessment exists
572
+
573
+ Gate functions properly
574
+ ```
575
+
576
+ ### Rubber-Stamp Approvals
577
+
578
+ **Wrong:**
579
+ ```markdown
580
+ ## Reviewer Assessment
581
+
582
+ **Verdict:** APPROVED
583
+
584
+ Tests pass, looks fine.
585
+ ```
586
+
587
+ No evidence of actual review. Gate provides false confidence.
588
+
589
+ **Correct:**
590
+ ```markdown
591
+ ## Reviewer Assessment
592
+
593
+ **Verdict:** APPROVED
594
+
595
+ **Evidence:**
596
+ - Traced userId from handler.go:47 through to repo.go:89 (parameterized query, safe)
597
+ - Verified error handling at service.go:112 catches API failures
598
+ - Checked null guards at handler.go:55-60
599
+
600
+ **Security:** Auth check at handler.go:47 verifies admin role.
601
+ **Performance:** Single query at repo.go:89, no N+1 issues.
602
+ ```
603
+
604
+ ### Silent Rejections
605
+
606
+ **Wrong:**
607
+ ```markdown
608
+ ## Reviewer Assessment
609
+
610
+ **Verdict:** REJECTED
611
+
612
+ Code needs work.
613
+ ```
614
+
615
+ No actionable information for Dev to fix issues.
616
+
617
+ **Correct:**
618
+ ```markdown
619
+ ## Reviewer Assessment
620
+
621
+ **Verdict:** REJECTED
622
+
623
+ **Issues Found:**
624
+
625
+ | Severity | Issue | Location | Fix Required |
626
+ |----------|-------|----------|--------------|
627
+ | Critical | SQL injection vulnerability | query.go:23 | Use parameterized query |
628
+ | Major | Missing error handling | service.go:45 | Add try-catch block |
629
+ | Minor | Inconsistent naming | model.go:12 | Rename to camelCase |
630
+
631
+ **What Passed:**
632
+ - Test coverage adequate
633
+ - Performance acceptable
634
+ ```
635
+
636
+ ### Bypassing Gates Under Pressure
637
+
638
+ **Wrong:**
639
+ ```
640
+ "We need to ship today, skip the review"
641
+
642
+ Gate bypassed
643
+
644
+ Bug ships to production
645
+
646
+ 3am incident response
647
+ ```
648
+
649
+ **Correct:**
650
+ ```
651
+ "We need to ship today"
652
+
653
+ Expedited review (still goes through gate)
654
+
655
+ Reviewer prioritizes critical checks
656
+
657
+ Gate passes or blocks appropriately
658
+
659
+ Quality maintained
660
+ ```
661
+
662
+ ### No Rejection Loop Limit
663
+
664
+ **Wrong:**
665
+ ```
666
+ Rejection #1 → Dev fixes → Rejection #2 → Dev fixes →
667
+ Rejection #3 → Dev fixes → Rejection #4 → Dev fixes →
668
+ (infinite loop, no escalation)
669
+ ```
670
+
671
+ **Correct:**
672
+ ```
673
+ Rejection #1 → Dev fixes → Rejection #2 → Dev fixes →
674
+ Rejection #3 → ESCALATE to Architect/SM for design review
675
+ ```
676
+
677
+ Set organizational policy for maximum rejection loops (typically 2-3).
678
+
679
+ ## Comparison with Related Patterns
680
+
681
+ | Pattern | Use When | Key Difference |
682
+ |---------|----------|----------------|
683
+ | **TDD Flow** | Sequential workflow | Approval gates ARE the transitions |
684
+ | **Helper Delegation** | Mechanical work | Subagents execute gate checks |
685
+ | **Fan-out/Fan-in** | Parallel work | Gates sync parallel results |
686
+ | **Approval Gates** | Decision points | Explicit pass/fail verification |
687
+
688
+ ### Pattern Integration
689
+
690
+ Approval gates integrate with other patterns:
691
+
692
+ ```
693
+ TDD Flow uses approval gates at each transition:
694
+ SM ──[gate]──► TEA ──[gate]──► Dev ──[gate]──► Reviewer ──[gate]──► SM
695
+
696
+ Helper delegation executes gate checks:
697
+ Reviewer (Opus) ──► reviewer-preflight (Haiku) ──► returns gate status
698
+
699
+ Fan-out aggregation triggers approval gate:
700
+ [Parallel checks] ──► Aggregate ──[gate]──► Continue if all pass
701
+ ```
702
+
703
+ ## Implementation Checklist
704
+
705
+ When implementing approval gates:
706
+
707
+ - [ ] Identify decision points requiring verification
708
+ - [ ] Choose appropriate gate type (automated, human, user, plan)
709
+ - [ ] Implement assessment-first protocol
710
+ - [ ] Add verdict verification in handoff subagents
711
+ - [ ] Define pass/fail criteria clearly
712
+ - [ ] Document rejection reasons (for human gates)
713
+ - [ ] Implement retry pattern with escalation
714
+ - [ ] Set maximum rejection loop limit
715
+ - [ ] Add context-aware routing after gates
716
+ - [ ] Test gate blocking behavior
717
+
718
+ ## Related Patterns
719
+
720
+ - **TDD Flow Pattern** (`tdd-flow-pattern.md`): Sequential workflow that uses gates at each transition
721
+ - **Helper Delegation Pattern** (`helper-delegation-pattern.md`): Subagents that execute gate checks
722
+ - **Fan-out/Fan-in Pattern** (`fan-out-fan-in-pattern.md`): Parallel execution that aggregates through gates
723
+
724
+ ## References
725
+
726
+ ### Agent Definitions (Gate Implementers)
727
+ - Reviewer: `agents/reviewer.md` - Primary approval gate (L9-25 adversarial mindset, L188-228 assessment templates)
728
+ - SM: `agents/sm.md` - Status gates and scale routing (L82-93, L359-365)
729
+ - Dev: `agents/dev.md` - Self-review checklist (L137-144)
730
+ - TEA: `agents/tea.md` - Chore bypass criteria (L96-104)
731
+
732
+ ### Handoff Subagents (Gate Executors)
733
+ - Approval routing: `agents/reviewer-handoff-approve.md` (L26-39)
734
+ - Rejection routing: `agents/reviewer-handoff-reject.md` (L30-43)
735
+ - RED verification: `agents/tea-handoff.md` (L42-76)
736
+ - GREEN verification: `agents/dev-handoff.md`
737
+
738
+ ### Claude Code Tools
739
+ - `AskUserQuestion`: Interactive user decision gates
740
+ - `EnterPlanMode` / `ExitPlanMode`: Plan approval gates
741
+ - `Task` with `subagent_type`: Delegated gate execution
742
+
743
+ ---
744
+
745
+ *Last verified: 2026-01-06*
746
+ *Pennyfarthing v4.0.0*