@pennyfarthing/core 11.3.3 → 11.3.5

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 (577) hide show
  1. package/README.md +1 -1
  2. package/package.json +3 -2
  3. package/packages/core/dist/workflow/__test_context_watch__/.session/.tandem-turn-counter +1 -0
  4. package/packages/core/dist/workflow/__test_context_watch__/.session/95-6-session.md +3 -0
  5. package/packages/core/dist/workflow/__test_context_watch__/.session/95-6-tandem-architect.md +6 -0
  6. package/packages/core/dist/workflow/__test_file_watch__/.session/95-4-tandem-architect.md +6 -0
  7. package/packages/core/dist/workflow/__test_file_watch__/workdir/trigger.ts +1 -0
  8. package/packages/core/dist/workflow/__test_tool_watch__/.session/95-5-tandem-architect.md +6 -0
  9. package/packages/core/dist/workflow/__test_tool_watch__/.session/95-5-tandem-toolcalls.jsonl +1 -0
  10. package/packages/core/dist/workflow/cross-entity-validation.d.ts +117 -0
  11. package/packages/core/dist/workflow/cross-entity-validation.d.ts.map +1 -0
  12. package/packages/core/dist/workflow/cross-entity-validation.js +148 -0
  13. package/packages/core/dist/workflow/cross-entity-validation.js.map +1 -0
  14. package/packages/core/dist/workflow/cross-entity-validation.test.d.ts +10 -0
  15. package/packages/core/dist/workflow/cross-entity-validation.test.d.ts.map +1 -0
  16. package/packages/core/dist/workflow/cross-entity-validation.test.js +512 -0
  17. package/packages/core/dist/workflow/cross-entity-validation.test.js.map +1 -0
  18. package/pennyfarthing-dist/agents/sm-finish.md +2 -2
  19. package/pennyfarthing-dist/agents/testing-runner.md +1 -1
  20. package/pennyfarthing-dist/commands/pf-prime.md +1 -1
  21. package/pennyfarthing-dist/guides/agent-behavior.md +1 -1
  22. package/pennyfarthing-dist/guides/bikerack.md +1 -1
  23. package/pennyfarthing-dist/guides/brownfield-tools.md +7 -7
  24. package/pennyfarthing-dist/guides/gates.md +3 -3
  25. package/pennyfarthing-dist/guides/handoff-cli.md +6 -6
  26. package/pennyfarthing-dist/guides/prime.md +6 -6
  27. package/pennyfarthing-dist/guides/scale-levels.md +1 -1
  28. package/pennyfarthing-dist/personas/themes/firefly.yaml +4 -4
  29. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/CLAUDE.md +2 -2
  30. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/README.md +2 -2
  31. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/__pycache__/__init__.cpython-314.pyc +0 -0
  32. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/__pycache__/cli.cpython-314.pyc +0 -0
  33. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/__pycache__/context.cpython-314.pyc +0 -0
  34. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/__pycache__/__init__.cpython-314.pyc +0 -0
  35. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/__pycache__/cli.cpython-314.pyc +0 -0
  36. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/__pycache__/focus.cpython-314.pyc +0 -0
  37. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/__pycache__/split.cpython-314.pyc +0 -0
  38. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/cli.py +3 -3
  39. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/focus.py +1 -1
  40. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/split.py +1 -1
  41. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bellmode_hook.py +2 -2
  42. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/__init__.py +1 -1
  43. package/pennyfarthing-dist/pf/bikerack/__main__.py +5 -0
  44. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/__pycache__/__init__.cpython-314.pyc +0 -0
  45. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/__pycache__/cli.cpython-314.pyc +0 -0
  46. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/__pycache__/launcher.cpython-314.pyc +0 -0
  47. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/audit_log_panel.py +1 -1
  48. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/background_panel.py +1 -1
  49. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/changed_panel.py +2 -2
  50. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/cli.py +3 -3
  51. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/context_meter_footer.py +1 -1
  52. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/debug_panel.py +1 -1
  53. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/diffs_panel.py +1 -1
  54. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/git_panel.py +1 -1
  55. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/launcher.py +2 -2
  56. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/portrait_resolver.py +2 -2
  57. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/progress_panel.py +1 -1
  58. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/sprint_panel.py +3 -3
  59. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/story_detail_data.py +1 -1
  60. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/story_detail_screen.py +2 -2
  61. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/tui.py +17 -17
  62. package/pennyfarthing-dist/pf/bmad/__pycache__/__init__.cpython-314.pyc +0 -0
  63. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/__pycache__/cli.cpython-314.pyc +0 -0
  64. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/cli.py +7 -7
  65. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/importer.py +4 -4
  66. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/sync.py +9 -9
  67. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/test_parser.py +2 -2
  68. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/test_sync.py +2 -2
  69. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/brownfield/__init__.py +1 -1
  70. package/pennyfarthing-dist/pf/brownfield/__main__.py +8 -0
  71. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/brownfield/cli.py +2 -2
  72. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/cli.py +24 -24
  73. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/codemarkers/__init__.py +2 -2
  74. package/pennyfarthing-dist/pf/codemarkers/__main__.py +6 -0
  75. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/codemarkers/analyze.py +1 -1
  76. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/codemarkers/cli.py +8 -8
  77. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/codemarkers/formatters.py +2 -2
  78. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/__init__.py +2 -2
  79. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/__pycache__/__init__.cpython-314.pyc +0 -0
  80. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/__pycache__/config.cpython-314.pyc +0 -0
  81. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/__pycache__/output.cpython-314.pyc +0 -0
  82. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/pr_config.py +1 -1
  83. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/themes.py +1 -1
  84. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/complexity/__init__.py +2 -2
  85. package/pennyfarthing-dist/pf/complexity/__main__.py +6 -0
  86. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/complexity/analyze.py +1 -1
  87. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/complexity/cli.py +4 -4
  88. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/complexity/formatters.py +1 -1
  89. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/config.py +2 -2
  90. package/pennyfarthing-dist/pf/consultation/__pycache__/__init__.cpython-314.pyc +0 -0
  91. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/consultation/__pycache__/cli.cpython-314.pyc +0 -0
  92. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/consultation/cli.py +5 -5
  93. package/pennyfarthing-dist/pf/deadcode/__main__.py +6 -0
  94. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/__pycache__/__init__.cpython-314.pyc +0 -0
  95. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/__pycache__/cli.cpython-314.pyc +0 -0
  96. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/analyze.py +1 -1
  97. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/cli.py +8 -8
  98. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/formatters.py +1 -1
  99. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/dependencies/__init__.py +2 -2
  100. package/pennyfarthing-dist/pf/dependencies/__main__.py +5 -0
  101. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/dependencies/analyze.py +1 -1
  102. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/dependencies/cli.py +4 -4
  103. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/dependencies/formatters.py +1 -1
  104. package/pennyfarthing-dist/pf/epic/__pycache__/__init__.cpython-314.pyc +0 -0
  105. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/epic/__pycache__/cli.cpython-314.pyc +0 -0
  106. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/gate/cli.py +2 -2
  107. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git/__init__.py +3 -3
  108. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git/create_branches.py +3 -3
  109. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git/hooks_installer.py +1 -1
  110. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git/repos.py +2 -2
  111. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git/status_all.py +1 -1
  112. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git/worktree.py +3 -3
  113. package/pennyfarthing-dist/pf/git_group/__pycache__/__init__.cpython-314.pyc +0 -0
  114. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git_group/__pycache__/cli.cpython-314.pyc +0 -0
  115. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git_group/cli.py +10 -10
  116. package/pennyfarthing-dist/pf/handoff/__pycache__/__init__.cpython-314.pyc +0 -0
  117. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/__pycache__/cli.cpython-314.pyc +0 -0
  118. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/cli.py +5 -5
  119. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/marker.py +1 -1
  120. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/phase_check.py +2 -2
  121. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/__init__.py +2 -2
  122. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/__main__.py +2 -2
  123. package/pennyfarthing-dist/pf/healthscore/__pycache__/__init__.cpython-314.pyc +0 -0
  124. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/__pycache__/analyze.cpython-314.pyc +0 -0
  125. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/__pycache__/cli.cpython-314.pyc +0 -0
  126. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/__pycache__/models.cpython-314.pyc +0 -0
  127. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/analyze.py +8 -8
  128. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/cli.py +3 -3
  129. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/formatters.py +1 -1
  130. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/__init__.cpython-314.pyc +0 -0
  131. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/bell_mode.cpython-314.pyc +0 -0
  132. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/cli.cpython-314.pyc +0 -0
  133. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/context_breaker.cpython-314.pyc +0 -0
  134. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/context_warning.cpython-314.pyc +0 -0
  135. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/cyclist_pretooluse.cpython-314.pyc +0 -0
  136. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/statusline.cpython-314.pyc +0 -0
  137. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/bell_mode.py +1 -1
  138. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/cli.py +11 -11
  139. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/context_breaker.py +1 -1
  140. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/context_warning.py +1 -1
  141. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/cyclist_pretooluse.py +1 -1
  142. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/schema_validation.py +1 -1
  143. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/session_start.py +3 -3
  144. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/sprint_yaml_validation.py +1 -1
  145. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/statusline.py +1 -1
  146. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks.py +3 -3
  147. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/__init__.py +2 -2
  148. package/pennyfarthing-dist/pf/hotspots/__main__.py +6 -0
  149. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/__pycache__/__init__.cpython-314.pyc +0 -0
  150. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/__pycache__/analyze.cpython-314.pyc +0 -0
  151. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/__pycache__/cli.cpython-314.pyc +0 -0
  152. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/__pycache__/models.cpython-314.pyc +0 -0
  153. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/analyze.py +2 -2
  154. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/cli.py +5 -5
  155. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/formatters.py +2 -2
  156. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__init__.py +5 -5
  157. package/pennyfarthing-dist/pf/jira/__main__.py +10 -0
  158. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/__init__.cpython-314.pyc +0 -0
  159. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
  160. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/claim.cpython-314.pyc +0 -0
  161. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/cli.cpython-314.pyc +0 -0
  162. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/client.cpython-314.pyc +0 -0
  163. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/create.cpython-314.pyc +0 -0
  164. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/epic.cpython-314.pyc +0 -0
  165. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/operations.cpython-314.pyc +0 -0
  166. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/reconcile.cpython-314.pyc +0 -0
  167. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/story.cpython-314.pyc +0 -0
  168. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/sync.cpython-314.pyc +0 -0
  169. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/bidirectional.py +9 -9
  170. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/claim.py +4 -4
  171. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/cli.py +15 -15
  172. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/client.py +1 -1
  173. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/create.py +5 -5
  174. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/epic.py +6 -6
  175. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/operations.py +1 -1
  176. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/reconcile.py +2 -2
  177. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/story.py +6 -6
  178. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/sync.py +5 -5
  179. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira_bidirectional_sync.py +3 -3
  180. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira_epic_creation.py +3 -3
  181. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira_sync.py +3 -3
  182. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira_sync_story.py +3 -3
  183. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/launch/__pycache__/__init__.cpython-314.pyc +0 -0
  184. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/launch/__pycache__/cli.cpython-314.pyc +0 -0
  185. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/launch/cli.py +7 -7
  186. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/migration/__init__.py +5 -5
  187. package/pennyfarthing-dist/pf/migration/__main__.py +10 -0
  188. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/migration/cli.py +6 -6
  189. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/migration/validate.py +7 -7
  190. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/output.py +2 -2
  191. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/patch_mode.py +1 -1
  192. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/preflight/__init__.py +1 -1
  193. package/pennyfarthing-dist/pf/preflight/__main__.py +10 -0
  194. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/preflight/cli.py +2 -2
  195. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/pretooluse_hook.py +1 -1
  196. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/__init__.py +7 -7
  197. package/pennyfarthing-dist/pf/prime/__main__.py +8 -0
  198. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/cli.py +9 -9
  199. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/heatmap.py +1 -1
  200. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/loader.py +3 -3
  201. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/persona.py +4 -4
  202. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/session.py +2 -2
  203. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/tiers.py +4 -4
  204. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/workflow.py +3 -3
  205. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/schema_validation_hook.py +1 -1
  206. package/pennyfarthing-dist/pf/session/__pycache__/__init__.cpython-314.pyc +0 -0
  207. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/session/__pycache__/cli.cpython-314.pyc +0 -0
  208. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/session/cli.py +2 -2
  209. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/session_start_hook.py +1 -1
  210. package/pennyfarthing-dist/pf/settings/__pycache__/__init__.cpython-314.pyc +0 -0
  211. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/settings/__pycache__/cli.cpython-314.pyc +0 -0
  212. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/settings/cli.py +3 -3
  213. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/settings/settings.py +1 -1
  214. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__init__.py +5 -5
  215. package/pennyfarthing-dist/pf/sprint/__main__.py +10 -0
  216. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
  217. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/archive.cpython-314.pyc +0 -0
  218. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/cli.cpython-314.pyc +0 -0
  219. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
  220. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/epic_update.cpython-314.pyc +0 -0
  221. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/loader.cpython-314.pyc +0 -0
  222. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/status.cpython-314.pyc +0 -0
  223. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/story_add.cpython-314.pyc +0 -0
  224. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
  225. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
  226. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/validator.cpython-314.pyc +0 -0
  227. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/work.cpython-314.pyc +0 -0
  228. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/yaml_io.cpython-314.pyc +0 -0
  229. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/archive.py +3 -3
  230. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/archive_epic.py +3 -3
  231. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/cli.py +41 -41
  232. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/epic_add.py +3 -3
  233. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/epic_update.py +3 -3
  234. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/import_epic.py +2 -2
  235. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/loader.py +1 -1
  236. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/status.py +1 -1
  237. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/story_add.py +5 -5
  238. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/story_finish.py +3 -3
  239. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/story_update.py +4 -4
  240. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/validate_cmd.py +2 -2
  241. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/validator.py +3 -3
  242. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/work.py +4 -4
  243. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/story/__init__.py +7 -7
  244. package/pennyfarthing-dist/pf/story/__main__.py +10 -0
  245. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/story/cli.py +4 -4
  246. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/story/create.py +2 -2
  247. package/pennyfarthing-dist/pf/tests/__init__.py +1 -0
  248. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/conftest.py +3 -3
  249. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_108_1_gate_migration.py +3 -3
  250. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_108_2_remove_handoff_fallback.py +2 -2
  251. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_archive_epic.py +2 -2
  252. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_bc.py +1 -1
  253. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_bikerack.py +39 -39
  254. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_brownfield.py +6 -6
  255. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_cli_modules.py +20 -20
  256. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_cli_normalization.py +1 -1
  257. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_codemarkers.py +60 -60
  258. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_common.py +17 -17
  259. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_confidence_sm_evaluation.py +1 -1
  260. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_confidence_sm_gate.py +3 -3
  261. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_dialogue_manager.py +11 -11
  262. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_epic_shard_validation.py +15 -15
  263. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_gate_file_resolution.py +1 -1
  264. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_gate_runner.py +1 -1
  265. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_git_utils.py +8 -8
  266. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_handoff_cli.py +12 -12
  267. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_handoff_e2e.py +2 -2
  268. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_healthscore.py +20 -20
  269. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_jira_package.py +29 -29
  270. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_package_structure.py +42 -42
  271. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_patch_mode.py +22 -22
  272. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_prime.py +41 -41
  273. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_resolve_gate_file_field.py +1 -3
  274. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_sprint_package.py +30 -30
  275. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_sprint_panel.py +2 -2
  276. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_sprint_validator.py +1 -1
  277. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_story_add.py +11 -11
  278. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_story_package.py +12 -12
  279. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_story_update.py +16 -16
  280. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_tiers.py +72 -72
  281. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_token_counting.py +28 -28
  282. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_topology_loader.py +37 -37
  283. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_tui_focus.py +2 -2
  284. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_tui_panel_persistence.py +10 -10
  285. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_validate_cmd.py +1 -1
  286. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_version_sentinel.py +1 -1
  287. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_workflow_check.py +7 -7
  288. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_workflow_list_team.py +1 -1
  289. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_yaml_io.py +1 -1
  290. package/pennyfarthing-dist/pf/theme/__main__.py +6 -0
  291. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/theme/__pycache__/__init__.cpython-314.pyc +0 -0
  292. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/theme/__pycache__/cli.cpython-314.pyc +0 -0
  293. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/theme/cli.py +6 -6
  294. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/__pycache__/__init__.cpython-314.pyc +0 -0
  295. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/__pycache__/cli.cpython-314.pyc +0 -0
  296. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/agent.py +1 -1
  297. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/schema.py +2 -2
  298. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/skill_command.py +1 -1
  299. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/sprint.py +2 -2
  300. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/tandem_awareness.py +1 -1
  301. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/team_mode.py +1 -1
  302. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/workflow.py +1 -1
  303. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/cli.py +9 -9
  304. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/welcome_hook.py +1 -1
  305. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/__init__.py +3 -3
  306. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/__pycache__/__init__.cpython-314.pyc +0 -0
  307. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/__pycache__/cli.cpython-314.pyc +0 -0
  308. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/__pycache__/scale.cpython-314.pyc +0 -0
  309. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/__pycache__/state.cpython-314.pyc +0 -0
  310. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/cli.py +18 -18
  311. package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/helpers.py +1 -1
  312. package/pennyfarthing-dist/pyproject.toml +18 -0
  313. package/pennyfarthing-dist/scripts/core/agent-session.sh +3 -3
  314. package/pennyfarthing-dist/scripts/core/check-context.sh +8 -8
  315. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +3 -3
  316. package/pennyfarthing-dist/scripts/jira/README.md +1 -1
  317. package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +1 -1
  318. package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +1 -1
  319. package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +1 -1
  320. package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +1 -1
  321. package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +1 -1
  322. package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +1 -1
  323. package/pennyfarthing-dist/scripts/lib/common.sh +3 -3
  324. package/pennyfarthing-dist/scripts/lib/run-pf.sh +11 -13
  325. package/pennyfarthing-dist/scripts/sprint/README.md +1 -1
  326. package/pennyfarthing-dist/scripts/story/create-story.sh +1 -1
  327. package/pennyfarthing-dist/scripts/story/size-story.sh +1 -1
  328. package/pennyfarthing-dist/scripts/story/story-template.sh +1 -1
  329. package/pennyfarthing-dist/scripts/theme/list-themes.sh +3 -3
  330. package/pennyfarthing-dist/templates/pyproject.toml +3 -3
  331. package/pennyfarthing_scripts/__pycache__/bellmode_hook.cpython-314.pyc +0 -0
  332. package/pennyfarthing_scripts/__pycache__/config.cpython-314.pyc +0 -0
  333. package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
  334. package/pennyfarthing_scripts/__pycache__/jira_bidirectional_sync.cpython-314.pyc +0 -0
  335. package/pennyfarthing_scripts/__pycache__/jira_epic_creation.cpython-314.pyc +0 -0
  336. package/pennyfarthing_scripts/__pycache__/jira_sync.cpython-314.pyc +0 -0
  337. package/pennyfarthing_scripts/__pycache__/jira_sync_story.cpython-314.pyc +0 -0
  338. package/pennyfarthing_scripts/__pycache__/output.cpython-314.pyc +0 -0
  339. package/pennyfarthing_scripts/__pycache__/patch_mode.cpython-314.pyc +0 -0
  340. package/pennyfarthing_scripts/__pycache__/pretooluse_hook.cpython-314.pyc +0 -0
  341. package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
  342. package/pennyfarthing_scripts/__pycache__/session_start_hook.cpython-314.pyc +0 -0
  343. package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
  344. package/pennyfarthing_scripts/bikerack/__main__.py +0 -5
  345. package/pennyfarthing_scripts/bikerack/__pycache__/__main__.cpython-314.pyc +0 -0
  346. package/pennyfarthing_scripts/bikerack/__pycache__/audit_log_panel.cpython-314.pyc +0 -0
  347. package/pennyfarthing_scripts/bikerack/__pycache__/background_panel.cpython-314.pyc +0 -0
  348. package/pennyfarthing_scripts/bikerack/__pycache__/base_panel.cpython-314.pyc +0 -0
  349. package/pennyfarthing_scripts/bikerack/__pycache__/changed_panel.cpython-314.pyc +0 -0
  350. package/pennyfarthing_scripts/bikerack/__pycache__/context_meter_footer.cpython-314.pyc +0 -0
  351. package/pennyfarthing_scripts/bikerack/__pycache__/debug_panel.cpython-314.pyc +0 -0
  352. package/pennyfarthing_scripts/bikerack/__pycache__/diffs_panel.cpython-314.pyc +0 -0
  353. package/pennyfarthing_scripts/bikerack/__pycache__/events.cpython-314.pyc +0 -0
  354. package/pennyfarthing_scripts/bikerack/__pycache__/git_panel.cpython-314.pyc +0 -0
  355. package/pennyfarthing_scripts/bikerack/__pycache__/portrait.cpython-314.pyc +0 -0
  356. package/pennyfarthing_scripts/bikerack/__pycache__/portrait_resolver.cpython-314.pyc +0 -0
  357. package/pennyfarthing_scripts/bikerack/__pycache__/progress_panel.cpython-314.pyc +0 -0
  358. package/pennyfarthing_scripts/bikerack/__pycache__/sprint_panel.cpython-314.pyc +0 -0
  359. package/pennyfarthing_scripts/bikerack/__pycache__/story_detail_data.cpython-314.pyc +0 -0
  360. package/pennyfarthing_scripts/bikerack/__pycache__/story_detail_screen.cpython-314.pyc +0 -0
  361. package/pennyfarthing_scripts/bikerack/__pycache__/tui.cpython-314.pyc +0 -0
  362. package/pennyfarthing_scripts/bikerack/__pycache__/ws_client.cpython-314.pyc +0 -0
  363. package/pennyfarthing_scripts/bmad/__pycache__/__init__.cpython-314.pyc +0 -0
  364. package/pennyfarthing_scripts/bmad/__pycache__/parser.cpython-314.pyc +0 -0
  365. package/pennyfarthing_scripts/bmad/__pycache__/sync.cpython-314.pyc +0 -0
  366. package/pennyfarthing_scripts/bmad/__pycache__/test_parser.cpython-314-pytest-9.0.2.pyc +0 -0
  367. package/pennyfarthing_scripts/bmad/__pycache__/test_sync.cpython-314-pytest-9.0.2.pyc +0 -0
  368. package/pennyfarthing_scripts/brownfield/__main__.py +0 -8
  369. package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
  370. package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
  371. package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
  372. package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
  373. package/pennyfarthing_scripts/codemarkers/__main__.py +0 -6
  374. package/pennyfarthing_scripts/codemarkers/__pycache__/__init__.cpython-314.pyc +0 -0
  375. package/pennyfarthing_scripts/codemarkers/__pycache__/__main__.cpython-314.pyc +0 -0
  376. package/pennyfarthing_scripts/codemarkers/__pycache__/analyze.cpython-314.pyc +0 -0
  377. package/pennyfarthing_scripts/codemarkers/__pycache__/cli.cpython-314.pyc +0 -0
  378. package/pennyfarthing_scripts/codemarkers/__pycache__/formatters.cpython-314.pyc +0 -0
  379. package/pennyfarthing_scripts/codemarkers/__pycache__/models.cpython-314.pyc +0 -0
  380. package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
  381. package/pennyfarthing_scripts/complexity/__main__.py +0 -6
  382. package/pennyfarthing_scripts/complexity/__pycache__/__init__.cpython-314.pyc +0 -0
  383. package/pennyfarthing_scripts/complexity/__pycache__/__main__.cpython-314.pyc +0 -0
  384. package/pennyfarthing_scripts/complexity/__pycache__/analyze.cpython-314.pyc +0 -0
  385. package/pennyfarthing_scripts/complexity/__pycache__/cli.cpython-314.pyc +0 -0
  386. package/pennyfarthing_scripts/complexity/__pycache__/formatters.cpython-314.pyc +0 -0
  387. package/pennyfarthing_scripts/complexity/__pycache__/models.cpython-314.pyc +0 -0
  388. package/pennyfarthing_scripts/consultation/__pycache__/__init__.cpython-314.pyc +0 -0
  389. package/pennyfarthing_scripts/deadcode/__main__.py +0 -6
  390. package/pennyfarthing_scripts/deadcode/__pycache__/__main__.cpython-314.pyc +0 -0
  391. package/pennyfarthing_scripts/deadcode/__pycache__/analyze.cpython-314.pyc +0 -0
  392. package/pennyfarthing_scripts/deadcode/__pycache__/formatters.cpython-314.pyc +0 -0
  393. package/pennyfarthing_scripts/deadcode/__pycache__/models.cpython-314.pyc +0 -0
  394. package/pennyfarthing_scripts/dependencies/__main__.py +0 -5
  395. package/pennyfarthing_scripts/dependencies/__pycache__/__init__.cpython-314.pyc +0 -0
  396. package/pennyfarthing_scripts/dependencies/__pycache__/__main__.cpython-314.pyc +0 -0
  397. package/pennyfarthing_scripts/dependencies/__pycache__/analyze.cpython-314.pyc +0 -0
  398. package/pennyfarthing_scripts/dependencies/__pycache__/cli.cpython-314.pyc +0 -0
  399. package/pennyfarthing_scripts/dependencies/__pycache__/formatters.cpython-314.pyc +0 -0
  400. package/pennyfarthing_scripts/dependencies/__pycache__/models.cpython-314.pyc +0 -0
  401. package/pennyfarthing_scripts/epic/__pycache__/__init__.cpython-314.pyc +0 -0
  402. package/pennyfarthing_scripts/gate/__pycache__/__init__.cpython-314.pyc +0 -0
  403. package/pennyfarthing_scripts/gate/__pycache__/cli.cpython-314.pyc +0 -0
  404. package/pennyfarthing_scripts/gate/__pycache__/validate.cpython-314.pyc +0 -0
  405. package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
  406. package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
  407. package/pennyfarthing_scripts/git/__pycache__/hooks_installer.cpython-314.pyc +0 -0
  408. package/pennyfarthing_scripts/git/__pycache__/repos.cpython-314.pyc +0 -0
  409. package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
  410. package/pennyfarthing_scripts/git/__pycache__/worktree.cpython-314.pyc +0 -0
  411. package/pennyfarthing_scripts/git_group/__pycache__/__init__.cpython-314.pyc +0 -0
  412. package/pennyfarthing_scripts/handoff/__pycache__/__init__.cpython-314.pyc +0 -0
  413. package/pennyfarthing_scripts/handoff/__pycache__/complete_phase.cpython-314.pyc +0 -0
  414. package/pennyfarthing_scripts/handoff/__pycache__/gate_file.cpython-314.pyc +0 -0
  415. package/pennyfarthing_scripts/handoff/__pycache__/gate_runner.cpython-314.pyc +0 -0
  416. package/pennyfarthing_scripts/handoff/__pycache__/marker.cpython-314.pyc +0 -0
  417. package/pennyfarthing_scripts/handoff/__pycache__/phase_check.cpython-314.pyc +0 -0
  418. package/pennyfarthing_scripts/handoff/__pycache__/resolve_gate.cpython-314.pyc +0 -0
  419. package/pennyfarthing_scripts/healthscore/__pycache__/__init__.cpython-314.pyc +0 -0
  420. package/pennyfarthing_scripts/healthscore/__pycache__/__main__.cpython-314.pyc +0 -0
  421. package/pennyfarthing_scripts/healthscore/__pycache__/formatters.cpython-314.pyc +0 -0
  422. package/pennyfarthing_scripts/hooks/__pycache__/pre_edit_check.cpython-314.pyc +0 -0
  423. package/pennyfarthing_scripts/hooks/__pycache__/reflector_check.cpython-314.pyc +0 -0
  424. package/pennyfarthing_scripts/hooks/__pycache__/schema_validation.cpython-314.pyc +0 -0
  425. package/pennyfarthing_scripts/hooks/__pycache__/session_start.cpython-314.pyc +0 -0
  426. package/pennyfarthing_scripts/hooks/__pycache__/session_stop.cpython-314.pyc +0 -0
  427. package/pennyfarthing_scripts/hooks/__pycache__/sprint_yaml_validation.cpython-314.pyc +0 -0
  428. package/pennyfarthing_scripts/hotspots/__main__.py +0 -6
  429. package/pennyfarthing_scripts/hotspots/__pycache__/__main__.cpython-314.pyc +0 -0
  430. package/pennyfarthing_scripts/hotspots/__pycache__/formatters.cpython-314.pyc +0 -0
  431. package/pennyfarthing_scripts/jira/__main__.py +0 -10
  432. package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
  433. package/pennyfarthing_scripts/migration/__main__.py +0 -10
  434. package/pennyfarthing_scripts/migration/__pycache__/__init__.cpython-314.pyc +0 -0
  435. package/pennyfarthing_scripts/migration/__pycache__/session.cpython-314.pyc +0 -0
  436. package/pennyfarthing_scripts/migration/__pycache__/skill.cpython-314.pyc +0 -0
  437. package/pennyfarthing_scripts/migration/__pycache__/step.cpython-314.pyc +0 -0
  438. package/pennyfarthing_scripts/migration/__pycache__/validate.cpython-314.pyc +0 -0
  439. package/pennyfarthing_scripts/preflight/__main__.py +0 -10
  440. package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
  441. package/pennyfarthing_scripts/preflight/__pycache__/__main__.cpython-314.pyc +0 -0
  442. package/pennyfarthing_scripts/preflight/__pycache__/cli.cpython-314.pyc +0 -0
  443. package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
  444. package/pennyfarthing_scripts/prime/__main__.py +0 -8
  445. package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
  446. package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
  447. package/pennyfarthing_scripts/prime/__pycache__/heatmap.cpython-314.pyc +0 -0
  448. package/pennyfarthing_scripts/prime/__pycache__/loader.cpython-314.pyc +0 -0
  449. package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
  450. package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
  451. package/pennyfarthing_scripts/prime/__pycache__/session.cpython-314.pyc +0 -0
  452. package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
  453. package/pennyfarthing_scripts/prime/__pycache__/version_sentinel.cpython-314.pyc +0 -0
  454. package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
  455. package/pennyfarthing_scripts/session/__pycache__/__init__.cpython-314.pyc +0 -0
  456. package/pennyfarthing_scripts/settings/__pycache__/__init__.cpython-314.pyc +0 -0
  457. package/pennyfarthing_scripts/settings/__pycache__/settings.cpython-314.pyc +0 -0
  458. package/pennyfarthing_scripts/sprint/__main__.py +0 -10
  459. package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
  460. package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
  461. package/pennyfarthing_scripts/sprint/__pycache__/import_epic.cpython-314.pyc +0 -0
  462. package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
  463. package/pennyfarthing_scripts/story/__main__.py +0 -10
  464. package/pennyfarthing_scripts/story/__pycache__/__init__.cpython-314.pyc +0 -0
  465. package/pennyfarthing_scripts/story/__pycache__/__main__.cpython-314.pyc +0 -0
  466. package/pennyfarthing_scripts/story/__pycache__/cli.cpython-314.pyc +0 -0
  467. package/pennyfarthing_scripts/story/__pycache__/create.cpython-314.pyc +0 -0
  468. package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
  469. package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
  470. package/pennyfarthing_scripts/tests/__init__.py +0 -1
  471. package/pennyfarthing_scripts/tests/__pycache__/__init__.cpython-314.pyc +0 -0
  472. package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
  473. package/pennyfarthing_scripts/tests/__pycache__/test_108_2_remove_handoff_fallback.cpython-314-pytest-9.0.2.pyc +0 -0
  474. package/pennyfarthing_scripts/tests/__pycache__/test_archive_epic.cpython-314-pytest-9.0.2.pyc +0 -0
  475. package/pennyfarthing_scripts/tests/__pycache__/test_bc.cpython-314-pytest-9.0.2.pyc +0 -0
  476. package/pennyfarthing_scripts/tests/__pycache__/test_bikerack.cpython-314-pytest-9.0.2.pyc +0 -0
  477. package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
  478. package/pennyfarthing_scripts/tests/__pycache__/test_cli_modules.cpython-314-pytest-9.0.2.pyc +0 -0
  479. package/pennyfarthing_scripts/tests/__pycache__/test_cli_normalization.cpython-314-pytest-9.0.2.pyc +0 -0
  480. package/pennyfarthing_scripts/tests/__pycache__/test_codemarkers.cpython-314-pytest-9.0.2.pyc +0 -0
  481. package/pennyfarthing_scripts/tests/__pycache__/test_common.cpython-314-pytest-9.0.2.pyc +0 -0
  482. package/pennyfarthing_scripts/tests/__pycache__/test_confidence_sm_evaluation.cpython-314-pytest-9.0.2.pyc +0 -0
  483. package/pennyfarthing_scripts/tests/__pycache__/test_confidence_sm_gate.cpython-314-pytest-9.0.2.pyc +0 -0
  484. package/pennyfarthing_scripts/tests/__pycache__/test_epic_shard_validation.cpython-314-pytest-9.0.2.pyc +0 -0
  485. package/pennyfarthing_scripts/tests/__pycache__/test_gate_file_resolution.cpython-314-pytest-9.0.2.pyc +0 -0
  486. package/pennyfarthing_scripts/tests/__pycache__/test_gate_runner.cpython-314-pytest-9.0.2.pyc +0 -0
  487. package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
  488. package/pennyfarthing_scripts/tests/__pycache__/test_handoff_cli.cpython-314-pytest-9.0.2.pyc +0 -0
  489. package/pennyfarthing_scripts/tests/__pycache__/test_handoff_e2e.cpython-314-pytest-9.0.2.pyc +0 -0
  490. package/pennyfarthing_scripts/tests/__pycache__/test_healthscore.cpython-314-pytest-9.0.2.pyc +0 -0
  491. package/pennyfarthing_scripts/tests/__pycache__/test_jira_package.cpython-314-pytest-9.0.2.pyc +0 -0
  492. package/pennyfarthing_scripts/tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc +0 -0
  493. package/pennyfarthing_scripts/tests/__pycache__/test_patch_mode.cpython-314-pytest-9.0.2.pyc +0 -0
  494. package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
  495. package/pennyfarthing_scripts/tests/__pycache__/test_resolve_gate_file_field.cpython-314-pytest-9.0.2.pyc +0 -0
  496. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
  497. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_panel.cpython-314-pytest-9.0.2.pyc +0 -0
  498. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
  499. package/pennyfarthing_scripts/tests/__pycache__/test_story_add.cpython-314-pytest-9.0.2.pyc +0 -0
  500. package/pennyfarthing_scripts/tests/__pycache__/test_story_package.cpython-314-pytest-9.0.2.pyc +0 -0
  501. package/pennyfarthing_scripts/tests/__pycache__/test_story_update.cpython-314-pytest-9.0.2.pyc +0 -0
  502. package/pennyfarthing_scripts/tests/__pycache__/test_tiers.cpython-314-pytest-9.0.2.pyc +0 -0
  503. package/pennyfarthing_scripts/tests/__pycache__/test_token_counting.cpython-314-pytest-9.0.2.pyc +0 -0
  504. package/pennyfarthing_scripts/tests/__pycache__/test_topology_loader.cpython-314-pytest-9.0.2.pyc +0 -0
  505. package/pennyfarthing_scripts/tests/__pycache__/test_tui_focus.cpython-314-pytest-9.0.2.pyc +0 -0
  506. package/pennyfarthing_scripts/tests/__pycache__/test_tui_panel_persistence.cpython-314-pytest-9.0.2.pyc +0 -0
  507. package/pennyfarthing_scripts/tests/__pycache__/test_validate_cmd.cpython-314-pytest-9.0.2.pyc +0 -0
  508. package/pennyfarthing_scripts/tests/__pycache__/test_version_sentinel.cpython-314-pytest-9.0.2.pyc +0 -0
  509. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_check.cpython-314-pytest-9.0.2.pyc +0 -0
  510. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_list_team.cpython-314-pytest-9.0.2.pyc +0 -0
  511. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_list_team.cpython-314.pyc +0 -0
  512. package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
  513. package/pennyfarthing_scripts/theme/__main__.py +0 -6
  514. package/pennyfarthing_scripts/validate/adapters/__pycache__/__init__.cpython-314.pyc +0 -0
  515. package/pennyfarthing_scripts/validate/adapters/__pycache__/agent.cpython-314.pyc +0 -0
  516. package/pennyfarthing_scripts/validate/adapters/__pycache__/schema.cpython-314.pyc +0 -0
  517. package/pennyfarthing_scripts/validate/adapters/__pycache__/skill_command.cpython-314.pyc +0 -0
  518. package/pennyfarthing_scripts/validate/adapters/__pycache__/sprint.cpython-314.pyc +0 -0
  519. package/pennyfarthing_scripts/validate/adapters/__pycache__/tandem_awareness.cpython-314.pyc +0 -0
  520. package/pennyfarthing_scripts/validate/adapters/__pycache__/team_mode.cpython-314.pyc +0 -0
  521. package/pennyfarthing_scripts/validate/adapters/__pycache__/workflow.cpython-314.pyc +0 -0
  522. package/pennyfarthing_scripts/workflow/__pycache__/helpers.cpython-314.pyc +0 -0
  523. package/pennyfarthing_scripts/workflow/__pycache__/team_lifecycle.cpython-314.pyc +0 -0
  524. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/__init__.py +0 -0
  525. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/__init__.py +0 -0
  526. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/base_panel.py +0 -0
  527. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/events.py +0 -0
  528. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/ws_client.py +0 -0
  529. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/__init__.py +0 -0
  530. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/parser.py +0 -0
  531. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/brownfield/discover.py +0 -0
  532. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/codemarkers/models.py +0 -0
  533. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/config.py +0 -0
  534. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/output.py +0 -0
  535. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/complexity/models.py +0 -0
  536. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/consultation/__init__.py +0 -0
  537. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/consultation/dialogue_manager.py +0 -0
  538. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/context.py +0 -0
  539. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/__init__.py +0 -0
  540. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/models.py +0 -0
  541. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/dependencies/models.py +0 -0
  542. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/epic/__init__.py +0 -0
  543. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/epic/cli.py +0 -0
  544. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/gate/__init__.py +0 -0
  545. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/gate/validate.py +0 -0
  546. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git_group/__init__.py +0 -0
  547. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/__init__.py +0 -0
  548. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/complete_phase.py +0 -0
  549. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/gate_file.py +0 -0
  550. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/gate_runner.py +0 -0
  551. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/resolve_gate.py +0 -0
  552. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/models.py +0 -0
  553. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__init__.py +0 -0
  554. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/cyclist-pretooluse-hook.sh +0 -0
  555. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/pre_edit_check.py +0 -0
  556. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/reflector_check.py +0 -0
  557. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/session_stop.py +0 -0
  558. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/models.py +0 -0
  559. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/launch/__init__.py +0 -0
  560. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/migration/session.py +0 -0
  561. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/migration/skill.py +0 -0
  562. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/migration/step.py +0 -0
  563. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/preflight/finish.py +0 -0
  564. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/models.py +0 -0
  565. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/version_sentinel.py +0 -0
  566. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/session/__init__.py +0 -0
  567. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/settings/__init__.py +0 -0
  568. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/yaml_io.py +0 -0
  569. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/story/size.py +0 -0
  570. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/story/template.py +0 -0
  571. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/swebench.py +0 -0
  572. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/theme/__init__.py +0 -0
  573. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/__init__.py +0 -0
  574. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/__init__.py +0 -0
  575. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/scale.py +0 -0
  576. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/state.py +0 -0
  577. /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/team_lifecycle.py +0 -0
@@ -1,4 +1,4 @@
1
- """Tests for pennyfarthing_scripts.prime module.
1
+ """Tests for pf.prime module.
2
2
 
3
3
  Tests context loading for prime command.
4
4
  """
@@ -8,8 +8,8 @@ from unittest.mock import patch
8
8
 
9
9
  import pytest
10
10
 
11
- from pennyfarthing_scripts.prime.cli import main, prime
12
- from pennyfarthing_scripts.prime.loader import (
11
+ from pf.prime.cli import main, prime
12
+ from pf.prime.loader import (
13
13
  _extract_session_parts,
14
14
  _find_session_file,
15
15
  load_agent_definition,
@@ -105,8 +105,8 @@ class TestLoadSprintContext:
105
105
  pf_dir.mkdir()
106
106
 
107
107
  # Test
108
- with patch("pennyfarthing_scripts.prime.loader.get_project_root", return_value=tmp_path):
109
- with patch("pennyfarthing_scripts.sprint.loader.get_project_root", return_value=tmp_path):
108
+ with patch("pf.prime.loader.get_project_root", return_value=tmp_path):
109
+ with patch("pf.sprint.loader.get_project_root", return_value=tmp_path):
110
110
  result = load_sprint_context(tmp_path)
111
111
 
112
112
  # Verify
@@ -236,7 +236,7 @@ Work complete.
236
236
  """)
237
237
 
238
238
  # Test
239
- with patch("pennyfarthing_scripts.prime.loader.get_project_root", return_value=tmp_path):
239
+ with patch("pf.prime.loader.get_project_root", return_value=tmp_path):
240
240
  result = load_session_context(tmp_path)
241
241
 
242
242
  # Verify
@@ -337,7 +337,7 @@ class TestPrimeFunction:
337
337
  (agents_dir / "dev.md").write_text("Agent content here")
338
338
 
339
339
  # Test
340
- with patch("pennyfarthing_scripts.prime.cli.get_project_root", return_value=tmp_path):
340
+ with patch("pf.prime.cli.get_project_root", return_value=tmp_path):
341
341
  result = prime(agent_name="dev", quiet=True, project_root=tmp_path)
342
342
 
343
343
  # Verify
@@ -359,7 +359,7 @@ class TestMainCLI:
359
359
  def test_minimal_flag(self, capsys) -> None:
360
360
  """Test --minimal flag."""
361
361
  # With minimal, should just return 0 without any output
362
- with patch("pennyfarthing_scripts.prime.cli.get_project_root") as mock_root:
362
+ with patch("pf.prime.cli.get_project_root") as mock_root:
363
363
  mock_root.return_value = Path("/tmp/test")
364
364
  result = main(["--minimal"])
365
365
 
@@ -377,7 +377,7 @@ class TestMainCLI:
377
377
  (agents_dir / "tea.md").write_text("# TEA Agent\nTest content")
378
378
 
379
379
  # Test
380
- with patch("pennyfarthing_scripts.prime.cli.get_project_root", return_value=tmp_path):
380
+ with patch("pf.prime.cli.get_project_root", return_value=tmp_path):
381
381
  result = main(["--agent", "tea"])
382
382
 
383
383
  # Verify
@@ -388,7 +388,7 @@ class TestMainCLI:
388
388
  def test_project_not_found_error(self, capsys) -> None:
389
389
  """Test error handling when project root not found."""
390
390
  with patch(
391
- "pennyfarthing_scripts.prime.cli.get_project_root",
391
+ "pf.prime.cli.get_project_root",
392
392
  side_effect=FileNotFoundError("No project found"),
393
393
  ):
394
394
  result = main([])
@@ -408,8 +408,8 @@ class TestWorkflowStateDetection:
408
408
 
409
409
  def test_detect_finish_state(self, tmp_path: Path) -> None:
410
410
  """Test detecting FINISH_STATE when phase is approved."""
411
- from pennyfarthing_scripts.prime.models import WorkflowState
412
- from pennyfarthing_scripts.prime.workflow import detect_workflow_state
411
+ from pf.prime.models import WorkflowState
412
+ from pf.prime.workflow import detect_workflow_state
413
413
 
414
414
  # Setup
415
415
  pf_dir = tmp_path / ".pennyfarthing"
@@ -439,8 +439,8 @@ class TestWorkflowStateDetection:
439
439
  """Test detecting IN_PROGRESS_STATE with active phase."""
440
440
  import yaml
441
441
 
442
- from pennyfarthing_scripts.prime.models import WorkflowState
443
- from pennyfarthing_scripts.prime.workflow import detect_workflow_state
442
+ from pf.prime.models import WorkflowState
443
+ from pf.prime.workflow import detect_workflow_state
444
444
 
445
445
  # Setup
446
446
  pf_dir = tmp_path / ".pennyfarthing"
@@ -487,8 +487,8 @@ class TestWorkflowStateDetection:
487
487
  """Test detecting NEW_WORK_STATE with backlog stories."""
488
488
  import yaml
489
489
 
490
- from pennyfarthing_scripts.prime.models import WorkflowState
491
- from pennyfarthing_scripts.prime.workflow import detect_workflow_state
490
+ from pf.prime.models import WorkflowState
491
+ from pf.prime.workflow import detect_workflow_state
492
492
 
493
493
  # Setup
494
494
  pf_dir = tmp_path / ".pennyfarthing"
@@ -519,8 +519,8 @@ class TestWorkflowStateDetection:
519
519
  """Test detecting EMPTY_BACKLOG_STATE with no backlog."""
520
520
  import yaml
521
521
 
522
- from pennyfarthing_scripts.prime.models import WorkflowState
523
- from pennyfarthing_scripts.prime.workflow import detect_workflow_state
522
+ from pf.prime.models import WorkflowState
523
+ from pf.prime.workflow import detect_workflow_state
524
524
 
525
525
  # Setup
526
526
  pf_dir = tmp_path / ".pennyfarthing"
@@ -551,7 +551,7 @@ class TestParseSessionHeader:
551
551
 
552
552
  def test_parse_standard_header(self, tmp_path: Path) -> None:
553
553
  """Test parsing a standard session header."""
554
- from pennyfarthing_scripts.prime.workflow import parse_session_header
554
+ from pf.prime.workflow import parse_session_header
555
555
 
556
556
  session_file = tmp_path / "MSSCI-12345-session.md"
557
557
  session_file.write_text("""# MSSCI-12345: Test Story
@@ -572,7 +572,7 @@ class TestParseSessionHeader:
572
572
 
573
573
  def test_parse_approved_phase(self, tmp_path: Path) -> None:
574
574
  """Test parsing phase with APPROVED status."""
575
- from pennyfarthing_scripts.prime.workflow import parse_session_header
575
+ from pf.prime.workflow import parse_session_header
576
576
 
577
577
  session_file = tmp_path / "63-1-session.md"
578
578
  session_file.write_text("""# Session
@@ -591,8 +591,8 @@ class TestCheckRedirect:
591
591
 
592
592
  def test_redirect_when_wrong_agent(self) -> None:
593
593
  """Test redirect is detected when wrong agent is activated."""
594
- from pennyfarthing_scripts.prime.models import WorkflowState, WorkflowStatus
595
- from pennyfarthing_scripts.prime.workflow import check_redirect
594
+ from pf.prime.models import WorkflowState, WorkflowStatus
595
+ from pf.prime.workflow import check_redirect
596
596
 
597
597
  status = WorkflowStatus(
598
598
  state=WorkflowState.IN_PROGRESS_STATE,
@@ -610,8 +610,8 @@ class TestCheckRedirect:
610
610
 
611
611
  def test_no_redirect_when_correct_agent(self) -> None:
612
612
  """Test no redirect when correct agent is activated."""
613
- from pennyfarthing_scripts.prime.models import WorkflowState, WorkflowStatus
614
- from pennyfarthing_scripts.prime.workflow import check_redirect
613
+ from pf.prime.models import WorkflowState, WorkflowStatus
614
+ from pf.prime.workflow import check_redirect
615
615
 
616
616
  status = WorkflowStatus(
617
617
  state=WorkflowState.IN_PROGRESS_STATE,
@@ -625,8 +625,8 @@ class TestCheckRedirect:
625
625
 
626
626
  def test_no_redirect_for_new_work(self) -> None:
627
627
  """Test no redirect for NEW_WORK_STATE."""
628
- from pennyfarthing_scripts.prime.models import WorkflowState, WorkflowStatus
629
- from pennyfarthing_scripts.prime.workflow import check_redirect
628
+ from pf.prime.models import WorkflowState, WorkflowStatus
629
+ from pf.prime.workflow import check_redirect
630
630
 
631
631
  status = WorkflowStatus(
632
632
  state=WorkflowState.NEW_WORK_STATE,
@@ -650,7 +650,7 @@ class TestPersonaLoading:
650
650
  """Test loading persona from theme YAML."""
651
651
  import yaml
652
652
 
653
- from pennyfarthing_scripts.prime.persona import load_persona
653
+ from pf.prime.persona import load_persona
654
654
 
655
655
  # Setup
656
656
  pf_dir = tmp_path / ".pennyfarthing"
@@ -687,7 +687,7 @@ class TestPersonaLoading:
687
687
 
688
688
  def test_load_persona_no_theme(self, tmp_path: Path) -> None:
689
689
  """Test load_persona returns None when no theme configured."""
690
- from pennyfarthing_scripts.prime.persona import load_persona
690
+ from pf.prime.persona import load_persona
691
691
 
692
692
  # Setup - no config
693
693
  pf_dir = tmp_path / ".pennyfarthing"
@@ -704,7 +704,7 @@ class TestPersonaLoading:
704
704
  """Test getting crew manifest for handoff reference."""
705
705
  import yaml
706
706
 
707
- from pennyfarthing_scripts.prime.persona import get_crew_manifest
707
+ from pf.prime.persona import get_crew_manifest
708
708
 
709
709
  # Setup
710
710
  pf_dir = tmp_path / ".pennyfarthing"
@@ -736,8 +736,8 @@ class TestPersonaLoading:
736
736
 
737
737
  def test_format_persona_output(self) -> None:
738
738
  """Test formatting persona as XML."""
739
- from pennyfarthing_scripts.prime.models import CrewMember, Persona
740
- from pennyfarthing_scripts.prime.persona import format_persona_output
739
+ from pf.prime.models import CrewMember, Persona
740
+ from pf.prime.persona import format_persona_output
741
741
 
742
742
  persona = Persona(
743
743
  character="Naomi Nagata",
@@ -769,7 +769,7 @@ class TestSessionRegistration:
769
769
 
770
770
  def test_register_session(self, tmp_path: Path) -> None:
771
771
  """Test registering a new session."""
772
- from pennyfarthing_scripts.prime.session import register_session
772
+ from pf.prime.session import register_session
773
773
 
774
774
  # Setup
775
775
  pf_dir = tmp_path / ".pennyfarthing"
@@ -789,7 +789,7 @@ class TestSessionRegistration:
789
789
 
790
790
  def test_register_session_generates_id(self, tmp_path: Path) -> None:
791
791
  """Test that session ID is generated if not provided."""
792
- from pennyfarthing_scripts.prime.session import register_session
792
+ from pf.prime.session import register_session
793
793
 
794
794
  # Setup
795
795
  pf_dir = tmp_path / ".pennyfarthing"
@@ -806,7 +806,7 @@ class TestSessionRegistration:
806
806
  """Test cleanup of old session files."""
807
807
  import time
808
808
 
809
- from pennyfarthing_scripts.prime.session import cleanup_old_sessions
809
+ from pf.prime.session import cleanup_old_sessions
810
810
 
811
811
  # Setup
812
812
  pf_dir = tmp_path / ".pennyfarthing"
@@ -836,7 +836,7 @@ class TestSessionRegistration:
836
836
 
837
837
  def test_get_session_agent(self, tmp_path: Path) -> None:
838
838
  """Test getting agent name for a session."""
839
- from pennyfarthing_scripts.prime.session import get_session_agent
839
+ from pf.prime.session import get_session_agent
840
840
 
841
841
  # Setup
842
842
  pf_dir = tmp_path / ".pennyfarthing"
@@ -853,7 +853,7 @@ class TestSessionRegistration:
853
853
 
854
854
  def test_unregister_session(self, tmp_path: Path) -> None:
855
855
  """Test unregistering a session."""
856
- from pennyfarthing_scripts.prime.session import unregister_session
856
+ from pf.prime.session import unregister_session
857
857
 
858
858
  # Setup
859
859
  pf_dir = tmp_path / ".pennyfarthing"
@@ -997,7 +997,7 @@ class TestCLIFlagsV2:
997
997
  pf_dir = tmp_path / ".pennyfarthing"
998
998
  pf_dir.mkdir()
999
999
 
1000
- with patch("pennyfarthing_scripts.prime.cli.get_project_root", return_value=tmp_path):
1000
+ with patch("pf.prime.cli.get_project_root", return_value=tmp_path):
1001
1001
  result = main(["--json", "--no-workflow", "--no-register"])
1002
1002
 
1003
1003
  assert result == 0
@@ -1025,7 +1025,7 @@ class TestCLIFlagsV2:
1025
1025
  "agents": {"dev": {"character": "Test", "style": "s", "role": "r"}}
1026
1026
  }))
1027
1027
 
1028
- with patch("pennyfarthing_scripts.prime.cli.get_project_root", return_value=tmp_path):
1028
+ with patch("pf.prime.cli.get_project_root", return_value=tmp_path):
1029
1029
  result = main(["--agent", "dev", "--no-persona", "--no-workflow", "--no-register"])
1030
1030
 
1031
1031
  assert result == 0
@@ -1040,7 +1040,7 @@ class TestCLIFlagsV2:
1040
1040
  pf_dir = tmp_path / ".pennyfarthing"
1041
1041
  pf_dir.mkdir()
1042
1042
 
1043
- with patch("pennyfarthing_scripts.prime.cli.get_project_root", return_value=tmp_path):
1043
+ with patch("pf.prime.cli.get_project_root", return_value=tmp_path):
1044
1044
  result = main(["--no-workflow", "--no-register"])
1045
1045
 
1046
1046
  assert result == 0
@@ -1050,7 +1050,7 @@ class TestCLIFlagsV2:
1050
1050
 
1051
1051
  def test_session_id_flag(self, tmp_path: Path) -> None:
1052
1052
  """Test --session-id flag uses explicit ID."""
1053
- from pennyfarthing_scripts.prime.session import get_session_agent
1053
+ from pf.prime.session import get_session_agent
1054
1054
 
1055
1055
  pf_dir = tmp_path / ".pennyfarthing"
1056
1056
  pf_dir.mkdir()
@@ -1058,7 +1058,7 @@ class TestCLIFlagsV2:
1058
1058
  agents_dir.mkdir()
1059
1059
  (agents_dir / "sm.md").write_text("# SM Agent\nScrum Master")
1060
1060
 
1061
- with patch("pennyfarthing_scripts.prime.cli.get_project_root", return_value=tmp_path):
1061
+ with patch("pf.prime.cli.get_project_root", return_value=tmp_path):
1062
1062
  result = main(["--agent", "sm", "--session-id", "explicit-123", "--no-workflow"])
1063
1063
 
1064
1064
  assert result == 0
@@ -28,7 +28,7 @@ from pathlib import Path
28
28
  import pytest
29
29
  import yaml
30
30
 
31
- from pennyfarthing_scripts.handoff.resolve_gate import resolve_gate
31
+ from pf.handoff.resolve_gate import resolve_gate
32
32
 
33
33
  # ---------------------------------------------------------------------------
34
34
  # Fixtures: Workflow YAML data with gate.file support
@@ -324,7 +324,6 @@ class TestTddWorkflowMigration:
324
324
  """Load the actual tdd.yaml from pennyfarthing-dist."""
325
325
  tdd_path = (
326
326
  Path(__file__).resolve().parents[2]
327
- / "pennyfarthing-dist"
328
327
  / "workflows"
329
328
  / "tdd.yaml"
330
329
  )
@@ -415,7 +414,6 @@ class TestResolveGateWithRealTddYaml:
415
414
  """Create a project that uses the actual tdd.yaml from pennyfarthing-dist."""
416
415
  tdd_source = (
417
416
  Path(__file__).resolve().parents[2]
418
- / "pennyfarthing-dist"
419
417
  / "workflows"
420
418
  / "tdd.yaml"
421
419
  )
@@ -1,6 +1,6 @@
1
1
  """Tests for sprint/ library package.
2
2
 
3
- Story 63-9: Reorganize pennyfarthing_scripts into fan-out CLI pattern.
3
+ Story 63-9: Reorganize pf into fan-out CLI pattern.
4
4
 
5
5
  These tests verify the sprint/ package modules work correctly
6
6
  after reorganization from flat modules.
@@ -15,7 +15,7 @@ class TestSprintLoader:
15
15
 
16
16
  def test_load_sprint_returns_dict(self) -> None:
17
17
  """load_sprint should return sprint data as dict."""
18
- from pennyfarthing_scripts.sprint.loader import load_sprint
18
+ from pf.sprint.loader import load_sprint
19
19
 
20
20
  result = load_sprint()
21
21
 
@@ -25,8 +25,8 @@ class TestSprintLoader:
25
25
 
26
26
  def test_load_sprint_with_custom_root(self) -> None:
27
27
  """load_sprint should accept custom project root."""
28
- from pennyfarthing_scripts.common.config import get_project_root
29
- from pennyfarthing_scripts.sprint.loader import load_sprint
28
+ from pf.common.config import get_project_root
29
+ from pf.sprint.loader import load_sprint
30
30
 
31
31
  root = get_project_root()
32
32
  result = load_sprint(project_root=root)
@@ -35,7 +35,7 @@ class TestSprintLoader:
35
35
 
36
36
  def test_find_epic_by_number(self) -> None:
37
37
  """find_epic should find epic by number."""
38
- from pennyfarthing_scripts.sprint.loader import find_epic
38
+ from pf.sprint.loader import find_epic
39
39
 
40
40
  sprint_data = {
41
41
  "epics": [
@@ -56,7 +56,7 @@ class TestSprintLoader:
56
56
 
57
57
  def test_find_epic_returns_none_if_not_found(self) -> None:
58
58
  """find_epic should return None if epic not found."""
59
- from pennyfarthing_scripts.sprint.loader import find_epic
59
+ from pf.sprint.loader import find_epic
60
60
 
61
61
  sprint_data = {"epics": [{"id": "epic-63", "title": "Test Epic"}]}
62
62
 
@@ -65,7 +65,7 @@ class TestSprintLoader:
65
65
 
66
66
  def test_find_epic_handles_empty_data(self) -> None:
67
67
  """find_epic should handle empty or None data."""
68
- from pennyfarthing_scripts.sprint.loader import find_epic
68
+ from pf.sprint.loader import find_epic
69
69
 
70
70
  assert find_epic(None, "63") is None
71
71
  assert find_epic({}, "63") is None
@@ -73,7 +73,7 @@ class TestSprintLoader:
73
73
 
74
74
  def test_find_story_in_epic(self) -> None:
75
75
  """find_story should find story within an epic."""
76
- from pennyfarthing_scripts.sprint.loader import find_story
76
+ from pf.sprint.loader import find_story
77
77
 
78
78
  epic = {
79
79
  "id": "epic-63",
@@ -89,7 +89,7 @@ class TestSprintLoader:
89
89
 
90
90
  def test_find_story_returns_none_if_not_found(self) -> None:
91
91
  """find_story should return None if story not found."""
92
- from pennyfarthing_scripts.sprint.loader import find_story
92
+ from pf.sprint.loader import find_story
93
93
 
94
94
  epic = {"id": "epic-63", "stories": [{"id": "63-1", "title": "Story"}]}
95
95
 
@@ -98,7 +98,7 @@ class TestSprintLoader:
98
98
 
99
99
  def test_get_all_stories_returns_flat_list(self) -> None:
100
100
  """get_all_stories should return flat list from all epics."""
101
- from pennyfarthing_scripts.sprint.loader import get_all_stories
101
+ from pf.sprint.loader import get_all_stories
102
102
 
103
103
  # With actual sprint data loaded
104
104
  stories = get_all_stories()
@@ -108,7 +108,7 @@ class TestSprintLoader:
108
108
 
109
109
  def test_get_story_by_id(self) -> None:
110
110
  """get_story_by_id should find story across all epics."""
111
- from pennyfarthing_scripts.sprint.loader import get_story_by_id
111
+ from pf.sprint.loader import get_story_by_id
112
112
 
113
113
  # This relies on actual sprint data
114
114
  result = get_story_by_id("nonexistent-99")
@@ -116,14 +116,14 @@ class TestSprintLoader:
116
116
 
117
117
  def test_get_stories_by_status(self) -> None:
118
118
  """get_stories_by_status should filter by status."""
119
- from pennyfarthing_scripts.sprint.loader import get_stories_by_status
119
+ from pf.sprint.loader import get_stories_by_status
120
120
 
121
121
  result = get_stories_by_status("backlog")
122
122
  assert isinstance(result, list)
123
123
 
124
124
  def test_get_story_field(self) -> None:
125
125
  """get_story_field should extract field from story."""
126
- from pennyfarthing_scripts.sprint.loader import get_story_field
126
+ from pf.sprint.loader import get_story_field
127
127
 
128
128
  sprint_data = {
129
129
  "epics": [
@@ -142,7 +142,7 @@ class TestSprintLoader:
142
142
 
143
143
  def test_load_current_sprint_alias(self) -> None:
144
144
  """load_current_sprint should be alias for load_sprint."""
145
- from pennyfarthing_scripts.sprint.loader import (
145
+ from pf.sprint.loader import (
146
146
  load_current_sprint,
147
147
  load_sprint,
148
148
  )
@@ -152,14 +152,14 @@ class TestSprintLoader:
152
152
 
153
153
  def test_get_sprint_info(self) -> None:
154
154
  """get_sprint_info should return sprint metadata."""
155
- from pennyfarthing_scripts.sprint.loader import get_sprint_info
155
+ from pf.sprint.loader import get_sprint_info
156
156
 
157
157
  result = get_sprint_info()
158
158
  assert isinstance(result, dict)
159
159
 
160
160
  def test_get_epic_by_id(self) -> None:
161
161
  """get_epic_by_id should find epic by ID."""
162
- from pennyfarthing_scripts.sprint.loader import get_epic_by_id
162
+ from pf.sprint.loader import get_epic_by_id
163
163
 
164
164
  # Test with nonexistent ID
165
165
  result = get_epic_by_id("nonexistent-epic")
@@ -171,7 +171,7 @@ class TestSprintStatus:
171
171
 
172
172
  def test_get_sprint_status_returns_dict(self) -> None:
173
173
  """get_sprint_status should return status information."""
174
- from pennyfarthing_scripts.sprint.status import get_sprint_status
174
+ from pf.sprint.status import get_sprint_status
175
175
 
176
176
  result = get_sprint_status()
177
177
 
@@ -182,7 +182,7 @@ class TestSprintStatus:
182
182
 
183
183
  def test_format_status(self) -> None:
184
184
  """format_status should return formatted string."""
185
- from pennyfarthing_scripts.sprint.status import format_status
185
+ from pf.sprint.status import format_status
186
186
 
187
187
  status = {
188
188
  "total_stories": 10,
@@ -202,7 +202,7 @@ class TestSprintWork:
202
202
 
203
203
  def test_check_story_returns_availability(self) -> None:
204
204
  """check_story should return story availability info."""
205
- from pennyfarthing_scripts.sprint.work import check_story
205
+ from pf.sprint.work import check_story
206
206
 
207
207
  result = check_story("nonexistent-99")
208
208
 
@@ -211,7 +211,7 @@ class TestSprintWork:
211
211
 
212
212
  def test_start_work_validates_story(self) -> None:
213
213
  """start_work should validate story exists."""
214
- from pennyfarthing_scripts.sprint.work import start_work
214
+ from pf.sprint.work import start_work
215
215
 
216
216
  result = start_work("nonexistent-99", dry_run=True)
217
217
 
@@ -283,7 +283,7 @@ stories:
283
283
 
284
284
  def test_load_sprint_merges_shards(self, tmp_path: Path) -> None:
285
285
  """load_sprint should merge sharded epic files into full dicts."""
286
- from pennyfarthing_scripts.sprint.loader import load_sprint
286
+ from pf.sprint.loader import load_sprint
287
287
 
288
288
  root = self._create_sharded_sprint(tmp_path)
289
289
  data = load_sprint(project_root=root)
@@ -296,7 +296,7 @@ stories:
296
296
 
297
297
  def test_load_sprint_merges_stories(self, tmp_path: Path) -> None:
298
298
  """Merged epics should contain their stories."""
299
- from pennyfarthing_scripts.sprint.loader import load_sprint
299
+ from pf.sprint.loader import load_sprint
300
300
 
301
301
  root = self._create_sharded_sprint(tmp_path)
302
302
  data = load_sprint(project_root=root)
@@ -307,7 +307,7 @@ stories:
307
307
 
308
308
  def test_load_sprint_non_sharded_unchanged(self, tmp_path: Path) -> None:
309
309
  """load_sprint should pass through non-sharded data unchanged."""
310
- from pennyfarthing_scripts.sprint.loader import load_sprint
310
+ from pf.sprint.loader import load_sprint
311
311
 
312
312
  sprint_dir = tmp_path / "sprint"
313
313
  sprint_dir.mkdir()
@@ -338,11 +338,11 @@ epics:
338
338
 
339
339
  def test_get_all_stories_with_shards(self, tmp_path: Path) -> None:
340
340
  """get_all_stories should return stories from merged shards."""
341
- from pennyfarthing_scripts.sprint.loader import get_all_stories
341
+ from pf.sprint.loader import get_all_stories
342
342
 
343
343
  root = self._create_sharded_sprint(tmp_path)
344
344
 
345
- with patch("pennyfarthing_scripts.sprint.loader.get_project_root", return_value=root):
345
+ with patch("pf.sprint.loader.get_project_root", return_value=root):
346
346
  stories = get_all_stories()
347
347
 
348
348
  assert len(stories) == 3
@@ -353,7 +353,7 @@ epics:
353
353
 
354
354
  def test_find_epic_with_jira_id(self, tmp_path: Path) -> None:
355
355
  """find_epic should work with Jira-style epic IDs after merge."""
356
- from pennyfarthing_scripts.sprint.loader import find_epic, load_sprint
356
+ from pf.sprint.loader import find_epic, load_sprint
357
357
 
358
358
  root = self._create_sharded_sprint(tmp_path)
359
359
  data = load_sprint(project_root=root)
@@ -364,7 +364,7 @@ epics:
364
364
 
365
365
  def test_backlog_count_with_shards(self, tmp_path: Path) -> None:
366
366
  """get_backlog_count should count stories from merged shards."""
367
- from pennyfarthing_scripts.prime.workflow import get_backlog_count
367
+ from pf.prime.workflow import get_backlog_count
368
368
 
369
369
  root = self._create_sharded_sprint(tmp_path)
370
370
  count = get_backlog_count(root)
@@ -374,10 +374,10 @@ epics:
374
374
 
375
375
  def test_backlog_count_defensive_on_strings(self) -> None:
376
376
  """get_backlog_count should not crash on string epics."""
377
- from pennyfarthing_scripts.prime.workflow import get_backlog_count
377
+ from pf.prime.workflow import get_backlog_count
378
378
 
379
379
  fake_data = {"epics": ["MSSCI-14298", "MSSCI-14317"]}
380
- with patch("pennyfarthing_scripts.sprint.loader.load_sprint", return_value=fake_data):
380
+ with patch("pf.sprint.loader.load_sprint", return_value=fake_data):
381
381
  count = get_backlog_count(Path("/fake"))
382
382
 
383
383
  assert count == 0
@@ -388,7 +388,7 @@ class TestSprintArchive:
388
388
 
389
389
  def test_archive_story_validates_story(self) -> None:
390
390
  """archive_story should validate story exists."""
391
- from pennyfarthing_scripts.sprint.archive import archive_story
391
+ from pf.sprint.archive import archive_story
392
392
 
393
393
  result = archive_story("nonexistent-99", dry_run=True)
394
394
 
@@ -23,7 +23,7 @@ from unittest.mock import MagicMock, patch
23
23
  import pytest
24
24
  from rich.text import Text
25
25
 
26
- from pennyfarthing_scripts.bikerack.sprint_panel import (
26
+ from pf.bikerack.sprint_panel import (
27
27
  SprintPanel,
28
28
  _build_epic_label,
29
29
  _build_story_label,
@@ -524,7 +524,7 @@ class TestDefaultPanel:
524
524
 
525
525
  async def test_bikerack_app_mounts_sprint_panel(self) -> None:
526
526
  """BikeRackApp should mount SprintPanel in main-content on startup."""
527
- from pennyfarthing_scripts.bikerack.tui import BikeRackApp
527
+ from pf.bikerack.tui import BikeRackApp
528
528
 
529
529
  mock_client = MagicMock()
530
530
  mock_client.connect = MagicMock(return_value=_noop_coroutine())
@@ -18,7 +18,7 @@ from typing import Any
18
18
 
19
19
  import pytest
20
20
 
21
- from pennyfarthing_scripts.sprint.validator import (
21
+ from pf.sprint.validator import (
22
22
  ValidationResult,
23
23
  ValidationSeverity,
24
24
  format_validation_errors,
@@ -20,11 +20,11 @@ import pytest
20
20
  from click.testing import CliRunner
21
21
  from ruamel.yaml.comments import CommentedMap
22
22
 
23
- from pennyfarthing_scripts.sprint.story_add import (
23
+ from pf.sprint.story_add import (
24
24
  add_story,
25
25
  generate_story_id,
26
26
  )
27
- from pennyfarthing_scripts.sprint.yaml_io import (
27
+ from pf.sprint.yaml_io import (
28
28
  STORY_KEY_ORDER,
29
29
  read_sprint,
30
30
  )
@@ -605,7 +605,7 @@ class TestFileValidation:
605
605
 
606
606
  def test_file_valid_after_insertion(self, sprint_file: Path) -> None:
607
607
  """Sprint file should pass validation after a successful add."""
608
- from pennyfarthing_scripts.sprint.validator import validate_full_sprint
608
+ from pf.sprint.validator import validate_full_sprint
609
609
 
610
610
  add_story(
611
611
  sprint_path=sprint_file,
@@ -697,13 +697,13 @@ class TestCLIIntegration:
697
697
  """story_add_command should be importable and be a Click command."""
698
698
  import click
699
699
 
700
- from pennyfarthing_scripts.sprint.story_add import story_add_command
700
+ from pf.sprint.story_add import story_add_command
701
701
 
702
702
  assert isinstance(story_add_command, click.BaseCommand)
703
703
 
704
704
  def test_basic_add_via_cli(self, runner: CliRunner, sprint_file: Path) -> None:
705
705
  """Basic CLI invocation should add a story successfully."""
706
- from pennyfarthing_scripts.sprint.story_add import story_add_command
706
+ from pf.sprint.story_add import story_add_command
707
707
 
708
708
  result = runner.invoke(story_add_command, [
709
709
  "--sprint-file", str(sprint_file),
@@ -714,7 +714,7 @@ class TestCLIIntegration:
714
714
 
715
715
  def test_cli_with_jira_option(self, runner: CliRunner, sprint_file: Path) -> None:
716
716
  """--jira option should set the jira field."""
717
- from pennyfarthing_scripts.sprint.story_add import story_add_command
717
+ from pf.sprint.story_add import story_add_command
718
718
 
719
719
  result = runner.invoke(story_add_command, [
720
720
  "--sprint-file", str(sprint_file),
@@ -730,7 +730,7 @@ class TestCLIIntegration:
730
730
 
731
731
  def test_cli_with_type_option(self, runner: CliRunner, sprint_file: Path) -> None:
732
732
  """--type option should set the story type."""
733
- from pennyfarthing_scripts.sprint.story_add import story_add_command
733
+ from pf.sprint.story_add import story_add_command
734
734
 
735
735
  result = runner.invoke(story_add_command, [
736
736
  "--sprint-file", str(sprint_file),
@@ -742,7 +742,7 @@ class TestCLIIntegration:
742
742
 
743
743
  def test_cli_with_priority_option(self, runner: CliRunner, sprint_file: Path) -> None:
744
744
  """--priority option should override default P1."""
745
- from pennyfarthing_scripts.sprint.story_add import story_add_command
745
+ from pf.sprint.story_add import story_add_command
746
746
 
747
747
  result = runner.invoke(story_add_command, [
748
748
  "--sprint-file", str(sprint_file),
@@ -758,7 +758,7 @@ class TestCLIIntegration:
758
758
 
759
759
  def test_cli_with_workflow_option(self, runner: CliRunner, sprint_file: Path) -> None:
760
760
  """--workflow option should override default tdd."""
761
- from pennyfarthing_scripts.sprint.story_add import story_add_command
761
+ from pf.sprint.story_add import story_add_command
762
762
 
763
763
  result = runner.invoke(story_add_command, [
764
764
  "--sprint-file", str(sprint_file),
@@ -776,7 +776,7 @@ class TestCLIIntegration:
776
776
  self, runner: CliRunner, sprint_file: Path
777
777
  ) -> None:
778
778
  """Specifying a non-existent epic should produce non-zero exit code."""
779
- from pennyfarthing_scripts.sprint.story_add import story_add_command
779
+ from pf.sprint.story_add import story_add_command
780
780
 
781
781
  result = runner.invoke(story_add_command, [
782
782
  "--sprint-file", str(sprint_file),
@@ -787,7 +787,7 @@ class TestCLIIntegration:
787
787
 
788
788
  def test_cli_success_output(self, runner: CliRunner, sprint_file: Path) -> None:
789
789
  """Successful add should show the new story ID."""
790
- from pennyfarthing_scripts.sprint.story_add import story_add_command
790
+ from pf.sprint.story_add import story_add_command
791
791
 
792
792
  result = runner.invoke(story_add_command, [
793
793
  "--sprint-file", str(sprint_file),