@pennyfarthing/core 9.2.0 → 9.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1043) hide show
  1. package/dist/workflow/complete-step-integration.test.d.ts +13 -0
  2. package/dist/workflow/complete-step-integration.test.d.ts.map +1 -0
  3. package/dist/workflow/complete-step-integration.test.js +163 -0
  4. package/dist/workflow/complete-step-integration.test.js.map +1 -0
  5. package/{packages/core/dist → dist}/workflow/handoff.test.js +2 -2
  6. package/{packages/core/dist → dist}/workflow/handoff.test.js.map +1 -1
  7. package/{packages/core/dist → dist}/workflow/index.d.ts +2 -0
  8. package/{packages/core/dist → dist}/workflow/index.d.ts.map +1 -1
  9. package/{packages/core/dist → dist}/workflow/index.js +6 -0
  10. package/{packages/core/dist → dist}/workflow/index.js.map +1 -1
  11. package/{packages/core/dist → dist}/workflow/workflow-stepped-schema.test.js +1 -1
  12. package/{packages/core/dist → dist}/workflow/workflow-stepped-schema.test.js.map +1 -1
  13. package/package.json +36 -32
  14. package/LICENSE +0 -14
  15. package/README.md +0 -218
  16. package/pennyfarthing-dist/agents/README.md +0 -348
  17. package/pennyfarthing-dist/agents/architect.md +0 -180
  18. package/pennyfarthing-dist/agents/dev.md +0 -169
  19. package/pennyfarthing-dist/agents/devops.md +0 -203
  20. package/pennyfarthing-dist/agents/handoff.md +0 -235
  21. package/pennyfarthing-dist/agents/orchestrator.md +0 -182
  22. package/pennyfarthing-dist/agents/pm.md +0 -152
  23. package/pennyfarthing-dist/agents/reviewer-preflight.md +0 -129
  24. package/pennyfarthing-dist/agents/reviewer.md +0 -197
  25. package/pennyfarthing-dist/agents/sm-file-summary.md +0 -79
  26. package/pennyfarthing-dist/agents/sm-finish.md +0 -82
  27. package/pennyfarthing-dist/agents/sm-handoff.md +0 -129
  28. package/pennyfarthing-dist/agents/sm-setup.md +0 -251
  29. package/pennyfarthing-dist/agents/sm.md +0 -294
  30. package/pennyfarthing-dist/agents/tea.md +0 -161
  31. package/pennyfarthing-dist/agents/tech-writer.md +0 -226
  32. package/pennyfarthing-dist/agents/testing-runner.md +0 -184
  33. package/pennyfarthing-dist/agents/ux-designer.md +0 -236
  34. package/pennyfarthing-dist/agents/workflow-status-check.md +0 -96
  35. package/pennyfarthing-dist/commands/architect.md +0 -9
  36. package/pennyfarthing-dist/commands/benchmark-control.md +0 -69
  37. package/pennyfarthing-dist/commands/benchmark.md +0 -485
  38. package/pennyfarthing-dist/commands/brainstorming.md +0 -91
  39. package/pennyfarthing-dist/commands/check.md +0 -156
  40. package/pennyfarthing-dist/commands/chore.md +0 -218
  41. package/pennyfarthing-dist/commands/close-epic.md +0 -139
  42. package/pennyfarthing-dist/commands/continue-session.md +0 -218
  43. package/pennyfarthing-dist/commands/create-branches-from-story.md +0 -358
  44. package/pennyfarthing-dist/commands/create-theme.md +0 -29
  45. package/pennyfarthing-dist/commands/dev.md +0 -9
  46. package/pennyfarthing-dist/commands/devops.md +0 -9
  47. package/pennyfarthing-dist/commands/fix-blocker.md +0 -22
  48. package/pennyfarthing-dist/commands/git-cleanup.md +0 -57
  49. package/pennyfarthing-dist/commands/health-check.md +0 -143
  50. package/pennyfarthing-dist/commands/help.md +0 -264
  51. package/pennyfarthing-dist/commands/job-fair.md +0 -102
  52. package/pennyfarthing-dist/commands/list-themes.md +0 -21
  53. package/pennyfarthing-dist/commands/new-work.md +0 -23
  54. package/pennyfarthing-dist/commands/orchestrator.md +0 -9
  55. package/pennyfarthing-dist/commands/parallel-work.md +0 -73
  56. package/pennyfarthing-dist/commands/party-mode.md +0 -77
  57. package/pennyfarthing-dist/commands/patch.md +0 -210
  58. package/pennyfarthing-dist/commands/permissions.md +0 -193
  59. package/pennyfarthing-dist/commands/pm.md +0 -9
  60. package/pennyfarthing-dist/commands/prime.md +0 -136
  61. package/pennyfarthing-dist/commands/release.md +0 -58
  62. package/pennyfarthing-dist/commands/repo-status.md +0 -49
  63. package/pennyfarthing-dist/commands/retro.md +0 -200
  64. package/pennyfarthing-dist/commands/reviewer.md +0 -9
  65. package/pennyfarthing-dist/commands/run-ci.md +0 -116
  66. package/pennyfarthing-dist/commands/set-theme.md +0 -56
  67. package/pennyfarthing-dist/commands/setup.md +0 -65
  68. package/pennyfarthing-dist/commands/show-theme.md +0 -21
  69. package/pennyfarthing-dist/commands/sm.md +0 -9
  70. package/pennyfarthing-dist/commands/solo.md +0 -447
  71. package/pennyfarthing-dist/commands/sprint-planning.md +0 -109
  72. package/pennyfarthing-dist/commands/sprint.md +0 -142
  73. package/pennyfarthing-dist/commands/standalone.md +0 -194
  74. package/pennyfarthing-dist/commands/start-epic.md +0 -168
  75. package/pennyfarthing-dist/commands/sync-epic-to-jira.md +0 -184
  76. package/pennyfarthing-dist/commands/sync-work-with-sprint.md +0 -373
  77. package/pennyfarthing-dist/commands/tea.md +0 -9
  78. package/pennyfarthing-dist/commands/tech-writer.md +0 -9
  79. package/pennyfarthing-dist/commands/theme-maker.md +0 -676
  80. package/pennyfarthing-dist/commands/update-domain-docs.md +0 -83
  81. package/pennyfarthing-dist/commands/ux-designer.md +0 -9
  82. package/pennyfarthing-dist/commands/work.md +0 -25
  83. package/pennyfarthing-dist/commands/workflow.md +0 -21
  84. package/pennyfarthing-dist/guides/agent-behavior.md +0 -90
  85. package/pennyfarthing-dist/guides/agent-coordination.md +0 -480
  86. package/pennyfarthing-dist/guides/agent-tag-taxonomy.md +0 -432
  87. package/pennyfarthing-dist/guides/agent-template-strategic.md +0 -148
  88. package/pennyfarthing-dist/guides/agent-template-tactical.md +0 -162
  89. package/pennyfarthing-dist/guides/hooks.md +0 -230
  90. package/pennyfarthing-dist/guides/measurement-framework.md +0 -210
  91. package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +0 -766
  92. package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +0 -574
  93. package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +0 -488
  94. package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +0 -402
  95. package/pennyfarthing-dist/guides/permission-protocol.md +0 -188
  96. package/pennyfarthing-dist/guides/persona-loading.md +0 -46
  97. package/pennyfarthing-dist/guides/prompt-patterns.md +0 -338
  98. package/pennyfarthing-dist/guides/scale-levels.md +0 -114
  99. package/pennyfarthing-dist/guides/session-artifacts.md +0 -193
  100. package/pennyfarthing-dist/guides/session-schema.md +0 -346
  101. package/pennyfarthing-dist/guides/skill-schema.md +0 -412
  102. package/pennyfarthing-dist/guides/workflow-schema.md +0 -257
  103. package/pennyfarthing-dist/guides/workflow-step-schema.md +0 -512
  104. package/pennyfarthing-dist/guides/worktree-mode.md +0 -113
  105. package/pennyfarthing-dist/guides/xml-tags.md +0 -627
  106. package/pennyfarthing-dist/output-styles/teaching.md +0 -33
  107. package/pennyfarthing-dist/output-styles/terse.md +0 -20
  108. package/pennyfarthing-dist/output-styles/verbose.md +0 -28
  109. package/pennyfarthing-dist/personas/themes/a-team.yaml +0 -331
  110. package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +0 -324
  111. package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +0 -282
  112. package/pennyfarthing-dist/personas/themes/blade-runner.yaml +0 -289
  113. package/pennyfarthing-dist/personas/themes/catch-22.yaml +0 -304
  114. package/pennyfarthing-dist/personas/themes/control.yaml +0 -201
  115. package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +0 -315
  116. package/pennyfarthing-dist/personas/themes/discworld.yaml +0 -334
  117. package/pennyfarthing-dist/personas/themes/doctor-who.yaml +0 -284
  118. package/pennyfarthing-dist/personas/themes/dune.yaml +0 -301
  119. package/pennyfarthing-dist/personas/themes/firefly.yaml +0 -320
  120. package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +0 -284
  121. package/pennyfarthing-dist/personas/themes/harry-potter.yaml +0 -316
  122. package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +0 -323
  123. package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +0 -326
  124. package/pennyfarthing-dist/personas/themes/mad-max.yaml +0 -349
  125. package/pennyfarthing-dist/personas/themes/mash.yaml +0 -329
  126. package/pennyfarthing-dist/personas/themes/princess-bride.yaml +0 -344
  127. package/pennyfarthing-dist/personas/themes/sandman.yaml +0 -282
  128. package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +0 -358
  129. package/pennyfarthing-dist/personas/themes/star-wars.yaml +0 -297
  130. package/pennyfarthing-dist/personas/themes/the-expanse.yaml +0 -337
  131. package/pennyfarthing-dist/personas/themes/the-matrix.yaml +0 -342
  132. package/pennyfarthing-dist/personas/themes/watchmen.yaml +0 -285
  133. package/pennyfarthing-dist/personas/themes/west-wing.yaml +0 -285
  134. package/pennyfarthing-dist/personas/themes/x-files.yaml +0 -296
  135. package/pennyfarthing-dist/scripts/README.md +0 -87
  136. package/pennyfarthing-dist/scripts/core/README.md +0 -25
  137. package/pennyfarthing-dist/scripts/core/agent-session.sh +0 -390
  138. package/pennyfarthing-dist/scripts/core/check-context.sh +0 -194
  139. package/pennyfarthing-dist/scripts/core/handoff-marker.sh +0 -112
  140. package/pennyfarthing-dist/scripts/core/phase-check-start.sh +0 -90
  141. package/pennyfarthing-dist/scripts/core/prime.sh +0 -30
  142. package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +0 -21
  143. package/pennyfarthing-dist/scripts/git/README.md +0 -25
  144. package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +0 -267
  145. package/pennyfarthing-dist/scripts/git/git-status-all.sh +0 -152
  146. package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +0 -79
  147. package/pennyfarthing-dist/scripts/git/release.sh +0 -246
  148. package/pennyfarthing-dist/scripts/git/worktree-manager.sh +0 -497
  149. package/pennyfarthing-dist/scripts/health/drift-detection.sh +0 -156
  150. package/pennyfarthing-dist/scripts/hooks/README.md +0 -32
  151. package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
  152. package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +0 -106
  153. package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +0 -95
  154. package/pennyfarthing-dist/scripts/hooks/context-warning.sh +0 -65
  155. package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +0 -35
  156. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +0 -150
  157. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +0 -102
  158. package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -71
  159. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +0 -42
  160. package/pennyfarthing-dist/scripts/hooks/question-reflector-check.sh +0 -20
  161. package/pennyfarthing-dist/scripts/hooks/question_reflector_check.py +0 -499
  162. package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +0 -30
  163. package/pennyfarthing-dist/scripts/hooks/session-start.sh +0 -97
  164. package/pennyfarthing-dist/scripts/hooks/session-stop.sh +0 -65
  165. package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +0 -78
  166. package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +0 -94
  167. package/pennyfarthing-dist/scripts/jira/README.md +0 -36
  168. package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +0 -95
  169. package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +0 -91
  170. package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +0 -22
  171. package/pennyfarthing-dist/scripts/jira/jira-lib.sh +0 -464
  172. package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +0 -260
  173. package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +0 -18
  174. package/pennyfarthing-dist/scripts/jira/jira-sync.sh +0 -16
  175. package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +0 -16
  176. package/pennyfarthing-dist/scripts/jira/sync-epic-to-jira.sh +0 -16
  177. package/pennyfarthing-dist/scripts/lib/README.md +0 -29
  178. package/pennyfarthing-dist/scripts/lib/background-tasks.sh +0 -177
  179. package/pennyfarthing-dist/scripts/lib/checkpoint.sh +0 -136
  180. package/pennyfarthing-dist/scripts/lib/common.sh +0 -212
  181. package/pennyfarthing-dist/scripts/lib/file-lock.sh +0 -269
  182. package/pennyfarthing-dist/scripts/lib/find-root.sh +0 -58
  183. package/pennyfarthing-dist/scripts/lib/logging.sh +0 -186
  184. package/pennyfarthing-dist/scripts/lib/retry.sh +0 -76
  185. package/pennyfarthing-dist/scripts/maintenance/migrate-theme-schema.mjs +0 -102
  186. package/pennyfarthing-dist/scripts/maintenance/sidecar-health.sh +0 -91
  187. package/pennyfarthing-dist/scripts/misc/README.md +0 -44
  188. package/pennyfarthing-dist/scripts/misc/add-short-names.sh +0 -13
  189. package/pennyfarthing-dist/scripts/misc/add_short_names.py +0 -226
  190. package/pennyfarthing-dist/scripts/misc/backlog.sh +0 -77
  191. package/pennyfarthing-dist/scripts/misc/check-status.sh +0 -247
  192. package/pennyfarthing-dist/scripts/misc/find-related-work.sh +0 -231
  193. package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +0 -107
  194. package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +0 -74
  195. package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +0 -10
  196. package/pennyfarthing-dist/scripts/misc/migrate_bmad_workflow.py +0 -319
  197. package/pennyfarthing-dist/scripts/misc/repo-scan.sh +0 -141
  198. package/pennyfarthing-dist/scripts/misc/repo-utils.sh +0 -778
  199. package/pennyfarthing-dist/scripts/misc/run-ci.sh +0 -212
  200. package/pennyfarthing-dist/scripts/misc/run-timestamp.sh +0 -7
  201. package/pennyfarthing-dist/scripts/misc/session-cleanup.sh +0 -319
  202. package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +0 -193
  203. package/pennyfarthing-dist/scripts/misc/statusline.sh +0 -259
  204. package/pennyfarthing-dist/scripts/misc/uninstall.sh +0 -275
  205. package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +0 -160
  206. package/pennyfarthing-dist/scripts/portraits/generate-portraits.py +0 -417
  207. package/pennyfarthing-dist/scripts/portraits/generate-portraits.sh +0 -54
  208. package/pennyfarthing-dist/scripts/sprint/README.md +0 -29
  209. package/pennyfarthing-dist/scripts/sprint/archive-story.sh +0 -133
  210. package/pennyfarthing-dist/scripts/sprint/available-stories.sh +0 -91
  211. package/pennyfarthing-dist/scripts/sprint/check-story.sh +0 -158
  212. package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +0 -52
  213. package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +0 -63
  214. package/pennyfarthing-dist/scripts/sprint/list-future.sh +0 -145
  215. package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +0 -110
  216. package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +0 -148
  217. package/pennyfarthing-dist/scripts/sprint/sprint-common.sh +0 -415
  218. package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +0 -33
  219. package/pennyfarthing-dist/scripts/sprint/sprint-metrics.sh +0 -230
  220. package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +0 -134
  221. package/pennyfarthing-dist/scripts/sprint/validate-sprint-yaml.sh +0 -139
  222. package/pennyfarthing-dist/scripts/story/README.md +0 -23
  223. package/pennyfarthing-dist/scripts/story/create-story.sh +0 -19
  224. package/pennyfarthing-dist/scripts/story/size-story.sh +0 -18
  225. package/pennyfarthing-dist/scripts/story/story-template.sh +0 -18
  226. package/pennyfarthing-dist/scripts/test/README.md +0 -23
  227. package/pennyfarthing-dist/scripts/test/ensure-swebench-data.sh +0 -59
  228. package/pennyfarthing-dist/scripts/test/ground-truth-judge.py +0 -220
  229. package/pennyfarthing-dist/scripts/test/swebench-judge.py +0 -374
  230. package/pennyfarthing-dist/scripts/test/test-cache.sh +0 -165
  231. package/pennyfarthing-dist/scripts/test/test-setup.sh +0 -337
  232. package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -582
  233. package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +0 -515
  234. package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +0 -599
  235. package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +0 -332
  236. package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +0 -573
  237. package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +0 -859
  238. package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +0 -662
  239. package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +0 -589
  240. package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +0 -106
  241. package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +0 -597
  242. package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +0 -514
  243. package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +0 -517
  244. package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -331
  245. package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +0 -647
  246. package/pennyfarthing-dist/scripts/theme/README.md +0 -22
  247. package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +0 -13
  248. package/pennyfarthing-dist/scripts/theme/compute_theme_tiers.py +0 -402
  249. package/pennyfarthing-dist/scripts/theme/list-themes.sh +0 -30
  250. package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +0 -97
  251. package/pennyfarthing-dist/scripts/validation/validate-agent-schema.sh +0 -576
  252. package/pennyfarthing-dist/scripts/workflow/README.md +0 -28
  253. package/pennyfarthing-dist/scripts/workflow/check.py +0 -502
  254. package/pennyfarthing-dist/scripts/workflow/check.sh +0 -24
  255. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +0 -154
  256. package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +0 -222
  257. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.py +0 -61
  258. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +0 -13
  259. package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +0 -124
  260. package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +0 -34
  261. package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +0 -157
  262. package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +0 -132
  263. package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +0 -250
  264. package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +0 -161
  265. package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +0 -246
  266. package/pennyfarthing-dist/skills/changelog/SKILL.md +0 -385
  267. package/pennyfarthing-dist/skills/code-review/SKILL.md +0 -172
  268. package/pennyfarthing-dist/skills/context-engineering/SKILL.md +0 -277
  269. package/pennyfarthing-dist/skills/cyclist/SKILL.md +0 -88
  270. package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +0 -461
  271. package/pennyfarthing-dist/skills/finalize-run/SKILL.md +0 -261
  272. package/pennyfarthing-dist/skills/jira/SKILL.md +0 -508
  273. package/pennyfarthing-dist/skills/judge/SKILL.md +0 -644
  274. package/pennyfarthing-dist/skills/just/SKILL.md +0 -414
  275. package/pennyfarthing-dist/skills/mermaid/SKILL.md +0 -256
  276. package/pennyfarthing-dist/skills/otel/skill.md +0 -227
  277. package/pennyfarthing-dist/skills/permissions/skill.md +0 -175
  278. package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +0 -187
  279. package/pennyfarthing-dist/skills/skill-registry.schema.json +0 -107
  280. package/pennyfarthing-dist/skills/skill-registry.yaml +0 -393
  281. package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +0 -101
  282. package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +0 -97
  283. package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +0 -164
  284. package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +0 -101
  285. package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +0 -116
  286. package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +0 -164
  287. package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +0 -39
  288. package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +0 -147
  289. package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +0 -93
  290. package/pennyfarthing-dist/skills/sprint/skill.md +0 -465
  291. package/pennyfarthing-dist/skills/story/scripts/create-story.sh +0 -159
  292. package/pennyfarthing-dist/skills/story/scripts/size-story.sh +0 -198
  293. package/pennyfarthing-dist/skills/story/scripts/story-template.sh +0 -162
  294. package/pennyfarthing-dist/skills/story/skill.md +0 -219
  295. package/pennyfarthing-dist/skills/systematic-debugging/SKILL.md +0 -446
  296. package/pennyfarthing-dist/skills/testing/SKILL.md +0 -121
  297. package/pennyfarthing-dist/skills/testing/references/troubleshooting.md +0 -124
  298. package/pennyfarthing-dist/skills/theme/skill.md +0 -141
  299. package/pennyfarthing-dist/skills/theme-creation/SKILL.md +0 -178
  300. package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +0 -91
  301. package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +0 -163
  302. package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +0 -138
  303. package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +0 -273
  304. package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +0 -167
  305. package/pennyfarthing-dist/skills/workflow/skill.md +0 -345
  306. package/pennyfarthing-dist/skills/yq/SKILL.md +0 -272
  307. package/pennyfarthing-dist/templates/LEADERBOARD.schema.yaml +0 -187
  308. package/pennyfarthing-dist/templates/LEADERBOARD.template.md +0 -59
  309. package/pennyfarthing-dist/templates/agent-scopes.yaml.template +0 -276
  310. package/pennyfarthing-dist/templates/pennyfarthing-settings.yaml.template +0 -61
  311. package/pennyfarthing-dist/templates/persona-config.yaml.template +0 -22
  312. package/pennyfarthing-dist/templates/preferences.yaml.template +0 -15
  313. package/pennyfarthing-dist/templates/settings.local.json.template +0 -110
  314. package/pennyfarthing-dist/templates/setup-env.sh.template +0 -18
  315. package/pennyfarthing-dist/templates/shared-context.md.template +0 -70
  316. package/pennyfarthing-dist/templates/sidecar/decisions.md.template +0 -40
  317. package/pennyfarthing-dist/templates/sidecar/gotchas.md.template +0 -37
  318. package/pennyfarthing-dist/templates/sidecar/patterns.md.template +0 -34
  319. package/pennyfarthing-dist/workflows/agent-docs.yaml +0 -70
  320. package/pennyfarthing-dist/workflows/architecture/steps/step-01-initialize.md +0 -113
  321. package/pennyfarthing-dist/workflows/architecture/steps/step-01b-continue.md +0 -105
  322. package/pennyfarthing-dist/workflows/architecture/steps/step-02-context.md +0 -127
  323. package/pennyfarthing-dist/workflows/architecture/steps/step-03-patterns.md +0 -145
  324. package/pennyfarthing-dist/workflows/architecture/steps/step-04-components.md +0 -150
  325. package/pennyfarthing-dist/workflows/architecture/steps/step-05-interfaces.md +0 -145
  326. package/pennyfarthing-dist/workflows/architecture/steps/step-06-risks.md +0 -154
  327. package/pennyfarthing-dist/workflows/architecture/steps/step-07-document.md +0 -172
  328. package/pennyfarthing-dist/workflows/architecture/templates/architecture-decision.md +0 -102
  329. package/pennyfarthing-dist/workflows/architecture.yaml +0 -65
  330. package/pennyfarthing-dist/workflows/bdd.yaml +0 -60
  331. package/pennyfarthing-dist/workflows/brainstorming/brain-methods.csv +0 -62
  332. package/pennyfarthing-dist/workflows/brainstorming/checklist.md +0 -44
  333. package/pennyfarthing-dist/workflows/brainstorming/instructions.md +0 -736
  334. package/pennyfarthing-dist/workflows/brainstorming/workflow.yaml +0 -49
  335. package/pennyfarthing-dist/workflows/code-review/checklist.md +0 -23
  336. package/pennyfarthing-dist/workflows/code-review/instructions.md +0 -234
  337. package/pennyfarthing-dist/workflows/code-review/workflow.yaml +0 -51
  338. package/pennyfarthing-dist/workflows/dev-story/checklist.md +0 -80
  339. package/pennyfarthing-dist/workflows/dev-story/instructions.xml +0 -410
  340. package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +0 -50
  341. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-01-validate-prerequisites.md +0 -281
  342. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-02-design-epics.md +0 -256
  343. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-03-create-stories.md +0 -298
  344. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-04-final-validation.md +0 -177
  345. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +0 -145
  346. package/pennyfarthing-dist/workflows/epics-and-stories/templates/epics-template.md +0 -57
  347. package/pennyfarthing-dist/workflows/epics-and-stories/workflow.yaml +0 -28
  348. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-01-analyze.md +0 -103
  349. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-02-categorize.md +0 -147
  350. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-03-execute.md +0 -215
  351. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-04-verify.md +0 -97
  352. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-05-complete.md +0 -78
  353. package/pennyfarthing-dist/workflows/git-cleanup.yaml +0 -59
  354. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-01-document-discovery.md +0 -211
  355. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-02-prd-analysis.md +0 -199
  356. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -202
  357. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-04-ux-alignment.md +0 -162
  358. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-05-epic-quality-review.md +0 -280
  359. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-06-final-assessment.md +0 -158
  360. package/pennyfarthing-dist/workflows/implementation-readiness/templates/readiness-report-template.md +0 -4
  361. package/pennyfarthing-dist/workflows/implementation-readiness/workflow.yaml +0 -40
  362. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-01-connect.md +0 -257
  363. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-02-explore.md +0 -107
  364. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-03-fix.md +0 -127
  365. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-04-commit.md +0 -122
  366. package/pennyfarthing-dist/workflows/interactive-debug/workflow.yaml +0 -51
  367. package/pennyfarthing-dist/workflows/patch.yaml +0 -67
  368. package/pennyfarthing-dist/workflows/prd/data/domain-complexity.csv +0 -13
  369. package/pennyfarthing-dist/workflows/prd/data/prd-purpose.md +0 -197
  370. package/pennyfarthing-dist/workflows/prd/data/project-types.csv +0 -11
  371. package/pennyfarthing-dist/workflows/prd/steps-c/step-01-init.md +0 -197
  372. package/pennyfarthing-dist/workflows/prd/steps-c/step-01b-continue.md +0 -159
  373. package/pennyfarthing-dist/workflows/prd/steps-c/step-02-discovery.md +0 -230
  374. package/pennyfarthing-dist/workflows/prd/steps-c/step-03-success.md +0 -232
  375. package/pennyfarthing-dist/workflows/prd/steps-c/step-04-journeys.md +0 -219
  376. package/pennyfarthing-dist/workflows/prd/steps-c/step-05-domain.md +0 -213
  377. package/pennyfarthing-dist/workflows/prd/steps-c/step-06-innovation.md +0 -232
  378. package/pennyfarthing-dist/workflows/prd/steps-c/step-07-project-type.md +0 -243
  379. package/pennyfarthing-dist/workflows/prd/steps-c/step-08-scoping.md +0 -234
  380. package/pennyfarthing-dist/workflows/prd/steps-c/step-09-functional.md +0 -237
  381. package/pennyfarthing-dist/workflows/prd/steps-c/step-10-nonfunctional.md +0 -248
  382. package/pennyfarthing-dist/workflows/prd/steps-c/step-11-polish.md +0 -223
  383. package/pennyfarthing-dist/workflows/prd/steps-c/step-12-complete.md +0 -186
  384. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01-discovery.md +0 -253
  385. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01b-legacy-conversion.md +0 -214
  386. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-02-review.md +0 -255
  387. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-03-edit.md +0 -259
  388. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-04-complete.md +0 -174
  389. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-01-discovery.md +0 -224
  390. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02-format-detection.md +0 -197
  391. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02b-parity-check.md +0 -215
  392. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-03-density-validation.md +0 -180
  393. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +0 -220
  394. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-05-measurability-validation.md +0 -234
  395. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-06-traceability-validation.md +0 -223
  396. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -211
  397. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +0 -249
  398. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-09-project-type-validation.md +0 -269
  399. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-10-smart-validation.md +0 -215
  400. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +0 -270
  401. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-12-completeness-validation.md +0 -248
  402. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-13-report-complete.md +0 -238
  403. package/pennyfarthing-dist/workflows/prd/templates/prd-template.md +0 -10
  404. package/pennyfarthing-dist/workflows/prd/workflow.yaml +0 -42
  405. package/pennyfarthing-dist/workflows/product-brief/steps/step-01-init.md +0 -195
  406. package/pennyfarthing-dist/workflows/product-brief/steps/step-01b-continue.md +0 -180
  407. package/pennyfarthing-dist/workflows/product-brief/steps/step-02-vision.md +0 -221
  408. package/pennyfarthing-dist/workflows/product-brief/steps/step-03-users.md +0 -224
  409. package/pennyfarthing-dist/workflows/product-brief/steps/step-04-metrics.md +0 -228
  410. package/pennyfarthing-dist/workflows/product-brief/steps/step-05-scope.md +0 -243
  411. package/pennyfarthing-dist/workflows/product-brief/steps/step-06-complete.md +0 -216
  412. package/pennyfarthing-dist/workflows/product-brief/templates/product-brief.template.md +0 -10
  413. package/pennyfarthing-dist/workflows/product-brief/workflow.yaml +0 -31
  414. package/pennyfarthing-dist/workflows/project-context/project-context-template.md +0 -21
  415. package/pennyfarthing-dist/workflows/project-context/steps/step-01-discover.md +0 -206
  416. package/pennyfarthing-dist/workflows/project-context/steps/step-02-generate.md +0 -349
  417. package/pennyfarthing-dist/workflows/project-context/steps/step-03-complete.md +0 -306
  418. package/pennyfarthing-dist/workflows/project-context/workflow.yaml +0 -27
  419. package/pennyfarthing-dist/workflows/project-setup/steps/step-01-discover.md +0 -157
  420. package/pennyfarthing-dist/workflows/project-setup/steps/step-02-clone-repos.md +0 -217
  421. package/pennyfarthing-dist/workflows/project-setup/steps/step-03-repos-yaml.md +0 -159
  422. package/pennyfarthing-dist/workflows/project-setup/steps/step-04-claude-md.md +0 -186
  423. package/pennyfarthing-dist/workflows/project-setup/steps/step-05-shared-context.md +0 -185
  424. package/pennyfarthing-dist/workflows/project-setup/steps/step-06-task-runner.md +0 -279
  425. package/pennyfarthing-dist/workflows/project-setup/steps/step-07-theme.md +0 -200
  426. package/pennyfarthing-dist/workflows/project-setup/steps/step-08-theme-packs.md +0 -142
  427. package/pennyfarthing-dist/workflows/project-setup/steps/step-09-cyclist.md +0 -245
  428. package/pennyfarthing-dist/workflows/project-setup/steps/step-10-complete.md +0 -204
  429. package/pennyfarthing-dist/workflows/project-setup/workflow.yaml +0 -41
  430. package/pennyfarthing-dist/workflows/quick-dev/steps/step-01-mode-detection.md +0 -177
  431. package/pennyfarthing-dist/workflows/quick-dev/steps/step-02-context-gathering.md +0 -143
  432. package/pennyfarthing-dist/workflows/quick-dev/steps/step-03-execute.md +0 -138
  433. package/pennyfarthing-dist/workflows/quick-dev/steps/step-04-self-check.md +0 -135
  434. package/pennyfarthing-dist/workflows/quick-dev/steps/step-05-adversarial-review.md +0 -129
  435. package/pennyfarthing-dist/workflows/quick-dev/steps/step-06-resolve-findings.md +0 -163
  436. package/pennyfarthing-dist/workflows/quick-dev/workflow.yaml +0 -27
  437. package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +0 -201
  438. package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +0 -156
  439. package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +0 -140
  440. package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +0 -203
  441. package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +0 -74
  442. package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +0 -27
  443. package/pennyfarthing-dist/workflows/research/steps-domain/step-01-init.md +0 -159
  444. package/pennyfarthing-dist/workflows/research/steps-domain/step-02-domain-analysis.md +0 -253
  445. package/pennyfarthing-dist/workflows/research/steps-domain/step-03-competitive-landscape.md +0 -263
  446. package/pennyfarthing-dist/workflows/research/steps-domain/step-04-regulatory-focus.md +0 -232
  447. package/pennyfarthing-dist/workflows/research/steps-domain/step-05-technical-trends.md +0 -260
  448. package/pennyfarthing-dist/workflows/research/steps-domain/step-06-research-synthesis.md +0 -477
  449. package/pennyfarthing-dist/workflows/research/steps-market/step-01-init.md +0 -205
  450. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-behavior.md +0 -262
  451. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-insights.md +0 -227
  452. package/pennyfarthing-dist/workflows/research/steps-market/step-03-customer-pain-points.md +0 -275
  453. package/pennyfarthing-dist/workflows/research/steps-market/step-04-customer-decisions.md +0 -286
  454. package/pennyfarthing-dist/workflows/research/steps-market/step-05-competitive-analysis.md +0 -203
  455. package/pennyfarthing-dist/workflows/research/steps-market/step-06-research-completion.md +0 -510
  456. package/pennyfarthing-dist/workflows/research/steps-technical/step-01-init.md +0 -159
  457. package/pennyfarthing-dist/workflows/research/steps-technical/step-02-technical-overview.md +0 -264
  458. package/pennyfarthing-dist/workflows/research/steps-technical/step-03-integration-patterns.md +0 -274
  459. package/pennyfarthing-dist/workflows/research/steps-technical/step-04-architectural-patterns.md +0 -228
  460. package/pennyfarthing-dist/workflows/research/steps-technical/step-05-implementation-research.md +0 -267
  461. package/pennyfarthing-dist/workflows/research/steps-technical/step-06-research-synthesis.md +0 -522
  462. package/pennyfarthing-dist/workflows/research/templates/research.template.md +0 -29
  463. package/pennyfarthing-dist/workflows/research/workflow.yaml +0 -45
  464. package/pennyfarthing-dist/workflows/retrospective/checklist.md +0 -31
  465. package/pennyfarthing-dist/workflows/retrospective/instructions.md +0 -1443
  466. package/pennyfarthing-dist/workflows/retrospective/workflow.yaml +0 -50
  467. package/pennyfarthing-dist/workflows/sprint-planning/checklist.md +0 -33
  468. package/pennyfarthing-dist/workflows/sprint-planning/sprint-status-template.yaml +0 -55
  469. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-01-parse-epic-files.md +0 -69
  470. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-02-build-sprint-status.md +0 -61
  471. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-03-status-detection.md +0 -80
  472. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-04-generate-status-file.md +0 -90
  473. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-05-validate-and-report.md +0 -78
  474. package/pennyfarthing-dist/workflows/sprint-planning/workflow.yaml +0 -34
  475. package/pennyfarthing-dist/workflows/tdd.yaml +0 -50
  476. package/pennyfarthing-dist/workflows/trivial.yaml +0 -40
  477. package/pennyfarthing-dist/workflows/ux-design/steps/step-01-init.md +0 -141
  478. package/pennyfarthing-dist/workflows/ux-design/steps/step-01b-continue.md +0 -133
  479. package/pennyfarthing-dist/workflows/ux-design/steps/step-02-discovery.md +0 -196
  480. package/pennyfarthing-dist/workflows/ux-design/steps/step-03-core-experience.md +0 -222
  481. package/pennyfarthing-dist/workflows/ux-design/steps/step-04-emotional-response.md +0 -225
  482. package/pennyfarthing-dist/workflows/ux-design/steps/step-05-inspiration.md +0 -240
  483. package/pennyfarthing-dist/workflows/ux-design/steps/step-06-design-system.md +0 -258
  484. package/pennyfarthing-dist/workflows/ux-design/steps/step-07-defining-experience.md +0 -260
  485. package/pennyfarthing-dist/workflows/ux-design/steps/step-08-visual-foundation.md +0 -230
  486. package/pennyfarthing-dist/workflows/ux-design/steps/step-09-design-directions.md +0 -230
  487. package/pennyfarthing-dist/workflows/ux-design/steps/step-10-user-journeys.md +0 -247
  488. package/pennyfarthing-dist/workflows/ux-design/steps/step-11-component-strategy.md +0 -254
  489. package/pennyfarthing-dist/workflows/ux-design/steps/step-12-ux-patterns.md +0 -243
  490. package/pennyfarthing-dist/workflows/ux-design/steps/step-13-responsive-accessibility.md +0 -270
  491. package/pennyfarthing-dist/workflows/ux-design/steps/step-14-complete.md +0 -234
  492. package/pennyfarthing-dist/workflows/ux-design/ux-design-template.md +0 -13
  493. package/pennyfarthing-dist/workflows/ux-design/workflow.yaml +0 -41
  494. package/pennyfarthing_scripts/README.md +0 -66
  495. package/pennyfarthing_scripts/__init__.py +0 -17
  496. package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  497. package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
  498. package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
  499. package/pennyfarthing_scripts/__pycache__/config.cpython-314.pyc +0 -0
  500. package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
  501. package/pennyfarthing_scripts/__pycache__/jira.cpython-314.pyc +0 -0
  502. package/pennyfarthing_scripts/__pycache__/jira_bidirectional_sync.cpython-314.pyc +0 -0
  503. package/pennyfarthing_scripts/__pycache__/jira_epic_creation.cpython-314.pyc +0 -0
  504. package/pennyfarthing_scripts/__pycache__/jira_sync.cpython-314.pyc +0 -0
  505. package/pennyfarthing_scripts/__pycache__/jira_sync_story.cpython-314.pyc +0 -0
  506. package/pennyfarthing_scripts/__pycache__/output.cpython-314.pyc +0 -0
  507. package/pennyfarthing_scripts/__pycache__/patch_mode.cpython-314.pyc +0 -0
  508. package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
  509. package/pennyfarthing_scripts/__pycache__/sprint.cpython-314.pyc +0 -0
  510. package/pennyfarthing_scripts/__pycache__/workflow.cpython-311.pyc +0 -0
  511. package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
  512. package/pennyfarthing_scripts/bellmode_hook.py +0 -154
  513. package/pennyfarthing_scripts/brownfield/__init__.py +0 -35
  514. package/pennyfarthing_scripts/brownfield/__main__.py +0 -7
  515. package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
  516. package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
  517. package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
  518. package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
  519. package/pennyfarthing_scripts/brownfield/cli.py +0 -131
  520. package/pennyfarthing_scripts/brownfield/discover.py +0 -753
  521. package/pennyfarthing_scripts/cli.py +0 -174
  522. package/pennyfarthing_scripts/common/__init__.py +0 -49
  523. package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-314.pyc +0 -0
  524. package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
  525. package/pennyfarthing_scripts/common/__pycache__/output.cpython-314.pyc +0 -0
  526. package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
  527. package/pennyfarthing_scripts/common/config.py +0 -91
  528. package/pennyfarthing_scripts/common/output.py +0 -180
  529. package/pennyfarthing_scripts/common/themes.py +0 -253
  530. package/pennyfarthing_scripts/config.py +0 -21
  531. package/pennyfarthing_scripts/context.py +0 -414
  532. package/pennyfarthing_scripts/git/__init__.py +0 -29
  533. package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
  534. package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
  535. package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
  536. package/pennyfarthing_scripts/git/create_branches.py +0 -439
  537. package/pennyfarthing_scripts/git/status_all.py +0 -310
  538. package/pennyfarthing_scripts/hooks.py +0 -455
  539. package/pennyfarthing_scripts/jira/__init__.py +0 -93
  540. package/pennyfarthing_scripts/jira/__main__.py +0 -10
  541. package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
  542. package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
  543. package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
  544. package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-314.pyc +0 -0
  545. package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
  546. package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
  547. package/pennyfarthing_scripts/jira/__pycache__/compat.cpython-314.pyc +0 -0
  548. package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-314.pyc +0 -0
  549. package/pennyfarthing_scripts/jira/__pycache__/mappings.cpython-314.pyc +0 -0
  550. package/pennyfarthing_scripts/jira/__pycache__/models.cpython-314.pyc +0 -0
  551. package/pennyfarthing_scripts/jira/__pycache__/story.cpython-314.pyc +0 -0
  552. package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-314.pyc +0 -0
  553. package/pennyfarthing_scripts/jira/bidirectional.py +0 -561
  554. package/pennyfarthing_scripts/jira/claim.py +0 -211
  555. package/pennyfarthing_scripts/jira/cli.py +0 -150
  556. package/pennyfarthing_scripts/jira/client.py +0 -613
  557. package/pennyfarthing_scripts/jira/epic.py +0 -176
  558. package/pennyfarthing_scripts/jira/story.py +0 -219
  559. package/pennyfarthing_scripts/jira/sync.py +0 -350
  560. package/pennyfarthing_scripts/jira_bidirectional_sync.py +0 -37
  561. package/pennyfarthing_scripts/jira_epic_creation.py +0 -30
  562. package/pennyfarthing_scripts/jira_sync.py +0 -36
  563. package/pennyfarthing_scripts/jira_sync_story.py +0 -30
  564. package/pennyfarthing_scripts/migration/__init__.py +0 -39
  565. package/pennyfarthing_scripts/migration/__main__.py +0 -10
  566. package/pennyfarthing_scripts/migration/__pycache__/__init__.cpython-314.pyc +0 -0
  567. package/pennyfarthing_scripts/migration/__pycache__/__main__.cpython-314.pyc +0 -0
  568. package/pennyfarthing_scripts/migration/__pycache__/cli.cpython-314.pyc +0 -0
  569. package/pennyfarthing_scripts/migration/__pycache__/session.cpython-314.pyc +0 -0
  570. package/pennyfarthing_scripts/migration/__pycache__/skill.cpython-314.pyc +0 -0
  571. package/pennyfarthing_scripts/migration/__pycache__/step.cpython-314.pyc +0 -0
  572. package/pennyfarthing_scripts/migration/__pycache__/validate.cpython-314.pyc +0 -0
  573. package/pennyfarthing_scripts/migration/cli.py +0 -304
  574. package/pennyfarthing_scripts/migration/session.py +0 -384
  575. package/pennyfarthing_scripts/migration/skill.py +0 -188
  576. package/pennyfarthing_scripts/migration/step.py +0 -229
  577. package/pennyfarthing_scripts/migration/validate.py +0 -282
  578. package/pennyfarthing_scripts/output.py +0 -37
  579. package/pennyfarthing_scripts/patch_mode.py +0 -449
  580. package/pennyfarthing_scripts/preflight/__init__.py +0 -17
  581. package/pennyfarthing_scripts/preflight/__main__.py +0 -10
  582. package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
  583. package/pennyfarthing_scripts/preflight/__pycache__/__main__.cpython-314.pyc +0 -0
  584. package/pennyfarthing_scripts/preflight/__pycache__/cli.cpython-314.pyc +0 -0
  585. package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
  586. package/pennyfarthing_scripts/preflight/cli.py +0 -141
  587. package/pennyfarthing_scripts/preflight/finish.py +0 -382
  588. package/pennyfarthing_scripts/pretooluse_hook.py +0 -142
  589. package/pennyfarthing_scripts/prime/__init__.py +0 -125
  590. package/pennyfarthing_scripts/prime/__main__.py +0 -8
  591. package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
  592. package/pennyfarthing_scripts/prime/__pycache__/__main__.cpython-314.pyc +0 -0
  593. package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
  594. package/pennyfarthing_scripts/prime/__pycache__/loader.cpython-314.pyc +0 -0
  595. package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
  596. package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
  597. package/pennyfarthing_scripts/prime/__pycache__/session.cpython-314.pyc +0 -0
  598. package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
  599. package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
  600. package/pennyfarthing_scripts/prime/cli.py +0 -645
  601. package/pennyfarthing_scripts/prime/loader.py +0 -239
  602. package/pennyfarthing_scripts/prime/models.py +0 -206
  603. package/pennyfarthing_scripts/prime/persona.py +0 -308
  604. package/pennyfarthing_scripts/prime/session.py +0 -183
  605. package/pennyfarthing_scripts/prime/tiers.py +0 -201
  606. package/pennyfarthing_scripts/prime/workflow.py +0 -275
  607. package/pennyfarthing_scripts/schema_validation_hook.py +0 -306
  608. package/pennyfarthing_scripts/sprint/__init__.py +0 -66
  609. package/pennyfarthing_scripts/sprint/__main__.py +0 -10
  610. package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
  611. package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
  612. package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
  613. package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
  614. package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
  615. package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
  616. package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-314.pyc +0 -0
  617. package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
  618. package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
  619. package/pennyfarthing_scripts/sprint/archive.py +0 -108
  620. package/pennyfarthing_scripts/sprint/archive_epic.py +0 -399
  621. package/pennyfarthing_scripts/sprint/cli.py +0 -284
  622. package/pennyfarthing_scripts/sprint/import_epic.py +0 -431
  623. package/pennyfarthing_scripts/sprint/loader.py +0 -193
  624. package/pennyfarthing_scripts/sprint/status.py +0 -122
  625. package/pennyfarthing_scripts/sprint/validator.py +0 -405
  626. package/pennyfarthing_scripts/sprint/work.py +0 -192
  627. package/pennyfarthing_scripts/story/__init__.py +0 -67
  628. package/pennyfarthing_scripts/story/__main__.py +0 -10
  629. package/pennyfarthing_scripts/story/__pycache__/__init__.cpython-314.pyc +0 -0
  630. package/pennyfarthing_scripts/story/__pycache__/__main__.cpython-314.pyc +0 -0
  631. package/pennyfarthing_scripts/story/__pycache__/cli.cpython-314.pyc +0 -0
  632. package/pennyfarthing_scripts/story/__pycache__/create.cpython-314.pyc +0 -0
  633. package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
  634. package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
  635. package/pennyfarthing_scripts/story/cli.py +0 -105
  636. package/pennyfarthing_scripts/story/create.py +0 -167
  637. package/pennyfarthing_scripts/story/size.py +0 -113
  638. package/pennyfarthing_scripts/story/template.py +0 -151
  639. package/pennyfarthing_scripts/swebench.py +0 -216
  640. package/pennyfarthing_scripts/tests/__init__.py +0 -1
  641. package/pennyfarthing_scripts/tests/__pycache__/__init__.cpython-314.pyc +0 -0
  642. package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
  643. package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
  644. package/pennyfarthing_scripts/tests/__pycache__/test_cli_modules.cpython-314-pytest-9.0.2.pyc +0 -0
  645. package/pennyfarthing_scripts/tests/__pycache__/test_common.cpython-314-pytest-9.0.2.pyc +0 -0
  646. package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
  647. package/pennyfarthing_scripts/tests/__pycache__/test_jira_package.cpython-314-pytest-9.0.2.pyc +0 -0
  648. package/pennyfarthing_scripts/tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc +0 -0
  649. package/pennyfarthing_scripts/tests/__pycache__/test_patch_mode.cpython-314-pytest-9.0.2.pyc +0 -0
  650. package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
  651. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
  652. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
  653. package/pennyfarthing_scripts/tests/__pycache__/test_story_package.cpython-314-pytest-9.0.2.pyc +0 -0
  654. package/pennyfarthing_scripts/tests/__pycache__/test_tiers.cpython-314-pytest-9.0.2.pyc +0 -0
  655. package/pennyfarthing_scripts/tests/__pycache__/test_token_counting.cpython-314-pytest-9.0.2.pyc +0 -0
  656. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_check.cpython-314-pytest-9.0.2.pyc +0 -0
  657. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_cli.cpython-314-pytest-9.0.2.pyc +0 -0
  658. package/pennyfarthing_scripts/tests/conftest.py +0 -106
  659. package/pennyfarthing_scripts/tests/test_brownfield.py +0 -842
  660. package/pennyfarthing_scripts/tests/test_cli_modules.py +0 -245
  661. package/pennyfarthing_scripts/tests/test_common.py +0 -180
  662. package/pennyfarthing_scripts/tests/test_git_utils.py +0 -866
  663. package/pennyfarthing_scripts/tests/test_jira_package.py +0 -334
  664. package/pennyfarthing_scripts/tests/test_package_structure.py +0 -372
  665. package/pennyfarthing_scripts/tests/test_patch_mode.py +0 -830
  666. package/pennyfarthing_scripts/tests/test_prime.py +0 -1050
  667. package/pennyfarthing_scripts/tests/test_sprint_package.py +0 -236
  668. package/pennyfarthing_scripts/tests/test_sprint_validator.py +0 -675
  669. package/pennyfarthing_scripts/tests/test_story_package.py +0 -156
  670. package/pennyfarthing_scripts/tests/test_tiers.py +0 -1090
  671. package/pennyfarthing_scripts/tests/test_token_counting.py +0 -559
  672. package/pennyfarthing_scripts/tests/test_workflow_check.py +0 -341
  673. package/pennyfarthing_scripts/welcome_hook.py +0 -157
  674. package/pennyfarthing_scripts/workflow.py +0 -287
  675. /package/{packages/core/bin → bin}/pennyfarthing.js +0 -0
  676. /package/{packages/core/dist → dist}/bmad/context-reader.d.ts +0 -0
  677. /package/{packages/core/dist → dist}/bmad/context-reader.d.ts.map +0 -0
  678. /package/{packages/core/dist → dist}/bmad/context-reader.js +0 -0
  679. /package/{packages/core/dist → dist}/bmad/context-reader.js.map +0 -0
  680. /package/{packages/core/dist → dist}/bmad/context-reader.test.d.ts +0 -0
  681. /package/{packages/core/dist → dist}/bmad/context-reader.test.d.ts.map +0 -0
  682. /package/{packages/core/dist → dist}/bmad/context-reader.test.js +0 -0
  683. /package/{packages/core/dist → dist}/bmad/context-reader.test.js.map +0 -0
  684. /package/{packages/core/dist → dist}/bmad/epics-parser.d.ts +0 -0
  685. /package/{packages/core/dist → dist}/bmad/epics-parser.d.ts.map +0 -0
  686. /package/{packages/core/dist → dist}/bmad/epics-parser.js +0 -0
  687. /package/{packages/core/dist → dist}/bmad/epics-parser.js.map +0 -0
  688. /package/{packages/core/dist → dist}/bmad/epics-parser.test.d.ts +0 -0
  689. /package/{packages/core/dist → dist}/bmad/epics-parser.test.d.ts.map +0 -0
  690. /package/{packages/core/dist → dist}/bmad/epics-parser.test.js +0 -0
  691. /package/{packages/core/dist → dist}/bmad/epics-parser.test.js.map +0 -0
  692. /package/{packages/core/dist → dist}/bmad/index.d.ts +0 -0
  693. /package/{packages/core/dist → dist}/bmad/index.d.ts.map +0 -0
  694. /package/{packages/core/dist → dist}/bmad/index.js +0 -0
  695. /package/{packages/core/dist → dist}/bmad/index.js.map +0 -0
  696. /package/{packages/core/dist → dist}/bmad/status-sync.d.ts +0 -0
  697. /package/{packages/core/dist → dist}/bmad/status-sync.d.ts.map +0 -0
  698. /package/{packages/core/dist → dist}/bmad/status-sync.js +0 -0
  699. /package/{packages/core/dist → dist}/bmad/status-sync.js.map +0 -0
  700. /package/{packages/core/dist → dist}/bmad/status-sync.test.d.ts +0 -0
  701. /package/{packages/core/dist → dist}/bmad/status-sync.test.d.ts.map +0 -0
  702. /package/{packages/core/dist → dist}/bmad/status-sync.test.js +0 -0
  703. /package/{packages/core/dist → dist}/bmad/status-sync.test.js.map +0 -0
  704. /package/{packages/core/dist → dist}/bmad/story-exporter.d.ts +0 -0
  705. /package/{packages/core/dist → dist}/bmad/story-exporter.d.ts.map +0 -0
  706. /package/{packages/core/dist → dist}/bmad/story-exporter.js +0 -0
  707. /package/{packages/core/dist → dist}/bmad/story-exporter.js.map +0 -0
  708. /package/{packages/core/dist → dist}/bmad/story-exporter.test.d.ts +0 -0
  709. /package/{packages/core/dist → dist}/bmad/story-exporter.test.d.ts.map +0 -0
  710. /package/{packages/core/dist → dist}/bmad/story-exporter.test.js +0 -0
  711. /package/{packages/core/dist → dist}/bmad/story-exporter.test.js.map +0 -0
  712. /package/{packages/core/dist → dist}/bmad/story-parser.d.ts +0 -0
  713. /package/{packages/core/dist → dist}/bmad/story-parser.d.ts.map +0 -0
  714. /package/{packages/core/dist → dist}/bmad/story-parser.js +0 -0
  715. /package/{packages/core/dist → dist}/bmad/story-parser.js.map +0 -0
  716. /package/{packages/core/dist → dist}/bmad/story-parser.test.d.ts +0 -0
  717. /package/{packages/core/dist → dist}/bmad/story-parser.test.d.ts.map +0 -0
  718. /package/{packages/core/dist → dist}/bmad/story-parser.test.js +0 -0
  719. /package/{packages/core/dist → dist}/bmad/story-parser.test.js.map +0 -0
  720. /package/{packages/core/dist → dist}/cli/commands/command.d.ts +0 -0
  721. /package/{packages/core/dist → dist}/cli/commands/command.d.ts.map +0 -0
  722. /package/{packages/core/dist → dist}/cli/commands/command.js +0 -0
  723. /package/{packages/core/dist → dist}/cli/commands/command.js.map +0 -0
  724. /package/{packages/core/dist → dist}/cli/commands/cyclist.d.ts +0 -0
  725. /package/{packages/core/dist → dist}/cli/commands/cyclist.d.ts.map +0 -0
  726. /package/{packages/core/dist → dist}/cli/commands/cyclist.js +0 -0
  727. /package/{packages/core/dist → dist}/cli/commands/cyclist.js.map +0 -0
  728. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.d.ts +0 -0
  729. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.d.ts.map +0 -0
  730. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.js +0 -0
  731. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.js.map +0 -0
  732. /package/{packages/core/dist → dist}/cli/commands/doctor-legacy.test.d.ts +0 -0
  733. /package/{packages/core/dist → dist}/cli/commands/doctor-legacy.test.d.ts.map +0 -0
  734. /package/{packages/core/dist → dist}/cli/commands/doctor-legacy.test.js +0 -0
  735. /package/{packages/core/dist → dist}/cli/commands/doctor-legacy.test.js.map +0 -0
  736. /package/{packages/core/dist → dist}/cli/commands/doctor.d.ts +0 -0
  737. /package/{packages/core/dist → dist}/cli/commands/doctor.d.ts.map +0 -0
  738. /package/{packages/core/dist → dist}/cli/commands/doctor.js +0 -0
  739. /package/{packages/core/dist → dist}/cli/commands/doctor.js.map +0 -0
  740. /package/{packages/core/dist → dist}/cli/commands/init.d.ts +0 -0
  741. /package/{packages/core/dist → dist}/cli/commands/init.d.ts.map +0 -0
  742. /package/{packages/core/dist → dist}/cli/commands/init.js +0 -0
  743. /package/{packages/core/dist → dist}/cli/commands/init.js.map +0 -0
  744. /package/{packages/core/dist → dist}/cli/commands/skill.d.ts +0 -0
  745. /package/{packages/core/dist → dist}/cli/commands/skill.d.ts.map +0 -0
  746. /package/{packages/core/dist → dist}/cli/commands/skill.js +0 -0
  747. /package/{packages/core/dist → dist}/cli/commands/skill.js.map +0 -0
  748. /package/{packages/core/dist → dist}/cli/commands/theme.d.ts +0 -0
  749. /package/{packages/core/dist → dist}/cli/commands/theme.d.ts.map +0 -0
  750. /package/{packages/core/dist → dist}/cli/commands/theme.js +0 -0
  751. /package/{packages/core/dist → dist}/cli/commands/theme.js.map +0 -0
  752. /package/{packages/core/dist → dist}/cli/commands/uninstall.d.ts +0 -0
  753. /package/{packages/core/dist → dist}/cli/commands/uninstall.d.ts.map +0 -0
  754. /package/{packages/core/dist → dist}/cli/commands/uninstall.js +0 -0
  755. /package/{packages/core/dist → dist}/cli/commands/uninstall.js.map +0 -0
  756. /package/{packages/core/dist → dist}/cli/commands/update.d.ts +0 -0
  757. /package/{packages/core/dist → dist}/cli/commands/update.d.ts.map +0 -0
  758. /package/{packages/core/dist → dist}/cli/commands/update.js +0 -0
  759. /package/{packages/core/dist → dist}/cli/commands/update.js.map +0 -0
  760. /package/{packages/core/dist → dist}/cli/commands/version.d.ts +0 -0
  761. /package/{packages/core/dist → dist}/cli/commands/version.d.ts.map +0 -0
  762. /package/{packages/core/dist → dist}/cli/commands/version.js +0 -0
  763. /package/{packages/core/dist → dist}/cli/commands/version.js.map +0 -0
  764. /package/{packages/core/dist → dist}/cli/customization.test.d.ts +0 -0
  765. /package/{packages/core/dist → dist}/cli/customization.test.d.ts.map +0 -0
  766. /package/{packages/core/dist → dist}/cli/customization.test.js +0 -0
  767. /package/{packages/core/dist → dist}/cli/customization.test.js.map +0 -0
  768. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.d.ts +0 -0
  769. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.d.ts.map +0 -0
  770. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.js +0 -0
  771. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.js.map +0 -0
  772. /package/{packages/core/dist → dist}/cli/index.d.ts +0 -0
  773. /package/{packages/core/dist → dist}/cli/index.d.ts.map +0 -0
  774. /package/{packages/core/dist → dist}/cli/index.js +0 -0
  775. /package/{packages/core/dist → dist}/cli/index.js.map +0 -0
  776. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.d.ts +0 -0
  777. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.d.ts.map +0 -0
  778. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.js +0 -0
  779. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.js.map +0 -0
  780. /package/{packages/core/dist → dist}/cli/theme-maker.test.d.ts +0 -0
  781. /package/{packages/core/dist → dist}/cli/theme-maker.test.d.ts.map +0 -0
  782. /package/{packages/core/dist → dist}/cli/theme-maker.test.js +0 -0
  783. /package/{packages/core/dist → dist}/cli/theme-maker.test.js.map +0 -0
  784. /package/{packages/core/dist → dist}/cli/utils/constants.d.ts +0 -0
  785. /package/{packages/core/dist → dist}/cli/utils/constants.d.ts.map +0 -0
  786. /package/{packages/core/dist → dist}/cli/utils/constants.js +0 -0
  787. /package/{packages/core/dist → dist}/cli/utils/constants.js.map +0 -0
  788. /package/{packages/core/dist → dist}/cli/utils/files.d.ts +0 -0
  789. /package/{packages/core/dist → dist}/cli/utils/files.d.ts.map +0 -0
  790. /package/{packages/core/dist → dist}/cli/utils/files.js +0 -0
  791. /package/{packages/core/dist → dist}/cli/utils/files.js.map +0 -0
  792. /package/{packages/core/dist → dist}/cli/utils/logger.d.ts +0 -0
  793. /package/{packages/core/dist → dist}/cli/utils/logger.d.ts.map +0 -0
  794. /package/{packages/core/dist → dist}/cli/utils/logger.js +0 -0
  795. /package/{packages/core/dist → dist}/cli/utils/logger.js.map +0 -0
  796. /package/{packages/core/dist → dist}/cli/utils/manifest.d.ts +0 -0
  797. /package/{packages/core/dist → dist}/cli/utils/manifest.d.ts.map +0 -0
  798. /package/{packages/core/dist → dist}/cli/utils/manifest.js +0 -0
  799. /package/{packages/core/dist → dist}/cli/utils/manifest.js.map +0 -0
  800. /package/{packages/core/dist → dist}/cli/utils/node-modules.d.ts +0 -0
  801. /package/{packages/core/dist → dist}/cli/utils/node-modules.d.ts.map +0 -0
  802. /package/{packages/core/dist → dist}/cli/utils/node-modules.js +0 -0
  803. /package/{packages/core/dist → dist}/cli/utils/node-modules.js.map +0 -0
  804. /package/{packages/core/dist → dist}/cli/utils/prompts.d.ts +0 -0
  805. /package/{packages/core/dist → dist}/cli/utils/prompts.d.ts.map +0 -0
  806. /package/{packages/core/dist → dist}/cli/utils/prompts.js +0 -0
  807. /package/{packages/core/dist → dist}/cli/utils/prompts.js.map +0 -0
  808. /package/{packages/core/dist → dist}/cli/utils/settings.d.ts +0 -0
  809. /package/{packages/core/dist → dist}/cli/utils/settings.d.ts.map +0 -0
  810. /package/{packages/core/dist → dist}/cli/utils/settings.js +0 -0
  811. /package/{packages/core/dist → dist}/cli/utils/settings.js.map +0 -0
  812. /package/{packages/core/dist → dist}/cli/utils/symlinks.d.ts +0 -0
  813. /package/{packages/core/dist → dist}/cli/utils/symlinks.d.ts.map +0 -0
  814. /package/{packages/core/dist → dist}/cli/utils/symlinks.js +0 -0
  815. /package/{packages/core/dist → dist}/cli/utils/symlinks.js.map +0 -0
  816. /package/{packages/core/dist → dist}/cli/utils/themes.d.ts +0 -0
  817. /package/{packages/core/dist → dist}/cli/utils/themes.d.ts.map +0 -0
  818. /package/{packages/core/dist → dist}/cli/utils/themes.js +0 -0
  819. /package/{packages/core/dist → dist}/cli/utils/themes.js.map +0 -0
  820. /package/{packages/core/dist → dist}/cli/utils/themes.test.d.ts +0 -0
  821. /package/{packages/core/dist → dist}/cli/utils/themes.test.d.ts.map +0 -0
  822. /package/{packages/core/dist → dist}/cli/utils/themes.test.js +0 -0
  823. /package/{packages/core/dist → dist}/cli/utils/themes.test.js.map +0 -0
  824. /package/{packages/core/dist → dist}/cli/utils/version.d.ts +0 -0
  825. /package/{packages/core/dist → dist}/cli/utils/version.d.ts.map +0 -0
  826. /package/{packages/core/dist → dist}/cli/utils/version.js +0 -0
  827. /package/{packages/core/dist → dist}/cli/utils/version.js.map +0 -0
  828. /package/{packages/core/dist → dist}/cli/workspace.test.d.ts +0 -0
  829. /package/{packages/core/dist → dist}/cli/workspace.test.d.ts.map +0 -0
  830. /package/{packages/core/dist → dist}/cli/workspace.test.js +0 -0
  831. /package/{packages/core/dist → dist}/cli/workspace.test.js.map +0 -0
  832. /package/{packages/core/dist → dist}/index.d.ts +0 -0
  833. /package/{packages/core/dist → dist}/index.d.ts.map +0 -0
  834. /package/{packages/core/dist → dist}/index.js +0 -0
  835. /package/{packages/core/dist → dist}/index.js.map +0 -0
  836. /package/{packages/core/dist → dist}/jira/jira-epic-creation.d.ts +0 -0
  837. /package/{packages/core/dist → dist}/jira/jira-epic-creation.d.ts.map +0 -0
  838. /package/{packages/core/dist → dist}/jira/jira-epic-creation.js +0 -0
  839. /package/{packages/core/dist → dist}/jira/jira-epic-creation.js.map +0 -0
  840. /package/{packages/core/dist → dist}/jira/jira-epic-creation.test.d.ts +0 -0
  841. /package/{packages/core/dist → dist}/jira/jira-epic-creation.test.d.ts.map +0 -0
  842. /package/{packages/core/dist → dist}/jira/jira-epic-creation.test.js +0 -0
  843. /package/{packages/core/dist → dist}/jira/jira-epic-creation.test.js.map +0 -0
  844. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.d.ts +0 -0
  845. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.d.ts.map +0 -0
  846. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.js +0 -0
  847. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.js.map +0 -0
  848. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.test.d.ts +0 -0
  849. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.test.d.ts.map +0 -0
  850. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.test.js +0 -0
  851. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.test.js.map +0 -0
  852. /package/{packages/core/dist → dist}/permissions/index.d.ts +0 -0
  853. /package/{packages/core/dist → dist}/permissions/index.d.ts.map +0 -0
  854. /package/{packages/core/dist → dist}/permissions/index.js +0 -0
  855. /package/{packages/core/dist → dist}/permissions/index.js.map +0 -0
  856. /package/{packages/core/dist → dist}/permissions/permission-schema.d.ts +0 -0
  857. /package/{packages/core/dist → dist}/permissions/permission-schema.d.ts.map +0 -0
  858. /package/{packages/core/dist → dist}/permissions/permission-schema.js +0 -0
  859. /package/{packages/core/dist → dist}/permissions/permission-schema.js.map +0 -0
  860. /package/{packages/core/dist → dist}/permissions/permission-schema.test.d.ts +0 -0
  861. /package/{packages/core/dist → dist}/permissions/permission-schema.test.d.ts.map +0 -0
  862. /package/{packages/core/dist → dist}/permissions/permission-schema.test.js +0 -0
  863. /package/{packages/core/dist → dist}/permissions/permission-schema.test.js.map +0 -0
  864. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.d.ts +0 -0
  865. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.d.ts.map +0 -0
  866. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.js +0 -0
  867. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.js.map +0 -0
  868. /package/{packages/core/dist → dist}/scripts/benchmark-integration.d.ts +0 -0
  869. /package/{packages/core/dist → dist}/scripts/benchmark-integration.d.ts.map +0 -0
  870. /package/{packages/core/dist → dist}/scripts/benchmark-integration.js +0 -0
  871. /package/{packages/core/dist → dist}/scripts/benchmark-integration.js.map +0 -0
  872. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.d.ts +0 -0
  873. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.d.ts.map +0 -0
  874. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.js +0 -0
  875. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.js.map +0 -0
  876. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.d.ts +0 -0
  877. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.d.ts.map +0 -0
  878. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.js +0 -0
  879. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.js.map +0 -0
  880. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.d.ts +0 -0
  881. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.d.ts.map +0 -0
  882. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.js +0 -0
  883. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.js.map +0 -0
  884. /package/{packages/core/dist → dist}/scripts/generate-report.d.ts +0 -0
  885. /package/{packages/core/dist → dist}/scripts/generate-report.d.ts.map +0 -0
  886. /package/{packages/core/dist → dist}/scripts/generate-report.js +0 -0
  887. /package/{packages/core/dist → dist}/scripts/generate-report.js.map +0 -0
  888. /package/{packages/core/dist → dist}/scripts/generate-report.test.d.ts +0 -0
  889. /package/{packages/core/dist → dist}/scripts/generate-report.test.d.ts.map +0 -0
  890. /package/{packages/core/dist → dist}/scripts/generate-report.test.js +0 -0
  891. /package/{packages/core/dist → dist}/scripts/generate-report.test.js.map +0 -0
  892. /package/{packages/core/dist → dist}/scripts/generate-spider-report.d.ts +0 -0
  893. /package/{packages/core/dist → dist}/scripts/generate-spider-report.d.ts.map +0 -0
  894. /package/{packages/core/dist → dist}/scripts/generate-spider-report.js +0 -0
  895. /package/{packages/core/dist → dist}/scripts/generate-spider-report.js.map +0 -0
  896. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.d.ts +0 -0
  897. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.d.ts.map +0 -0
  898. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.js +0 -0
  899. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.js.map +0 -0
  900. /package/{packages/core/dist → dist}/scripts/generate-spider.d.ts +0 -0
  901. /package/{packages/core/dist → dist}/scripts/generate-spider.d.ts.map +0 -0
  902. /package/{packages/core/dist → dist}/scripts/generate-spider.js +0 -0
  903. /package/{packages/core/dist → dist}/scripts/generate-spider.js.map +0 -0
  904. /package/{packages/core/dist → dist}/scripts/generate-spider.test.d.ts +0 -0
  905. /package/{packages/core/dist → dist}/scripts/generate-spider.test.d.ts.map +0 -0
  906. /package/{packages/core/dist → dist}/scripts/generate-spider.test.js +0 -0
  907. /package/{packages/core/dist → dist}/scripts/generate-spider.test.js.map +0 -0
  908. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.d.ts +0 -0
  909. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.d.ts.map +0 -0
  910. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.js +0 -0
  911. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.js.map +0 -0
  912. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.d.ts +0 -0
  913. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.d.ts.map +0 -0
  914. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.js +0 -0
  915. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.js.map +0 -0
  916. /package/{packages/core/dist → dist}/scripts/run-ci.test.d.ts +0 -0
  917. /package/{packages/core/dist → dist}/scripts/run-ci.test.d.ts.map +0 -0
  918. /package/{packages/core/dist → dist}/scripts/run-ci.test.js +0 -0
  919. /package/{packages/core/dist → dist}/scripts/run-ci.test.js.map +0 -0
  920. /package/{packages/core/dist → dist}/scripts/theme-detail.test.d.ts +0 -0
  921. /package/{packages/core/dist → dist}/scripts/theme-detail.test.d.ts.map +0 -0
  922. /package/{packages/core/dist → dist}/scripts/theme-detail.test.js +0 -0
  923. /package/{packages/core/dist → dist}/scripts/theme-detail.test.js.map +0 -0
  924. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.d.ts +0 -0
  925. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.d.ts.map +0 -0
  926. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.js +0 -0
  927. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.js.map +0 -0
  928. /package/{packages/core/dist → dist}/workflow/gate-handler.d.ts +0 -0
  929. /package/{packages/core/dist → dist}/workflow/gate-handler.d.ts.map +0 -0
  930. /package/{packages/core/dist → dist}/workflow/gate-handler.js +0 -0
  931. /package/{packages/core/dist → dist}/workflow/gate-handler.js.map +0 -0
  932. /package/{packages/core/dist → dist}/workflow/gate-handler.test.d.ts +0 -0
  933. /package/{packages/core/dist → dist}/workflow/gate-handler.test.d.ts.map +0 -0
  934. /package/{packages/core/dist → dist}/workflow/gate-handler.test.js +0 -0
  935. /package/{packages/core/dist → dist}/workflow/gate-handler.test.js.map +0 -0
  936. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.d.ts +0 -0
  937. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.d.ts.map +0 -0
  938. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.js +0 -0
  939. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.js.map +0 -0
  940. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.d.ts +0 -0
  941. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.d.ts.map +0 -0
  942. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.js +0 -0
  943. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.js.map +0 -0
  944. /package/{packages/core/dist → dist}/workflow/handoff.d.ts +0 -0
  945. /package/{packages/core/dist → dist}/workflow/handoff.d.ts.map +0 -0
  946. /package/{packages/core/dist → dist}/workflow/handoff.js +0 -0
  947. /package/{packages/core/dist → dist}/workflow/handoff.js.map +0 -0
  948. /package/{packages/core/dist → dist}/workflow/handoff.test.d.ts +0 -0
  949. /package/{packages/core/dist → dist}/workflow/handoff.test.d.ts.map +0 -0
  950. /package/{packages/core/dist → dist}/workflow/session-state.d.ts +0 -0
  951. /package/{packages/core/dist → dist}/workflow/session-state.d.ts.map +0 -0
  952. /package/{packages/core/dist → dist}/workflow/session-state.js +0 -0
  953. /package/{packages/core/dist → dist}/workflow/session-state.js.map +0 -0
  954. /package/{packages/core/dist → dist}/workflow/session-state.test.d.ts +0 -0
  955. /package/{packages/core/dist → dist}/workflow/session-state.test.d.ts.map +0 -0
  956. /package/{packages/core/dist → dist}/workflow/session-state.test.js +0 -0
  957. /package/{packages/core/dist → dist}/workflow/session-state.test.js.map +0 -0
  958. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.d.ts +0 -0
  959. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.d.ts.map +0 -0
  960. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.js +0 -0
  961. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.js.map +0 -0
  962. /package/{packages/core/dist → dist}/workflow/step-parser.d.ts +0 -0
  963. /package/{packages/core/dist → dist}/workflow/step-parser.d.ts.map +0 -0
  964. /package/{packages/core/dist → dist}/workflow/step-parser.js +0 -0
  965. /package/{packages/core/dist → dist}/workflow/step-parser.js.map +0 -0
  966. /package/{packages/core/dist → dist}/workflow/step-parser.test.d.ts +0 -0
  967. /package/{packages/core/dist → dist}/workflow/step-parser.test.d.ts.map +0 -0
  968. /package/{packages/core/dist → dist}/workflow/step-parser.test.js +0 -0
  969. /package/{packages/core/dist → dist}/workflow/step-parser.test.js.map +0 -0
  970. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.d.ts +0 -0
  971. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.d.ts.map +0 -0
  972. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.js +0 -0
  973. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.js.map +0 -0
  974. /package/{packages/core/dist → dist}/workflow/test-cache.d.ts +0 -0
  975. /package/{packages/core/dist → dist}/workflow/test-cache.d.ts.map +0 -0
  976. /package/{packages/core/dist → dist}/workflow/test-cache.js +0 -0
  977. /package/{packages/core/dist → dist}/workflow/test-cache.js.map +0 -0
  978. /package/{packages/core/dist → dist}/workflow/test-cache.test.d.ts +0 -0
  979. /package/{packages/core/dist → dist}/workflow/test-cache.test.d.ts.map +0 -0
  980. /package/{packages/core/dist → dist}/workflow/test-cache.test.js +0 -0
  981. /package/{packages/core/dist → dist}/workflow/test-cache.test.js.map +0 -0
  982. /package/{packages/core/dist → dist}/workflow/trimodal.d.ts +0 -0
  983. /package/{packages/core/dist → dist}/workflow/trimodal.d.ts.map +0 -0
  984. /package/{packages/core/dist → dist}/workflow/trimodal.js +0 -0
  985. /package/{packages/core/dist → dist}/workflow/trimodal.js.map +0 -0
  986. /package/{packages/core/dist → dist}/workflow/trimodal.test.d.ts +0 -0
  987. /package/{packages/core/dist → dist}/workflow/trimodal.test.d.ts.map +0 -0
  988. /package/{packages/core/dist → dist}/workflow/trimodal.test.js +0 -0
  989. /package/{packages/core/dist → dist}/workflow/trimodal.test.js.map +0 -0
  990. /package/{packages/core/dist → dist}/workflow/variable-resolver.d.ts +0 -0
  991. /package/{packages/core/dist → dist}/workflow/variable-resolver.d.ts.map +0 -0
  992. /package/{packages/core/dist → dist}/workflow/variable-resolver.js +0 -0
  993. /package/{packages/core/dist → dist}/workflow/variable-resolver.js.map +0 -0
  994. /package/{packages/core/dist → dist}/workflow/variable-resolver.test.d.ts +0 -0
  995. /package/{packages/core/dist → dist}/workflow/variable-resolver.test.d.ts.map +0 -0
  996. /package/{packages/core/dist → dist}/workflow/variable-resolver.test.js +0 -0
  997. /package/{packages/core/dist → dist}/workflow/variable-resolver.test.js.map +0 -0
  998. /package/{packages/core/dist → dist}/workflow/workflow-executor.d.ts +0 -0
  999. /package/{packages/core/dist → dist}/workflow/workflow-executor.d.ts.map +0 -0
  1000. /package/{packages/core/dist → dist}/workflow/workflow-executor.js +0 -0
  1001. /package/{packages/core/dist → dist}/workflow/workflow-executor.js.map +0 -0
  1002. /package/{packages/core/dist → dist}/workflow/workflow-executor.test.d.ts +0 -0
  1003. /package/{packages/core/dist → dist}/workflow/workflow-executor.test.d.ts.map +0 -0
  1004. /package/{packages/core/dist → dist}/workflow/workflow-executor.test.js +0 -0
  1005. /package/{packages/core/dist → dist}/workflow/workflow-executor.test.js.map +0 -0
  1006. /package/{packages/core/dist → dist}/workflow/workflow-loader.d.ts +0 -0
  1007. /package/{packages/core/dist → dist}/workflow/workflow-loader.d.ts.map +0 -0
  1008. /package/{packages/core/dist → dist}/workflow/workflow-loader.js +0 -0
  1009. /package/{packages/core/dist → dist}/workflow/workflow-loader.js.map +0 -0
  1010. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.d.ts +0 -0
  1011. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.d.ts.map +0 -0
  1012. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.js +0 -0
  1013. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.js.map +0 -0
  1014. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.d.ts +0 -0
  1015. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.d.ts.map +0 -0
  1016. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.js +0 -0
  1017. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.js.map +0 -0
  1018. /package/{packages/core/dist → dist}/workflow/workflow-permissions.d.ts +0 -0
  1019. /package/{packages/core/dist → dist}/workflow/workflow-permissions.d.ts.map +0 -0
  1020. /package/{packages/core/dist → dist}/workflow/workflow-permissions.js +0 -0
  1021. /package/{packages/core/dist → dist}/workflow/workflow-permissions.js.map +0 -0
  1022. /package/{packages/core/dist → dist}/workflow/workflow-permissions.test.d.ts +0 -0
  1023. /package/{packages/core/dist → dist}/workflow/workflow-permissions.test.d.ts.map +0 -0
  1024. /package/{packages/core/dist → dist}/workflow/workflow-permissions.test.js +0 -0
  1025. /package/{packages/core/dist → dist}/workflow/workflow-permissions.test.js.map +0 -0
  1026. /package/{packages/core/dist → dist}/workflow/workflow-router.d.ts +0 -0
  1027. /package/{packages/core/dist → dist}/workflow/workflow-router.d.ts.map +0 -0
  1028. /package/{packages/core/dist → dist}/workflow/workflow-router.js +0 -0
  1029. /package/{packages/core/dist → dist}/workflow/workflow-router.js.map +0 -0
  1030. /package/{packages/core/dist → dist}/workflow/workflow-router.test.d.ts +0 -0
  1031. /package/{packages/core/dist → dist}/workflow/workflow-router.test.d.ts.map +0 -0
  1032. /package/{packages/core/dist → dist}/workflow/workflow-router.test.js +0 -0
  1033. /package/{packages/core/dist → dist}/workflow/workflow-router.test.js.map +0 -0
  1034. /package/{packages/core/dist → dist}/workflow/workflow-schema.d.ts +0 -0
  1035. /package/{packages/core/dist → dist}/workflow/workflow-schema.d.ts.map +0 -0
  1036. /package/{packages/core/dist → dist}/workflow/workflow-schema.js +0 -0
  1037. /package/{packages/core/dist → dist}/workflow/workflow-schema.js.map +0 -0
  1038. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.d.ts +0 -0
  1039. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.d.ts.map +0 -0
  1040. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.js +0 -0
  1041. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.js.map +0 -0
  1042. /package/{packages/core/dist → dist}/workflow/workflow-stepped-schema.test.d.ts +0 -0
  1043. /package/{packages/core/dist → dist}/workflow/workflow-stepped-schema.test.d.ts.map +0 -0
@@ -1,148 +0,0 @@
1
- #!/bin/bash
2
- # Promote an epic from future.yaml to current-sprint.yaml
3
- # Usage: .pennyfarthing/scripts/sprint/promote-epic.sh <epic-id>
4
- #
5
- # Example: .pennyfarthing/scripts/sprint/promote-epic.sh epic-41
6
- #
7
- # Features:
8
- # - Detects ID collisions and assigns new ID if needed
9
- # - Uses yq for proper YAML array insertion
10
- # - Automatically removes from future.yaml after successful promotion
11
-
12
- set -euo pipefail
13
-
14
- EPIC_ID="${1:-}"
15
-
16
- if [[ -z "$EPIC_ID" ]]; then
17
- echo "Usage: promote-epic.sh <epic-id>"
18
- echo "Example: promote-epic.sh epic-41"
19
- echo ""
20
- echo "Moves an epic and its stories from future.yaml to current-sprint.yaml"
21
- exit 1
22
- fi
23
-
24
- # Find project root
25
- source "$(dirname "${BASH_SOURCE[0]}")/../lib/find-root.sh"
26
-
27
- FUTURE_FILE="$PROJECT_ROOT/sprint/future.yaml"
28
- SPRINT_FILE="$PROJECT_ROOT/sprint/current-sprint.yaml"
29
-
30
- if [[ ! -f "$FUTURE_FILE" ]]; then
31
- echo "Error: Future file not found at $FUTURE_FILE"
32
- exit 1
33
- fi
34
-
35
- if [[ ! -f "$SPRINT_FILE" ]]; then
36
- echo "Error: Sprint file not found at $SPRINT_FILE"
37
- exit 1
38
- fi
39
-
40
- if ! command -v yq &> /dev/null; then
41
- echo "Error: yq is required but not installed"
42
- echo "Install with: brew install yq"
43
- exit 1
44
- fi
45
-
46
- # Find the epic in future.yaml
47
- # Epics are nested under future.initiatives[].epics[]
48
- EPIC_DATA=$(yq -o json ".future.initiatives[].epics[] | select(.id == \"$EPIC_ID\")" "$FUTURE_FILE" 2>/dev/null || echo "")
49
-
50
- if [[ -z "$EPIC_DATA" || "$EPIC_DATA" == "null" ]]; then
51
- echo "Error: Epic $EPIC_ID not found in $FUTURE_FILE"
52
- echo ""
53
- echo "Available epics:"
54
- yq '.future.initiatives[].epics[].id' "$FUTURE_FILE" 2>/dev/null || echo " None found"
55
- exit 1
56
- fi
57
-
58
- # Check for ID collision in current-sprint.yaml
59
- EXISTING_ID=$(yq ".epics[] | select(.id == \"$EPIC_ID\") | .id" "$SPRINT_FILE" 2>/dev/null || echo "")
60
-
61
- NEW_EPIC_ID="$EPIC_ID"
62
- if [[ -n "$EXISTING_ID" && "$EXISTING_ID" != "null" ]]; then
63
- echo "Warning: Epic ID $EPIC_ID already exists in current sprint."
64
-
65
- # Find the highest epic-N ID and increment
66
- MAX_EPIC_NUM=$(yq '.epics[].id' "$SPRINT_FILE" 2>/dev/null | grep -oE 'epic-[0-9]+' | sed 's/epic-//' | sort -n | tail -1 || echo "0")
67
- if [[ -z "$MAX_EPIC_NUM" ]]; then
68
- MAX_EPIC_NUM=0
69
- fi
70
- NEW_EPIC_NUM=$((MAX_EPIC_NUM + 1))
71
- NEW_EPIC_ID="epic-$NEW_EPIC_NUM"
72
-
73
- echo "Assigning new ID: $NEW_EPIC_ID"
74
- echo ""
75
- fi
76
-
77
- # Extract epic fields
78
- EPIC_TITLE=$(echo "$EPIC_DATA" | yq -r '.title // "Unknown"')
79
- EPIC_DESCRIPTION=$(echo "$EPIC_DATA" | yq -r '.description // ""')
80
- EPIC_POINTS=$(echo "$EPIC_DATA" | yq -r '.points // 0')
81
- EPIC_PRIORITY=$(echo "$EPIC_DATA" | yq -r '.priority // "P2"')
82
- EPIC_REPOS=$(echo "$EPIC_DATA" | yq -r '.repos // "pennyfarthing"')
83
- STORY_COUNT=$(echo "$EPIC_DATA" | yq '[.stories[]] | length')
84
-
85
- echo ""
86
- echo "Promoting epic to current sprint:"
87
- echo " Original ID: $EPIC_ID"
88
- if [[ "$NEW_EPIC_ID" != "$EPIC_ID" ]]; then
89
- echo " New ID: $NEW_EPIC_ID"
90
- fi
91
- echo " Title: $EPIC_TITLE"
92
- echo " Points: $EPIC_POINTS"
93
- echo " Priority: $EPIC_PRIORITY"
94
- echo " Stories: $STORY_COUNT"
95
- echo ""
96
-
97
- # Build the new epic object as JSON, then use yq to append it properly
98
- # This ensures valid YAML structure
99
-
100
- # Extract old epic ID prefix for updating story IDs (e.g., "64" from "epic-64")
101
- OLD_ID_NUM=$(echo "$EPIC_ID" | sed 's/epic-//')
102
- NEW_ID_NUM=$(echo "$NEW_EPIC_ID" | sed 's/epic-//')
103
-
104
- # Create a temp file for the new epic
105
- TEMP_EPIC=$(mktemp)
106
- trap "rm -f $TEMP_EPIC" EXIT
107
-
108
- # Transform the epic data: update IDs, add required fields, format for current-sprint.yaml
109
- # Note: Using -o yaml for Go yq (not -y which is Python yq)
110
- echo "$EPIC_DATA" | yq -o yaml "
111
- .id = \"$NEW_EPIC_ID\" |
112
- .type = \"epic\" |
113
- .title = \"Epic: \" + .title |
114
- .status = \"backlog\" |
115
- .stories = [.stories[] |
116
- .id = ((.id | tostring) | sub(\"^${OLD_ID_NUM}-\"; \"${NEW_ID_NUM}-\")) |
117
- .status = \"backlog\" |
118
- .repos = (.repos // \"pennyfarthing\") |
119
- .workflow = (.workflow // \"tdd\") |
120
- .priority = (.priority // \"P2\") |
121
- .acceptance_criteria = (.acceptance_criteria // [])
122
- ]
123
- " > "$TEMP_EPIC"
124
-
125
- echo "Epic to add:"
126
- echo "---"
127
- cat "$TEMP_EPIC"
128
- echo "---"
129
- echo ""
130
-
131
- # Use yq to properly append the epic to the epics array
132
- yq eval -i ".epics += [$(cat "$TEMP_EPIC" | yq -o json)]" "$SPRINT_FILE"
133
-
134
- echo "Successfully added epic to $SPRINT_FILE"
135
-
136
- # Remove from future.yaml
137
- echo ""
138
- echo "Removing from future.yaml..."
139
- yq eval -i "del(.future.initiatives[].epics[] | select(.id == \"$EPIC_ID\"))" "$FUTURE_FILE"
140
- echo "Removed $EPIC_ID from future.yaml"
141
-
142
- echo ""
143
- echo "Promotion complete!"
144
- echo ""
145
- echo "Next steps:"
146
- echo " 1. Review the epic in $SPRINT_FILE"
147
- echo " 2. Create Jira epic: .pennyfarthing/scripts/jira/create-jira-epic.sh $NEW_EPIC_ID"
148
- echo " 3. Start work: /sprint work ${NEW_ID_NUM}-1"
@@ -1,415 +0,0 @@
1
- #!/usr/bin/env zsh
2
- # Sprint Common Functions
3
- # Shared functions for sprint management
4
- #
5
- # Usage: Scripts must set up PROJECT_ROOT before sourcing this file:
6
- # SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd -P)"
7
- # source "$SCRIPT_DIR/../lib/find-root.sh"
8
- # source "$SCRIPT_DIR/sprint-common.sh"
9
-
10
- # Jira project identifier
11
- export JIRA_PROJECT="MSSCI"
12
-
13
- # Require PROJECT_ROOT to be set
14
- if [[ -z "${PROJECT_ROOT:-}" ]]; then
15
- echo "Error: PROJECT_ROOT must be set before sourcing sprint-common.sh" >&2
16
- echo "Source lib/find-root.sh first" >&2
17
- exit 1
18
- fi
19
-
20
- # find_story_file STORY_KEY
21
- # Search for a story in sprint YAML files
22
- # Returns: path to the YAML file containing the story
23
- find_story_file() {
24
- local story_key="$1"
25
-
26
- # Extract epic number from story key (e.g., "11-9" from "11-9-theme-maker")
27
- local epic_num="${story_key%%-*}"
28
-
29
- # Check current sprint first
30
- if [[ -f "$PROJECT_ROOT/sprint/current-sprint.yaml" ]]; then
31
- # Simple check: grep for the story key in the file
32
- if grep -q "id: \"$epic_num-" "$PROJECT_ROOT/sprint/current-sprint.yaml" 2>/dev/null; then
33
- echo "$PROJECT_ROOT/sprint/current-sprint.yaml"
34
- return 0
35
- fi
36
- fi
37
-
38
- # Check archived sprints
39
- local archive_dir="$PROJECT_ROOT/sprint/archive"
40
- if [[ -d "$archive_dir" ]]; then
41
- local found=$(grep -l "id: \"$epic_num-" "$archive_dir"/*.yaml 2>/dev/null | head -1)
42
- if [[ -n "$found" ]]; then
43
- echo "$found"
44
- return 0
45
- fi
46
- fi
47
-
48
- return 1
49
- }
50
-
51
- # get_story_field STORY_KEY FIELD_NAME
52
- # Extract a field value from a story in sprint YAML
53
- # Returns: the field value or "null"
54
- get_story_field() {
55
- local story_key="$1"
56
- local field_name="$2"
57
-
58
- # Extract epic and story numbers from story key
59
- local epic_num="${story_key%%-*}"
60
- local story_rest="${story_key#*-}"
61
- local story_num="${story_rest%%-*}"
62
-
63
- local story_file=$(find_story_file "$story_key")
64
- if [[ -z "$story_file" ]]; then
65
- echo "null"
66
- return 1
67
- fi
68
-
69
- # Use yq to extract the field if available, otherwise fallback to grep
70
- if command -v yq &> /dev/null; then
71
- yq eval ".epics[] | select(.id == \"$epic_num\") | .stories[] | select(.id == \"$story_num\") | .$field_name" "$story_file" 2>/dev/null || echo "null"
72
- else
73
- # Fallback: grep for the pattern and extract value
74
- # This is a simplified approach - full YAML parsing is better
75
- grep -A 50 "id: \"$story_key" "$story_file" 2>/dev/null | grep "$field_name:" | head -1 | sed "s/.*$field_name:[[:space:]]*\(.*\)/\1/" || echo "null"
76
- fi
77
- }
78
-
79
- # extract_jira_key JIRA_URL_OR_KEY
80
- # Extract Jira issue key from URL or return as-is
81
- # Returns: MSSCI-12345 format
82
- extract_jira_key() {
83
- local input="$1"
84
-
85
- # If already in key format, return as-is
86
- if [[ "$input" =~ ^${JIRA_PROJECT}-[0-9]+$ ]]; then
87
- echo "$input"
88
- return 0
89
- fi
90
-
91
- # If it's a URL, extract the key
92
- if [[ "$input" =~ ${JIRA_PROJECT}-[0-9]+ ]]; then
93
- grep -o "${JIRA_PROJECT}-[0-9]\+" <<< "$input"
94
- return 0
95
- fi
96
-
97
- # Return input as-is if no extraction possible
98
- echo "$input"
99
- return 1
100
- }
101
-
102
- # extract_story_id BRANCH_NAME
103
- # Extract story ID from branch name pattern feat/X-Y-*
104
- # Returns: X-Y (e.g., "8-1" from "feat/8-1-merge-detection")
105
- # Returns empty string for non-matching branches
106
- extract_story_id() {
107
- local branch="$1"
108
-
109
- # Match pattern: feat/EPIC-STORY-description or feat/EPIC-STORY
110
- # Uses basic regex compatible with both bash and zsh
111
- if [[ "$branch" =~ ^feat/([0-9]+-[0-9]+) ]]; then
112
- echo "${match[1]:-${BASH_REMATCH[1]}}"
113
- fi
114
- # Returns empty string for non-matching patterns
115
- }
116
-
117
- # update_story_status STORY_ID [NEW_STATUS]
118
- # Update story status in sprint YAML and add completed date
119
- # Uses yq for YAML manipulation
120
- # Arguments:
121
- # STORY_ID - Story identifier (e.g., "8-1")
122
- # NEW_STATUS - Optional status, defaults to "done"
123
- update_story_status() {
124
- local story_id="$1"
125
- local new_status="${2:-done}"
126
- local completed_date
127
- completed_date=$(date +%Y-%m-%d)
128
-
129
- local sprint_file="$PROJECT_ROOT/sprint/current-sprint.yaml"
130
-
131
- if [[ ! -f "$sprint_file" ]]; then
132
- return 1
133
- fi
134
-
135
- # Check if yq is available
136
- if ! command -v yq &>/dev/null; then
137
- echo "Warning: yq not found, cannot update sprint YAML" >&2
138
- return 1
139
- fi
140
-
141
- # Extract epic and story numbers
142
- local epic_num="${story_id%%-*}"
143
- local story_num="${story_id#*-}"
144
-
145
- # Update status and add completed date using yq
146
- yq eval -i "
147
- (.epics[] | select(.id == \"$epic_num\") | .stories[] | select(.id == \"$story_num\")).status = \"$new_status\" |
148
- (.epics[] | select(.id == \"$epic_num\") | .stories[] | select(.id == \"$story_num\")).completed = \"$completed_date\"
149
- " "$sprint_file"
150
-
151
- return $?
152
- }
153
-
154
- # log_reconciliation STORY_ID MESSAGE
155
- # Log reconciliation event to .session/ directory
156
- # Arguments:
157
- # STORY_ID - Story identifier (e.g., "8-1")
158
- # MESSAGE - Optional message, defaults to "Merge detected"
159
- log_reconciliation() {
160
- local story_id="$1"
161
- local message="${2:-Merge detected}"
162
- local timestamp
163
- timestamp=$(date +"%Y-%m-%d %H:%M:%S")
164
-
165
- local session_dir="$PROJECT_ROOT/.session"
166
-
167
- # Ensure session directory exists
168
- mkdir -p "$session_dir"
169
-
170
- local log_file="$session_dir/reconciliation.log"
171
-
172
- echo "[$timestamp] Story $story_id: $message" >> "$log_file"
173
- }
174
-
175
- # detect_drift
176
- # Detect stories that have been merged but not marked as done in YAML or Jira
177
- # Scans git log for recent merges (past 7 days) and compares against YAML/Jira status
178
- # Returns: list of drifted stories in "story_id:yaml_status:jira_status" format
179
- # A story is "drifted" when its branch was merged but YAML or Jira still shows in_progress
180
- detect_drift() {
181
- local drifted=()
182
-
183
- # Get recently merged branches (past 7 days)
184
- # Look for feat/X-Y-* pattern in merge commit messages
185
- local merged_branches
186
- merged_branches=$(git log --merges --oneline --since="7 days ago" develop 2>/dev/null | \
187
- grep -oE 'feat/[0-9]+-[0-9]+[^[:space:]]*' | sort -u)
188
-
189
- for branch in $merged_branches; do
190
- # Use extract_story_id to parse branch name
191
- local story_id
192
- story_id=$(extract_story_id "$branch")
193
-
194
- if [[ -n "$story_id" ]]; then
195
- # Check current status in YAML via get_story_field
196
- local yaml_status
197
- yaml_status=$(get_story_field "$story_id" "status")
198
-
199
- # Get Jira key and check Jira status
200
- local jira_key jira_status
201
- jira_key=$(get_story_field "$story_id" "jira")
202
- jira_status="unknown"
203
-
204
- if [[ -n "$jira_key" && "$jira_key" != "null" ]]; then
205
- # Query Jira for current status
206
- jira_status=$(jira issue view "$jira_key" --raw 2>/dev/null | \
207
- jq -r '.fields.status.name // "unknown"' 2>/dev/null || echo "unknown")
208
- fi
209
-
210
- # Story is drifted if merged but YAML status is not "done" and not "backlog"
211
- # OR if Jira status is not "Done" (case-insensitive check)
212
- local yaml_drifted=false
213
- local jira_drifted=false
214
-
215
- if [[ "$yaml_status" != "done" && "$yaml_status" != "backlog" && "$yaml_status" != "null" ]]; then
216
- yaml_drifted=true
217
- fi
218
-
219
- # Check Jira drift - status should be "Done" for merged stories
220
- if [[ "$jira_status" != "unknown" && "$jira_status" != "Done" && "$jira_status" != "Closed" ]]; then
221
- jira_drifted=true
222
- fi
223
-
224
- # Report if either YAML or Jira is drifted
225
- if [[ "$yaml_drifted" == "true" || "$jira_drifted" == "true" ]]; then
226
- drifted+=("$story_id:$yaml_status:$jira_status")
227
- fi
228
- fi
229
- done
230
-
231
- # Output drifted stories (one per line)
232
- printf '%s\n' "${drifted[@]}" 2>/dev/null || true
233
- }
234
-
235
- # =============================================================================
236
- # Sprint Summary Functions
237
- # =============================================================================
238
-
239
- # get_sprint_file
240
- # Returns path to current sprint YAML file
241
- get_sprint_file() {
242
- echo "$PROJECT_ROOT/sprint/current-sprint.yaml"
243
- }
244
-
245
- # check_yq
246
- # Verify yq is available, return error message if not
247
- # Returns: 0 if yq available, 1 if not
248
- check_yq() {
249
- if ! command -v yq &>/dev/null; then
250
- echo "Error: yq is required but not installed. Install with: brew install yq" >&2
251
- return 1
252
- fi
253
- return 0
254
- }
255
-
256
- # get_sprint_metadata FIELD
257
- # Extract a field from sprint metadata
258
- # Arguments:
259
- # FIELD - Field name (number, name, goal, start_date, end_date, status)
260
- # Returns: field value or empty string
261
- get_sprint_metadata() {
262
- local field="$1"
263
- local sprint_file
264
- sprint_file=$(get_sprint_file)
265
-
266
- if [[ ! -f "$sprint_file" ]]; then
267
- return 1
268
- fi
269
-
270
- check_yq || return 1
271
- yq eval ".sprint.$field // \"\"" "$sprint_file" 2>/dev/null
272
- }
273
-
274
- # get_sprint_summary
275
- # Get one-line sprint summary: "Sprint N: Goal"
276
- # Returns: formatted summary string
277
- get_sprint_summary() {
278
- local sprint_num sprint_goal
279
- sprint_num=$(get_sprint_metadata "number")
280
- sprint_goal=$(get_sprint_metadata "goal")
281
-
282
- if [[ -n "$sprint_num" && "$sprint_num" != "null" ]]; then
283
- echo "Sprint ${sprint_num}: ${sprint_goal}"
284
- fi
285
- }
286
-
287
- # sum_points VALUES
288
- # Sum a list of point values (one per line)
289
- # Arguments:
290
- # VALUES - newline-separated point values from yq
291
- # Returns: integer sum
292
- sum_points() {
293
- local result
294
- result=$(echo "$1" | paste -sd+ - | bc 2>/dev/null)
295
- echo "${result:-0}"
296
- }
297
-
298
- # get_sprint_progress
299
- # Get sprint progress as "completed/total points"
300
- # Returns: formatted progress string
301
- get_sprint_progress() {
302
- local sprint_file
303
- sprint_file=$(get_sprint_file)
304
-
305
- if [[ ! -f "$sprint_file" ]]; then
306
- return 1
307
- fi
308
-
309
- check_yq || return 1
310
-
311
- # Get summary fields if available
312
- local completed total
313
- completed=$(yq '.summary.completed_points // 0' "$sprint_file" 2>/dev/null)
314
- total=$(yq '.summary.total_points // 0' "$sprint_file" 2>/dev/null)
315
-
316
- # If summary not available, calculate from stories
317
- if [[ "$total" == "0" || "$total" == "null" ]]; then
318
- total=$(sum_points "$(yq '.epics[].stories[].points' "$sprint_file" 2>/dev/null)")
319
- fi
320
-
321
- echo "Progress: ${completed:-0}/${total:-0} points"
322
- }
323
-
324
- # get_story_counts
325
- # Get story counts by status
326
- # Returns: "backlog:N in_progress:N done:N" format
327
- get_story_counts() {
328
- local sprint_file
329
- sprint_file=$(get_sprint_file)
330
-
331
- if [[ ! -f "$sprint_file" ]]; then
332
- return 1
333
- fi
334
-
335
- check_yq || return 1
336
-
337
- local backlog in_progress done
338
- backlog=$(yq eval '[.epics[].stories[] | select(.status == "backlog")] | length' "$sprint_file" 2>/dev/null)
339
- in_progress=$(yq eval '[.epics[].stories[] | select(.status == "in_progress")] | length' "$sprint_file" 2>/dev/null)
340
- done=$(yq eval '[.epics[].stories[] | select(.status == "done")] | length' "$sprint_file" 2>/dev/null)
341
-
342
- echo "backlog:${backlog:-0} in_progress:${in_progress:-0} done:${done:-0}"
343
- }
344
-
345
- # get_point_counts
346
- # Get point totals by status
347
- # Returns: "backlog:N in_progress:N done:N total:N" format
348
- get_point_counts() {
349
- local sprint_file
350
- sprint_file=$(get_sprint_file)
351
-
352
- if [[ ! -f "$sprint_file" ]]; then
353
- return 1
354
- fi
355
-
356
- check_yq || return 1
357
-
358
- local backlog in_progress total
359
- total=$(sum_points "$(yq '.epics[].stories[].points' "$sprint_file" 2>/dev/null)")
360
- backlog=$(sum_points "$(yq '.epics[].stories[] | select(.status == "backlog") | .points' "$sprint_file" 2>/dev/null)")
361
- in_progress=$(sum_points "$(yq '.epics[].stories[] | select(.status == "in_progress") | .points' "$sprint_file" 2>/dev/null)")
362
-
363
- echo "backlog:${backlog:-0} in_progress:${in_progress:-0} total:${total:-0}"
364
- }
365
-
366
- # =============================================================================
367
- # Drift Detection Functions
368
- # =============================================================================
369
-
370
- # reconcile_drift STORY_ID
371
- # Auto-reconcile a drifted story by updating YAML status to done and Jira to Done
372
- # Logs the reconciliation event
373
- # Arguments:
374
- # STORY_ID - Story identifier (e.g., "8-1")
375
- reconcile_drift() {
376
- local story_id="$1"
377
-
378
- if [[ -z "$story_id" ]]; then
379
- echo "Error: story_id required" >&2
380
- return 1
381
- fi
382
-
383
- local yaml_updated=false
384
- local jira_updated=false
385
- local messages=()
386
-
387
- # Update YAML status to done
388
- update_story_status "$story_id" "done"
389
- if [[ $? -eq 0 ]]; then
390
- yaml_updated=true
391
- messages+=("YAML status updated to done")
392
- fi
393
-
394
- # Get Jira key and transition to Done
395
- local jira_key
396
- jira_key=$(get_story_field "$story_id" "jira")
397
-
398
- if [[ -n "$jira_key" && "$jira_key" != "null" ]]; then
399
- # Try to transition Jira to Done
400
- if jira issue move "$jira_key" "Done" 2>/dev/null; then
401
- jira_updated=true
402
- messages+=("Jira $jira_key transitioned to Done")
403
- else
404
- messages+=("Jira $jira_key transition failed (may need manual update)")
405
- fi
406
- fi
407
-
408
- # Log the reconciliation event
409
- if [[ "$yaml_updated" == "true" || "$jira_updated" == "true" ]]; then
410
- log_reconciliation "$story_id" "Auto-reconciled: ${messages[*]}"
411
- return 0
412
- else
413
- return 1
414
- fi
415
- }
@@ -1,33 +0,0 @@
1
- #!/bin/bash
2
- # Output sprint info as JSON for Cyclist sidebar
3
- # Usage: .pennyfarthing/scripts/sprint/sprint-info.sh
4
- #
5
- # Returns: {"remaining": N, "inProgress": N, "endDate": "YYYY-MM-DD"}
6
-
7
- set -euo pipefail
8
-
9
- # Find project root
10
- source "$(dirname "${BASH_SOURCE[0]}")/../lib/find-root.sh"
11
-
12
- SPRINT_FILE="$PROJECT_ROOT/sprint/current-sprint.yaml"
13
-
14
- if [[ ! -f "$SPRINT_FILE" ]]; then
15
- echo '{"remaining": 0, "inProgress": 0, "endDate": null}'
16
- exit 0
17
- fi
18
-
19
- # Extract end date
20
- END_DATE=$(yq -r '.sprint.end_date // ""' "$SPRINT_FILE")
21
- if [[ -z "$END_DATE" || "$END_DATE" == "null" ]]; then
22
- END_DATE="null"
23
- else
24
- END_DATE="\"$END_DATE\""
25
- fi
26
-
27
- # Calculate remaining points (backlog stories) - use awk for sum since yq add is problematic
28
- REMAINING=$(yq '.epics[].stories[] | select(.status == "backlog" or .status == null) | .points // 0' "$SPRINT_FILE" 2>/dev/null | awk '{sum+=$1} END {print sum+0}')
29
-
30
- # Calculate in-progress points
31
- IN_PROGRESS=$(yq '.epics[].stories[] | select(.status == "in_progress") | .points // 0' "$SPRINT_FILE" 2>/dev/null | awk '{sum+=$1} END {print sum+0}')
32
-
33
- echo "{\"remaining\": $REMAINING, \"inProgress\": $IN_PROGRESS, \"endDate\": $END_DATE}"