@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
@@ -21,8 +21,8 @@ from datetime import date
21
21
  from pathlib import Path
22
22
  from typing import Any
23
23
 
24
- from pennyfarthing_scripts.sprint.loader import find_epic, find_story
25
- from pennyfarthing_scripts.sprint.yaml_io import read_sprint, write_sprint
24
+ from pf.sprint.loader import find_epic, find_story
25
+ from pf.sprint.yaml_io import read_sprint, write_sprint
26
26
 
27
27
  SESSION_FIELD_RE = re.compile(r"\*\*(\w[\w\s]*):\*\*\s*(.*)")
28
28
 
@@ -202,7 +202,7 @@ def finish_story(
202
202
 
203
203
  # --- Step 5: Archive completed epics ---
204
204
  result = _run(
205
- [sys.executable, "-m", "pennyfarthing_scripts.cli", "sprint", "epic", "archive"],
205
+ [sys.executable, "-m", "pf.cli", "sprint", "epic", "archive"],
206
206
  cwd=str(project_root),
207
207
  )
208
208
  steps.append({"step": 5, "action": "archive_epics", "ran": True})
@@ -14,9 +14,9 @@ from typing import Any
14
14
 
15
15
  import click
16
16
 
17
- from pennyfarthing_scripts.sprint.loader import find_epic, find_story
18
- from pennyfarthing_scripts.sprint.validator import VALID_STORY_STATUSES, validate_full_sprint
19
- from pennyfarthing_scripts.sprint.yaml_io import read_sprint, write_sprint
17
+ from pf.sprint.loader import find_epic, find_story
18
+ from pf.sprint.validator import VALID_STORY_STATUSES, validate_full_sprint
19
+ from pf.sprint.yaml_io import read_sprint, write_sprint
20
20
 
21
21
 
22
22
  def update_story(
@@ -192,7 +192,7 @@ def story_update_command(
192
192
  ) -> None:
193
193
  """Update a story's fields by ID."""
194
194
  if sprint_file is None:
195
- from pennyfarthing_scripts.common.config import get_project_root
195
+ from pf.common.config import get_project_root
196
196
  path = get_project_root() / "sprint" / "current-sprint.yaml"
197
197
  else:
198
198
  path = Path(sprint_file)
@@ -15,7 +15,7 @@ from pathlib import Path
15
15
  import click
16
16
  import yaml
17
17
 
18
- from pennyfarthing_scripts.sprint.validator import (
18
+ from pf.sprint.validator import (
19
19
  REQUIRED_INITIATIVE_FIELDS,
20
20
  VALID_INITIATIVE_STATUSES,
21
21
  ValidationResult,
@@ -23,7 +23,7 @@ from pennyfarthing_scripts.sprint.validator import (
23
23
  validate_full_sprint,
24
24
  validate_future,
25
25
  )
26
- from pennyfarthing_scripts.sprint.yaml_io import (
26
+ from pf.sprint.yaml_io import (
27
27
  EPIC_KEY_ORDER,
28
28
  SPRINT_KEY_ORDER,
29
29
  STORY_KEY_ORDER,
@@ -614,7 +614,7 @@ def validate_sprint_file(file_path: Path, *, strict: bool = False) -> Validation
614
614
  return result
615
615
 
616
616
  # Merge sharded epic files if present, capturing warnings in strict mode
617
- from pennyfarthing_scripts.sprint.loader import _merge_epic_shards
617
+ from pf.sprint.loader import _merge_epic_shards
618
618
  if strict:
619
619
  import warnings as _warnings
620
620
  with _warnings.catch_warnings(record=True) as caught:
@@ -660,7 +660,7 @@ def main() -> int:
660
660
  """CLI entry point for sprint validation.
661
661
 
662
662
  Usage:
663
- python -m pennyfarthing_scripts.sprint.validator [file_path]
663
+ python -m pf.sprint.validator [file_path]
664
664
 
665
665
  If no file_path is provided, validates sprint/current-sprint.yaml.
666
666
 
@@ -669,7 +669,7 @@ def main() -> int:
669
669
  """
670
670
  import sys
671
671
 
672
- from pennyfarthing_scripts.common.config import get_project_root
672
+ from pf.common.config import get_project_root
673
673
 
674
674
  # Determine file to validate
675
675
  if len(sys.argv) > 1:
@@ -6,7 +6,7 @@ Provides functions for starting and managing work on stories.
6
6
 
7
7
  from typing import Any
8
8
 
9
- from pennyfarthing_scripts.sprint.loader import (
9
+ from pf.sprint.loader import (
10
10
  get_stories_by_status,
11
11
  get_story_by_id,
12
12
  )
@@ -34,7 +34,7 @@ def check_story(story_id: str) -> dict[str, Any]:
34
34
 
35
35
  # Check if assigned to someone else
36
36
  if assigned:
37
- from pennyfarthing_scripts.jira.client import get_current_user_email
37
+ from pf.jira.client import get_current_user_email
38
38
 
39
39
  current_user = get_current_user_email()
40
40
  if assigned != current_user:
@@ -94,8 +94,8 @@ def get_next_story() -> dict[str, Any]:
94
94
  Returns:
95
95
  Dict with next story details or error
96
96
  """
97
- from pennyfarthing_scripts.jira.client import get_current_user_email
98
- from pennyfarthing_scripts.sprint.loader import get_all_stories
97
+ from pf.jira.client import get_current_user_email
98
+ from pf.sprint.loader import get_all_stories
99
99
 
100
100
  current_user = get_current_user_email()
101
101
  all_stories = get_all_stories()
@@ -8,33 +8,33 @@ This package provides:
8
8
 
9
9
  Usage:
10
10
  # Use the modules
11
- from pennyfarthing_scripts.story import get_sizing_guidelines, get_template
11
+ from pf.story import get_sizing_guidelines, get_template
12
12
 
13
13
  # Use CLI
14
- python -m pennyfarthing_scripts.story <subcommand> [args]
14
+ python -m pf.story <subcommand> [args]
15
15
  """
16
16
 
17
17
  # Re-export common functions
18
18
  # Import submodules
19
19
  # CLI entry point - import module, not function, so "from story import cli" gets the module
20
- from pennyfarthing_scripts.story import (
20
+ from pf.story import (
21
21
  cli,
22
22
  create,
23
23
  size,
24
24
  template,
25
25
  )
26
- from pennyfarthing_scripts.story.cli import main
27
- from pennyfarthing_scripts.story.create import (
26
+ from pf.story.cli import main
27
+ from pf.story.create import (
28
28
  create_story,
29
29
  generate_story_yaml,
30
30
  validate_points,
31
31
  )
32
- from pennyfarthing_scripts.story.size import (
32
+ from pf.story.size import (
33
33
  SIZING_GUIDELINES,
34
34
  format_size_info,
35
35
  get_sizing_guidelines,
36
36
  )
37
- from pennyfarthing_scripts.story.template import (
37
+ from pf.story.template import (
38
38
  TEMPLATES,
39
39
  format_template,
40
40
  get_all_templates,
@@ -0,0 +1,10 @@
1
+ """
2
+ Entry point for python -m pf.story
3
+ """
4
+
5
+ import sys
6
+
7
+ from pf.story.cli import cli
8
+
9
+ if __name__ == "__main__":
10
+ sys.exit(cli())
@@ -2,7 +2,7 @@
2
2
  Story CLI - Fan-out CLI for story operations.
3
3
 
4
4
  Usage:
5
- python -m pennyfarthing_scripts.story <subcommand> [args]
5
+ python -m pf.story <subcommand> [args]
6
6
 
7
7
  Subcommands:
8
8
  size Show sizing guidelines
@@ -16,19 +16,19 @@ import sys
16
16
 
17
17
  def size(args: list[str]) -> int:
18
18
  """Show sizing guidelines."""
19
- from pennyfarthing_scripts.story.size import main as size_main
19
+ from pf.story.size import main as size_main
20
20
  return size_main(args)
21
21
 
22
22
 
23
23
  def template(args: list[str]) -> int:
24
24
  """Show story templates."""
25
- from pennyfarthing_scripts.story.template import main as template_main
25
+ from pf.story.template import main as template_main
26
26
  return template_main(args)
27
27
 
28
28
 
29
29
  def create(args: list[str]) -> int:
30
30
  """Create a new story."""
31
- from pennyfarthing_scripts.story.create import main as create_main
31
+ from pf.story.create import main as create_main
32
32
  return create_main(args)
33
33
 
34
34
 
@@ -6,8 +6,8 @@ Provides functions for creating new stories.
6
6
 
7
7
  from typing import Any
8
8
 
9
- from pennyfarthing_scripts.story.size import SIZING_GUIDELINES
10
- from pennyfarthing_scripts.story.template import format_template
9
+ from pf.story.size import SIZING_GUIDELINES
10
+ from pf.story.template import format_template
11
11
 
12
12
 
13
13
  def generate_story_yaml(
@@ -0,0 +1 @@
1
+ """Tests for pf package reorganization."""
@@ -1,6 +1,6 @@
1
- """Pytest configuration for pennyfarthing_scripts tests.
1
+ """Pytest configuration for pf tests.
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
 
6
6
  import sys
@@ -44,7 +44,7 @@ def mock_jira_client() -> Generator:
44
44
  mock_client.get_issue_async.return_value = mock_client.get_issue_sync.return_value
45
45
  mock_client.create_issue_sync.return_value = {"key": "MSSCI-12346", "id": "10001"}
46
46
 
47
- with patch("pennyfarthing_scripts.jira.client.JiraClient", return_value=mock_client):
47
+ with patch("pf.jira.client.JiraClient", return_value=mock_client):
48
48
  yield mock_client
49
49
 
50
50
 
@@ -20,14 +20,14 @@ from pathlib import Path
20
20
  import pytest
21
21
  import yaml
22
22
 
23
- from pennyfarthing_scripts.handoff.gate_file import resolve_gate_file
24
- from pennyfarthing_scripts.handoff.resolve_gate import resolve_gate
23
+ from pf.handoff.gate_file import resolve_gate_file
24
+ from pf.handoff.resolve_gate import resolve_gate
25
25
 
26
26
  # ---------------------------------------------------------------------------
27
27
  # Paths
28
28
  # ---------------------------------------------------------------------------
29
29
 
30
- DIST_DIR = Path(__file__).resolve().parents[2] / "pennyfarthing-dist"
30
+ DIST_DIR = Path(__file__).resolve().parents[2]
31
31
  GATES_DIR = DIST_DIR / "gates"
32
32
  WORKFLOWS_DIR = DIST_DIR / "workflows"
33
33
 
@@ -25,13 +25,13 @@ from pathlib import Path
25
25
  import pytest
26
26
  import yaml
27
27
 
28
- from pennyfarthing_scripts.handoff.resolve_gate import resolve_gate
28
+ from pf.handoff.resolve_gate import resolve_gate
29
29
 
30
30
  # ---------------------------------------------------------------------------
31
31
  # Paths
32
32
  # ---------------------------------------------------------------------------
33
33
 
34
- DIST_DIR = Path(__file__).resolve().parents[2] / "pennyfarthing-dist"
34
+ DIST_DIR = Path(__file__).resolve().parents[2]
35
35
  AGENTS_DIR = DIST_DIR / "agents"
36
36
  WORKFLOWS_DIR = DIST_DIR / "workflows"
37
37
  GATES_DIR = DIST_DIR / "gates"
@@ -8,13 +8,13 @@ from typing import Any
8
8
 
9
9
  import pytest
10
10
 
11
- from pennyfarthing_scripts.sprint.archive_epic import (
11
+ from pf.sprint.archive_epic import (
12
12
  _load_archive_file,
13
13
  _write_archive_file,
14
14
  archive_epic,
15
15
  is_epic_complete,
16
16
  )
17
- from pennyfarthing_scripts.sprint.yaml_io import _make_yaml, _write_yaml_file
17
+ from pf.sprint.yaml_io import _make_yaml, _write_yaml_file
18
18
 
19
19
 
20
20
  @pytest.fixture
@@ -20,7 +20,7 @@ from pathlib import Path
20
20
 
21
21
  import yaml
22
22
 
23
- from pennyfarthing_scripts.bc.focus import (
23
+ from pf.bc.focus import (
24
24
  VALID_PANELS,
25
25
  clear_panel_focus,
26
26
  get_panel_focus,
@@ -29,7 +29,7 @@ from unittest.mock import MagicMock, patch
29
29
 
30
30
  import pytest
31
31
 
32
- from pennyfarthing_scripts.bikerack.launcher import (
32
+ from pf.bikerack.launcher import (
33
33
  build_otel_env,
34
34
  cleanup_files,
35
35
  exec_claude,
@@ -55,7 +55,7 @@ class TestStartWheelHub:
55
55
 
56
56
  def test_starts_subprocess(self, tmp_path: Path) -> None:
57
57
  """start_wheelhub should return a Popen object (background process)."""
58
- with patch("pennyfarthing_scripts.bikerack.launcher.subprocess.Popen") as mock_popen:
58
+ with patch("pf.bikerack.launcher.subprocess.Popen") as mock_popen:
59
59
  mock_proc = MagicMock()
60
60
  mock_proc.pid = 12345
61
61
  mock_popen.return_value = mock_proc
@@ -67,7 +67,7 @@ class TestStartWheelHub:
67
67
 
68
68
  def test_sets_is_bikerack_env(self, tmp_path: Path) -> None:
69
69
  """start_wheelhub should set IS_BIKERACK=1 in subprocess env."""
70
- with patch("pennyfarthing_scripts.bikerack.launcher.subprocess.Popen") as mock_popen:
70
+ with patch("pf.bikerack.launcher.subprocess.Popen") as mock_popen:
71
71
  mock_popen.return_value = MagicMock(pid=12345)
72
72
 
73
73
  start_wheelhub(tmp_path)
@@ -80,7 +80,7 @@ class TestStartWheelHub:
80
80
 
81
81
  def test_sets_project_dir_env(self, tmp_path: Path) -> None:
82
82
  """start_wheelhub should set CYCLIST_PROJECT_DIR in subprocess env."""
83
- with patch("pennyfarthing_scripts.bikerack.launcher.subprocess.Popen") as mock_popen:
83
+ with patch("pf.bikerack.launcher.subprocess.Popen") as mock_popen:
84
84
  mock_popen.return_value = MagicMock(pid=12345)
85
85
 
86
86
  start_wheelhub(tmp_path)
@@ -91,7 +91,7 @@ class TestStartWheelHub:
91
91
 
92
92
  def test_process_is_background(self, tmp_path: Path) -> None:
93
93
  """start_wheelhub should not block (background process)."""
94
- with patch("pennyfarthing_scripts.bikerack.launcher.subprocess.Popen") as mock_popen:
94
+ with patch("pf.bikerack.launcher.subprocess.Popen") as mock_popen:
95
95
  mock_popen.return_value = MagicMock(pid=12345)
96
96
 
97
97
  result = start_wheelhub(tmp_path)
@@ -237,7 +237,7 @@ class TestExecClaude:
237
237
  """exec_claude should call os.execvpe (not subprocess.Popen)."""
238
238
  otel_env = build_otel_env(2898)
239
239
 
240
- with patch("pennyfarthing_scripts.bikerack.launcher.os.execvpe") as mock_exec:
240
+ with patch("pf.bikerack.launcher.os.execvpe") as mock_exec:
241
241
  # execvpe never returns, so mock it
242
242
  mock_exec.side_effect = SystemExit(0)
243
243
 
@@ -250,7 +250,7 @@ class TestExecClaude:
250
250
  """exec_claude should exec the 'claude' binary."""
251
251
  otel_env = build_otel_env(2898)
252
252
 
253
- with patch("pennyfarthing_scripts.bikerack.launcher.os.execvpe") as mock_exec:
253
+ with patch("pf.bikerack.launcher.os.execvpe") as mock_exec:
254
254
  mock_exec.side_effect = SystemExit(0)
255
255
 
256
256
  with pytest.raises(SystemExit):
@@ -264,7 +264,7 @@ class TestExecClaude:
264
264
  """exec_claude should merge OTEL vars into current environment."""
265
265
  otel_env = {"CLAUDE_CODE_ENABLE_TELEMETRY": "1", "OTEL_LOGS_EXPORTER": "otlp"}
266
266
 
267
- with patch("pennyfarthing_scripts.bikerack.launcher.os.execvpe") as mock_exec:
267
+ with patch("pf.bikerack.launcher.os.execvpe") as mock_exec:
268
268
  mock_exec.side_effect = SystemExit(0)
269
269
 
270
270
  with pytest.raises(SystemExit):
@@ -283,10 +283,10 @@ class TestExecClaude:
283
283
  """exec_claude must NOT use subprocess (CE-4: exec, not spawn)."""
284
284
  otel_env = build_otel_env(2898)
285
285
 
286
- with patch("pennyfarthing_scripts.bikerack.launcher.os.execvpe") as mock_exec:
286
+ with patch("pf.bikerack.launcher.os.execvpe") as mock_exec:
287
287
  mock_exec.side_effect = SystemExit(0)
288
288
 
289
- with patch("pennyfarthing_scripts.bikerack.launcher.subprocess.Popen") as mock_popen:
289
+ with patch("pf.bikerack.launcher.subprocess.Popen") as mock_popen:
290
290
  with pytest.raises(SystemExit):
291
291
  exec_claude(otel_env)
292
292
 
@@ -303,7 +303,7 @@ class TestCleanupRegistration:
303
303
 
304
304
  def test_registers_atexit_handler(self, tmp_path: Path) -> None:
305
305
  """register_cleanup should register an atexit handler."""
306
- with patch("pennyfarthing_scripts.bikerack.launcher.atexit.register") as mock_register:
306
+ with patch("pf.bikerack.launcher.atexit.register") as mock_register:
307
307
  register_cleanup(tmp_path, pid=12345)
308
308
 
309
309
  mock_register.assert_called_once()
@@ -320,13 +320,13 @@ class TestCleanupRegistration:
320
320
 
321
321
  cleanup_func = _call_cleanup
322
322
 
323
- with patch("pennyfarthing_scripts.bikerack.launcher.atexit.register", side_effect=capture_handler):
323
+ with patch("pf.bikerack.launcher.atexit.register", side_effect=capture_handler):
324
324
  register_cleanup(tmp_path, pid=12345)
325
325
 
326
326
  assert cleanup_func is not None, "atexit handler not registered"
327
327
 
328
- with patch("pennyfarthing_scripts.bikerack.launcher.os.kill") as mock_kill:
329
- with patch("pennyfarthing_scripts.bikerack.launcher.os.path.exists", return_value=True):
328
+ with patch("pf.bikerack.launcher.os.kill") as mock_kill:
329
+ with patch("pf.bikerack.launcher.os.path.exists", return_value=True):
330
330
  # Simulate cleanup
331
331
  try:
332
332
  cleanup_func()
@@ -354,10 +354,10 @@ class TestCleanupRegistration:
354
354
 
355
355
  cleanup_func = _call_cleanup
356
356
 
357
- with patch("pennyfarthing_scripts.bikerack.launcher.atexit.register", side_effect=capture_handler):
357
+ with patch("pf.bikerack.launcher.atexit.register", side_effect=capture_handler):
358
358
  register_cleanup(tmp_path, pid=12345)
359
359
 
360
- with patch("pennyfarthing_scripts.bikerack.launcher.os.kill"):
360
+ with patch("pf.bikerack.launcher.os.kill"):
361
361
  try:
362
362
  cleanup_func()
363
363
  except (ProcessLookupError, OSError):
@@ -380,10 +380,10 @@ class TestCleanupRegistration:
380
380
 
381
381
  cleanup_func = _call_cleanup
382
382
 
383
- with patch("pennyfarthing_scripts.bikerack.launcher.atexit.register", side_effect=capture_handler):
383
+ with patch("pf.bikerack.launcher.atexit.register", side_effect=capture_handler):
384
384
  register_cleanup(tmp_path, pid=12345)
385
385
 
386
- with patch("pennyfarthing_scripts.bikerack.launcher.os.kill"):
386
+ with patch("pf.bikerack.launcher.os.kill"):
387
387
  try:
388
388
  cleanup_func()
389
389
  except (ProcessLookupError, OSError):
@@ -446,8 +446,8 @@ class TestStopBikeRack:
446
446
  (tmp_path / ".bikerack-port").write_text("2898")
447
447
  (tmp_path / ".wheelhub-pid").write_text("12345")
448
448
 
449
- with patch("pennyfarthing_scripts.bikerack.launcher.os.kill") as mock_kill:
450
- with patch("pennyfarthing_scripts.bikerack.launcher.is_process_alive", return_value=True):
449
+ with patch("pf.bikerack.launcher.os.kill") as mock_kill:
450
+ with patch("pf.bikerack.launcher.is_process_alive", return_value=True):
451
451
  stop_bikerack(tmp_path)
452
452
 
453
453
  mock_kill.assert_called_with(12345, signal.SIGTERM)
@@ -458,8 +458,8 @@ class TestStopBikeRack:
458
458
  port_file.write_text("2898")
459
459
  (tmp_path / ".wheelhub-pid").write_text("12345")
460
460
 
461
- with patch("pennyfarthing_scripts.bikerack.launcher.os.kill"):
462
- with patch("pennyfarthing_scripts.bikerack.launcher.is_process_alive", return_value=True):
461
+ with patch("pf.bikerack.launcher.os.kill"):
462
+ with patch("pf.bikerack.launcher.is_process_alive", return_value=True):
463
463
  stop_bikerack(tmp_path)
464
464
 
465
465
  assert not port_file.exists()
@@ -470,8 +470,8 @@ class TestStopBikeRack:
470
470
  pid_file = tmp_path / ".wheelhub-pid"
471
471
  pid_file.write_text("12345")
472
472
 
473
- with patch("pennyfarthing_scripts.bikerack.launcher.os.kill"):
474
- with patch("pennyfarthing_scripts.bikerack.launcher.is_process_alive", return_value=True):
473
+ with patch("pf.bikerack.launcher.os.kill"):
474
+ with patch("pf.bikerack.launcher.is_process_alive", return_value=True):
475
475
  stop_bikerack(tmp_path)
476
476
 
477
477
  assert not pid_file.exists()
@@ -481,8 +481,8 @@ class TestStopBikeRack:
481
481
  (tmp_path / ".bikerack-port").write_text("2898")
482
482
  (tmp_path / ".wheelhub-pid").write_text("12345")
483
483
 
484
- with patch("pennyfarthing_scripts.bikerack.launcher.os.kill"):
485
- with patch("pennyfarthing_scripts.bikerack.launcher.is_process_alive", return_value=True):
484
+ with patch("pf.bikerack.launcher.os.kill"):
485
+ with patch("pf.bikerack.launcher.is_process_alive", return_value=True):
486
486
  result = stop_bikerack(tmp_path)
487
487
 
488
488
  assert result["success"] is True
@@ -509,7 +509,7 @@ class TestStatus:
509
509
  (tmp_path / ".bikerack-port").write_text("2898")
510
510
  (tmp_path / ".wheelhub-pid").write_text("12345")
511
511
 
512
- with patch("pennyfarthing_scripts.bikerack.launcher.is_process_alive", return_value=True):
512
+ with patch("pf.bikerack.launcher.is_process_alive", return_value=True):
513
513
  result = get_status(tmp_path)
514
514
 
515
515
  assert result["running"] is True
@@ -527,7 +527,7 @@ class TestStatus:
527
527
  (tmp_path / ".bikerack-port").write_text("2898")
528
528
  (tmp_path / ".wheelhub-pid").write_text("12345")
529
529
 
530
- with patch("pennyfarthing_scripts.bikerack.launcher.is_process_alive", return_value=True):
530
+ with patch("pf.bikerack.launcher.is_process_alive", return_value=True):
531
531
  result = get_status(tmp_path)
532
532
 
533
533
  assert "http://localhost:2898/bikerack" in result.get("dashboard", "")
@@ -537,7 +537,7 @@ class TestStatus:
537
537
  (tmp_path / ".bikerack-port").write_text("2898")
538
538
  (tmp_path / ".wheelhub-pid").write_text("99999")
539
539
 
540
- with patch("pennyfarthing_scripts.bikerack.launcher.is_process_alive", return_value=False):
540
+ with patch("pf.bikerack.launcher.is_process_alive", return_value=False):
541
541
  result = get_status(tmp_path)
542
542
 
543
543
  assert result["running"] is False
@@ -556,7 +556,7 @@ class TestAlreadyRunning:
556
556
  (tmp_path / ".bikerack-port").write_text("2898")
557
557
  (tmp_path / ".wheelhub-pid").write_text("12345")
558
558
 
559
- with patch("pennyfarthing_scripts.bikerack.launcher.is_process_alive", return_value=True):
559
+ with patch("pf.bikerack.launcher.is_process_alive", return_value=True):
560
560
  running, pid, port = is_already_running(tmp_path)
561
561
 
562
562
  assert running is True
@@ -576,7 +576,7 @@ class TestAlreadyRunning:
576
576
  (tmp_path / ".bikerack-port").write_text("2898")
577
577
  (tmp_path / ".wheelhub-pid").write_text("99999")
578
578
 
579
- with patch("pennyfarthing_scripts.bikerack.launcher.is_process_alive", return_value=False):
579
+ with patch("pf.bikerack.launcher.is_process_alive", return_value=False):
580
580
  running, pid, port = is_already_running(tmp_path)
581
581
 
582
582
  assert running is False
@@ -588,7 +588,7 @@ class TestAlreadyRunning:
588
588
  port_file.write_text("2898")
589
589
  pid_file.write_text("99999")
590
590
 
591
- with patch("pennyfarthing_scripts.bikerack.launcher.is_process_alive", return_value=False):
591
+ with patch("pf.bikerack.launcher.is_process_alive", return_value=False):
592
592
  is_already_running(tmp_path)
593
593
 
594
594
  assert not port_file.exists(), "Stale port file should be cleaned up"
@@ -608,8 +608,8 @@ class TestExitCodes:
608
608
  (tmp_path / ".bikerack-port").write_text("2898")
609
609
  (tmp_path / ".wheelhub-pid").write_text("12345")
610
610
 
611
- with patch("pennyfarthing_scripts.bikerack.launcher.is_process_alive", return_value=True):
612
- with patch("pennyfarthing_scripts.bikerack.launcher.is_already_running",
611
+ with patch("pf.bikerack.launcher.is_process_alive", return_value=True):
612
+ with patch("pf.bikerack.launcher.is_already_running",
613
613
  return_value=(True, 12345, 2898)):
614
614
  # The start flow should detect already-running and exit 2
615
615
  # This tests the logic, not the full CLI flow
@@ -651,7 +651,7 @@ class TestBikeRackCLI:
651
651
  def test_bikerack_cli_help(self) -> None:
652
652
  """bikerack CLI should show help with --help."""
653
653
  result = subprocess.run(
654
- [sys.executable, "-m", "pennyfarthing_scripts.bikerack", "--help"],
654
+ [sys.executable, "-m", "pf.bikerack", "--help"],
655
655
  capture_output=True,
656
656
  text=True,
657
657
  timeout=30,
@@ -664,7 +664,7 @@ class TestBikeRackCLI:
664
664
  def test_bikerack_has_start_subcommand(self) -> None:
665
665
  """bikerack CLI should have start subcommand."""
666
666
  result = subprocess.run(
667
- [sys.executable, "-m", "pennyfarthing_scripts.bikerack", "start", "--help"],
667
+ [sys.executable, "-m", "pf.bikerack", "start", "--help"],
668
668
  capture_output=True,
669
669
  text=True,
670
670
  timeout=30,
@@ -676,7 +676,7 @@ class TestBikeRackCLI:
676
676
  def test_bikerack_has_stop_subcommand(self) -> None:
677
677
  """bikerack CLI should have stop subcommand."""
678
678
  result = subprocess.run(
679
- [sys.executable, "-m", "pennyfarthing_scripts.bikerack", "stop", "--help"],
679
+ [sys.executable, "-m", "pf.bikerack", "stop", "--help"],
680
680
  capture_output=True,
681
681
  text=True,
682
682
  timeout=30,
@@ -688,7 +688,7 @@ class TestBikeRackCLI:
688
688
  def test_bikerack_has_status_subcommand(self) -> None:
689
689
  """bikerack CLI should have status subcommand."""
690
690
  result = subprocess.run(
691
- [sys.executable, "-m", "pennyfarthing_scripts.bikerack", "status", "--help"],
691
+ [sys.executable, "-m", "pf.bikerack", "status", "--help"],
692
692
  capture_output=True,
693
693
  text=True,
694
694
  timeout=30,
@@ -702,7 +702,7 @@ class TestBikeRackCLI:
702
702
  # Running without subcommand should behave like 'start'
703
703
  # Since start is not implemented, it should error
704
704
  result = subprocess.run(
705
- [sys.executable, "-m", "pennyfarthing_scripts.bikerack"],
705
+ [sys.executable, "-m", "pf.bikerack"],
706
706
  capture_output=True,
707
707
  text=True,
708
708
  timeout=30,
@@ -20,7 +20,7 @@ from pathlib import Path
20
20
 
21
21
  import pytest
22
22
 
23
- from pennyfarthing_scripts.brownfield import (
23
+ from pf.brownfield import (
24
24
  DepthLevel,
25
25
  DiscoveryResult,
26
26
  ProjectType,
@@ -34,7 +34,7 @@ from pennyfarthing_scripts.brownfield import (
34
34
  generate_tech_stack_doc,
35
35
  scan_directory_structure,
36
36
  )
37
- from pennyfarthing_scripts.brownfield.discover import (
37
+ from pf.brownfield.discover import (
38
38
  ArchitecturePattern,
39
39
  DirectoryNode,
40
40
  TechStackItem,
@@ -664,7 +664,7 @@ class TestBrownfieldCLI:
664
664
  def test_cli_help(self) -> None:
665
665
  """CLI should show help with --help."""
666
666
  result = subprocess.run(
667
- [sys.executable, "-m", "pennyfarthing_scripts.brownfield", "--help"],
667
+ [sys.executable, "-m", "pf.brownfield", "--help"],
668
668
  capture_output=True,
669
669
  text=True,
670
670
  timeout=30,
@@ -676,7 +676,7 @@ class TestBrownfieldCLI:
676
676
  def test_cli_scan_subcommand_help(self) -> None:
677
677
  """CLI should have scan subcommand."""
678
678
  result = subprocess.run(
679
- [sys.executable, "-m", "pennyfarthing_scripts.brownfield", "scan", "--help"],
679
+ [sys.executable, "-m", "pf.brownfield", "scan", "--help"],
680
680
  capture_output=True,
681
681
  text=True,
682
682
  timeout=30,
@@ -688,7 +688,7 @@ class TestBrownfieldCLI:
688
688
  """CLI scan should accept path argument."""
689
689
  result = subprocess.run(
690
690
  [
691
- sys.executable, "-m", "pennyfarthing_scripts.brownfield",
691
+ sys.executable, "-m", "pf.brownfield",
692
692
  "scan", str(node_project), "--depth", "quick"
693
693
  ],
694
694
  capture_output=True,
@@ -706,7 +706,7 @@ class TestBrownfieldCLI:
706
706
 
707
707
  result = subprocess.run(
708
708
  [
709
- sys.executable, "-m", "pennyfarthing_scripts.brownfield",
709
+ sys.executable, "-m", "pf.brownfield",
710
710
  "scan", str(node_project),
711
711
  "--output", str(output_dir),
712
712
  "--depth", "quick"