@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
@@ -31,7 +31,7 @@ class TestComponentTokenCounting:
31
31
 
32
32
  def test_load_tier_components_returns_token_counts(self, tmp_path: Path) -> None:
33
33
  """Test load_tier_components returns token counts for each component."""
34
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
34
+ from pf.prime.tiers import ContextTier, load_tier_components
35
35
 
36
36
  self._setup_complete_project(tmp_path)
37
37
 
@@ -47,7 +47,7 @@ class TestComponentTokenCounting:
47
47
 
48
48
  def test_token_counts_include_all_full_tier_components(self, tmp_path: Path) -> None:
49
49
  """Test FULL tier returns token counts for all components."""
50
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
50
+ from pf.prime.tiers import ContextTier, load_tier_components
51
51
 
52
52
  self._setup_complete_project(tmp_path)
53
53
 
@@ -77,7 +77,7 @@ class TestComponentTokenCounting:
77
77
 
78
78
  def test_token_counts_are_positive_for_loaded_components(self, tmp_path: Path) -> None:
79
79
  """Test that loaded components have positive token counts."""
80
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
80
+ from pf.prime.tiers import ContextTier, load_tier_components
81
81
 
82
82
  self._setup_complete_project(tmp_path)
83
83
 
@@ -96,7 +96,7 @@ class TestComponentTokenCounting:
96
96
 
97
97
  def test_token_counts_zero_for_missing_components(self, tmp_path: Path) -> None:
98
98
  """Test that missing optional components have zero token counts."""
99
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
99
+ from pf.prime.tiers import ContextTier, load_tier_components
100
100
 
101
101
  # Minimal setup - only agent definition
102
102
  pf_dir = tmp_path / ".pennyfarthing"
@@ -119,7 +119,7 @@ class TestComponentTokenCounting:
119
119
 
120
120
  def test_refresh_tier_only_counts_included_components(self, tmp_path: Path) -> None:
121
121
  """Test REFRESH tier only includes counts for its components."""
122
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
122
+ from pf.prime.tiers import ContextTier, load_tier_components
123
123
 
124
124
  self._setup_complete_project(tmp_path)
125
125
 
@@ -144,7 +144,7 @@ class TestComponentTokenCounting:
144
144
 
145
145
  def test_handoff_tier_only_counts_included_components(self, tmp_path: Path) -> None:
146
146
  """Test HANDOFF tier only includes counts for its components."""
147
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
147
+ from pf.prime.tiers import ContextTier, load_tier_components
148
148
 
149
149
  self._setup_complete_project(tmp_path)
150
150
 
@@ -163,7 +163,7 @@ class TestComponentTokenCounting:
163
163
 
164
164
  def test_minimal_tier_only_counts_workflow_state(self, tmp_path: Path) -> None:
165
165
  """Test MINIMAL tier only counts workflow state."""
166
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
166
+ from pf.prime.tiers import ContextTier, load_tier_components
167
167
 
168
168
  self._setup_complete_project(tmp_path)
169
169
 
@@ -186,7 +186,7 @@ class TestComponentTokenCounting:
186
186
 
187
187
  def test_total_tokens_is_sum_of_components(self, tmp_path: Path) -> None:
188
188
  """Test that total_tokens equals sum of component counts."""
189
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
189
+ from pf.prime.tiers import ContextTier, load_tier_components
190
190
 
191
191
  self._setup_complete_project(tmp_path)
192
192
 
@@ -264,11 +264,11 @@ class TestTokenBreakdownOutput:
264
264
 
265
265
  def test_json_output_includes_token_counts(self, tmp_path: Path, capsys) -> None:
266
266
  """Test JSON output includes token_counts object."""
267
- from pennyfarthing_scripts.prime.cli import prime
267
+ from pf.prime.cli import prime
268
268
 
269
269
  self._setup_project(tmp_path)
270
270
 
271
- with patch("pennyfarthing_scripts.prime.cli.get_project_root", return_value=tmp_path):
271
+ with patch("pf.prime.cli.get_project_root", return_value=tmp_path):
272
272
  result = prime(
273
273
  agent_name="dev",
274
274
  tier="FULL",
@@ -288,11 +288,11 @@ class TestTokenBreakdownOutput:
288
288
 
289
289
  def test_json_output_includes_total_tokens(self, tmp_path: Path, capsys) -> None:
290
290
  """Test JSON output includes total_tokens field."""
291
- from pennyfarthing_scripts.prime.cli import prime
291
+ from pf.prime.cli import prime
292
292
 
293
293
  self._setup_project(tmp_path)
294
294
 
295
- with patch("pennyfarthing_scripts.prime.cli.get_project_root", return_value=tmp_path):
295
+ with patch("pf.prime.cli.get_project_root", return_value=tmp_path):
296
296
  result = prime(
297
297
  agent_name="dev",
298
298
  tier="FULL",
@@ -313,11 +313,11 @@ class TestTokenBreakdownOutput:
313
313
 
314
314
  def test_json_token_counts_match_tier(self, tmp_path: Path, capsys) -> None:
315
315
  """Test JSON token counts reflect the tier's components."""
316
- from pennyfarthing_scripts.prime.cli import prime
316
+ from pf.prime.cli import prime
317
317
 
318
318
  self._setup_project(tmp_path)
319
319
 
320
- with patch("pennyfarthing_scripts.prime.cli.get_project_root", return_value=tmp_path):
320
+ with patch("pf.prime.cli.get_project_root", return_value=tmp_path):
321
321
  # MINIMAL tier
322
322
  result = prime(
323
323
  agent_name="dev",
@@ -342,12 +342,12 @@ class TestTokenBreakdownOutput:
342
342
 
343
343
  def test_json_output_token_counts_per_component(self, tmp_path: Path, capsys) -> None:
344
344
  """Test JSON output has individual component counts."""
345
- from pennyfarthing_scripts.prime.cli import prime
345
+ from pf.prime.cli import prime
346
346
 
347
347
  self._setup_project(tmp_path)
348
348
 
349
- with patch("pennyfarthing_scripts.prime.cli.get_project_root", return_value=tmp_path):
350
- with patch("pennyfarthing_scripts.prime.loader.get_project_root", return_value=tmp_path):
349
+ with patch("pf.prime.cli.get_project_root", return_value=tmp_path):
350
+ with patch("pf.prime.loader.get_project_root", return_value=tmp_path):
351
351
  result = prime(
352
352
  agent_name="dev",
353
353
  tier="FULL",
@@ -398,7 +398,7 @@ class TestTokenCountAccuracy:
398
398
 
399
399
  def test_token_count_uses_tiktoken_or_approximation(self) -> None:
400
400
  """Test token counting uses tiktoken or reasonable approximation."""
401
- from pennyfarthing_scripts.prime.tiers import estimate_tokens
401
+ from pf.prime.tiers import estimate_tokens
402
402
 
403
403
  # Test string with known token characteristics
404
404
  # "Hello, world!" is typically 4 tokens in cl100k_base
@@ -410,7 +410,7 @@ class TestTokenCountAccuracy:
410
410
 
411
411
  def test_token_count_scales_with_text_length(self) -> None:
412
412
  """Test token count increases proportionally with text length."""
413
- from pennyfarthing_scripts.prime.tiers import estimate_tokens
413
+ from pf.prime.tiers import estimate_tokens
414
414
 
415
415
  short_text = "Hello"
416
416
  medium_text = "Hello " * 10
@@ -425,14 +425,14 @@ class TestTokenCountAccuracy:
425
425
 
426
426
  def test_token_count_handles_empty_string(self) -> None:
427
427
  """Test token counting handles empty string gracefully."""
428
- from pennyfarthing_scripts.prime.tiers import estimate_tokens
428
+ from pf.prime.tiers import estimate_tokens
429
429
 
430
430
  count = estimate_tokens("")
431
431
  assert count == 0
432
432
 
433
433
  def test_token_count_handles_unicode(self) -> None:
434
434
  """Test token counting handles unicode text."""
435
- from pennyfarthing_scripts.prime.tiers import estimate_tokens
435
+ from pf.prime.tiers import estimate_tokens
436
436
 
437
437
  # Unicode text (emojis typically use multiple tokens)
438
438
  text = "Hello 👋 World 🌍"
@@ -443,7 +443,7 @@ class TestTokenCountAccuracy:
443
443
 
444
444
  def test_token_count_handles_markdown(self) -> None:
445
445
  """Test token counting handles markdown formatting."""
446
- from pennyfarthing_scripts.prime.tiers import estimate_tokens
446
+ from pf.prime.tiers import estimate_tokens
447
447
 
448
448
  markdown = """# Heading
449
449
 
@@ -463,7 +463,7 @@ def hello():
463
463
 
464
464
  def test_component_token_count_within_10_percent_of_actual(self, tmp_path: Path) -> None:
465
465
  """Test component token counts are within 10% of actual tiktoken count."""
466
- from pennyfarthing_scripts.prime.tiers import (
466
+ from pf.prime.tiers import (
467
467
  ContextTier,
468
468
  estimate_tokens,
469
469
  load_tier_components,
@@ -498,7 +498,7 @@ def hello():
498
498
 
499
499
  def test_total_tokens_within_10_percent_of_sum(self, tmp_path: Path) -> None:
500
500
  """Test total_tokens is within 10% of manually summed content."""
501
- from pennyfarthing_scripts.prime.tiers import (
501
+ from pf.prime.tiers import (
502
502
  ContextTier,
503
503
  load_tier_components,
504
504
  )
@@ -537,26 +537,26 @@ class TestEstimateTokensFunction:
537
537
 
538
538
  def test_estimate_tokens_exists(self) -> None:
539
539
  """Test estimate_tokens function is exported from tiers module."""
540
- from pennyfarthing_scripts.prime.tiers import estimate_tokens
540
+ from pf.prime.tiers import estimate_tokens
541
541
  assert callable(estimate_tokens)
542
542
 
543
543
  def test_estimate_tokens_returns_int(self) -> None:
544
544
  """Test estimate_tokens returns an integer."""
545
- from pennyfarthing_scripts.prime.tiers import estimate_tokens
545
+ from pf.prime.tiers import estimate_tokens
546
546
 
547
547
  result = estimate_tokens("Hello, world!")
548
548
  assert isinstance(result, int)
549
549
 
550
550
  def test_estimate_tokens_positive_for_content(self) -> None:
551
551
  """Test estimate_tokens returns positive value for non-empty content."""
552
- from pennyfarthing_scripts.prime.tiers import estimate_tokens
552
+ from pf.prime.tiers import estimate_tokens
553
553
 
554
554
  result = estimate_tokens("Some content here")
555
555
  assert result > 0
556
556
 
557
557
  def test_estimate_tokens_deterministic(self) -> None:
558
558
  """Test estimate_tokens returns same result for same input."""
559
- from pennyfarthing_scripts.prime.tiers import estimate_tokens
559
+ from pf.prime.tiers import estimate_tokens
560
560
 
561
561
  text = "Consistent input text"
562
562
  result1 = estimate_tokens(text)
@@ -148,7 +148,7 @@ class TestLoadReposTopology:
148
148
 
149
149
  def test_loads_valid_topology(self, topology_project: Path) -> None:
150
150
  """Test loading repos.yaml with full topology fields returns formatted text."""
151
- from pennyfarthing_scripts.prime.loader import load_repos_topology
151
+ from pf.prime.loader import load_repos_topology
152
152
 
153
153
  result = load_repos_topology(topology_project)
154
154
 
@@ -158,7 +158,7 @@ class TestLoadReposTopology:
158
158
 
159
159
  def test_includes_repo_names(self, topology_project: Path) -> None:
160
160
  """Test formatted output includes repo names."""
161
- from pennyfarthing_scripts.prime.loader import load_repos_topology
161
+ from pf.prime.loader import load_repos_topology
162
162
 
163
163
  result = load_repos_topology(topology_project)
164
164
 
@@ -168,7 +168,7 @@ class TestLoadReposTopology:
168
168
 
169
169
  def test_includes_owns_patterns(self, topology_project: Path) -> None:
170
170
  """Test formatted output includes ownership glob patterns."""
171
- from pennyfarthing_scripts.prime.loader import load_repos_topology
171
+ from pf.prime.loader import load_repos_topology
172
172
 
173
173
  result = load_repos_topology(topology_project)
174
174
 
@@ -178,7 +178,7 @@ class TestLoadReposTopology:
178
178
 
179
179
  def test_includes_never_edit_zones(self, topology_project: Path) -> None:
180
180
  """Test formatted output includes never-edit paths."""
181
- from pennyfarthing_scripts.prime.loader import load_repos_topology
181
+ from pf.prime.loader import load_repos_topology
182
182
 
183
183
  result = load_repos_topology(topology_project)
184
184
 
@@ -187,7 +187,7 @@ class TestLoadReposTopology:
187
187
 
188
188
  def test_includes_ui_layer(self, topology_project: Path) -> None:
189
189
  """Test formatted output includes UI layer for each repo."""
190
- from pennyfarthing_scripts.prime.loader import load_repos_topology
190
+ from pf.prime.loader import load_repos_topology
191
191
 
192
192
  result = load_repos_topology(topology_project)
193
193
 
@@ -197,7 +197,7 @@ class TestLoadReposTopology:
197
197
 
198
198
  def test_includes_symlinks(self, topology_project: Path) -> None:
199
199
  """Test formatted output includes symlink mappings."""
200
- from pennyfarthing_scripts.prime.loader import load_repos_topology
200
+ from pf.prime.loader import load_repos_topology
201
201
 
202
202
  result = load_repos_topology(topology_project)
203
203
 
@@ -206,7 +206,7 @@ class TestLoadReposTopology:
206
206
 
207
207
  def test_includes_components_path(self, topology_project: Path) -> None:
208
208
  """Test formatted output includes components_path when present."""
209
- from pennyfarthing_scripts.prime.loader import load_repos_topology
209
+ from pf.prime.loader import load_repos_topology
210
210
 
211
211
  result = load_repos_topology(topology_project)
212
212
 
@@ -215,7 +215,7 @@ class TestLoadReposTopology:
215
215
 
216
216
  def test_returns_none_when_no_repos_yaml(self, tmp_path: Path) -> None:
217
217
  """Test returns None when repos.yaml doesn't exist."""
218
- from pennyfarthing_scripts.prime.loader import load_repos_topology
218
+ from pf.prime.loader import load_repos_topology
219
219
 
220
220
  pf_dir = tmp_path / ".pennyfarthing"
221
221
  pf_dir.mkdir()
@@ -226,7 +226,7 @@ class TestLoadReposTopology:
226
226
 
227
227
  def test_returns_none_when_no_pennyfarthing_dir(self, tmp_path: Path) -> None:
228
228
  """Test returns None when .pennyfarthing/ doesn't exist."""
229
- from pennyfarthing_scripts.prime.loader import load_repos_topology
229
+ from pf.prime.loader import load_repos_topology
230
230
 
231
231
  result = load_repos_topology(tmp_path)
232
232
 
@@ -234,7 +234,7 @@ class TestLoadReposTopology:
234
234
 
235
235
  def test_handles_invalid_yaml(self, tmp_path: Path) -> None:
236
236
  """Test gracefully handles invalid YAML content."""
237
- from pennyfarthing_scripts.prime.loader import load_repos_topology
237
+ from pf.prime.loader import load_repos_topology
238
238
 
239
239
  pf_dir = tmp_path / ".pennyfarthing"
240
240
  pf_dir.mkdir()
@@ -246,7 +246,7 @@ class TestLoadReposTopology:
246
246
 
247
247
  def test_handles_yaml_without_repos_key(self, tmp_path: Path) -> None:
248
248
  """Test handles YAML that has no 'repos' key."""
249
- from pennyfarthing_scripts.prime.loader import load_repos_topology
249
+ from pf.prime.loader import load_repos_topology
250
250
 
251
251
  pf_dir = tmp_path / ".pennyfarthing"
252
252
  pf_dir.mkdir()
@@ -258,7 +258,7 @@ class TestLoadReposTopology:
258
258
 
259
259
  def test_handles_empty_repos(self, tmp_path: Path) -> None:
260
260
  """Test handles repos.yaml with empty repos dict."""
261
- from pennyfarthing_scripts.prime.loader import load_repos_topology
261
+ from pf.prime.loader import load_repos_topology
262
262
 
263
263
  pf_dir = tmp_path / ".pennyfarthing"
264
264
  pf_dir.mkdir()
@@ -270,7 +270,7 @@ class TestLoadReposTopology:
270
270
 
271
271
  def test_backwards_compat_legacy_repos(self, legacy_project: Path) -> None:
272
272
  """Test repos without topology fields still produce output."""
273
- from pennyfarthing_scripts.prime.loader import load_repos_topology
273
+ from pf.prime.loader import load_repos_topology
274
274
 
275
275
  result = load_repos_topology(legacy_project)
276
276
 
@@ -289,7 +289,7 @@ class TestFullTierTopology:
289
289
 
290
290
  def test_full_tier_includes_repos_topology(self, full_project: Path) -> None:
291
291
  """Test FULL tier load_tier_components includes repos_topology."""
292
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
292
+ from pf.prime.tiers import ContextTier, load_tier_components
293
293
 
294
294
  components = load_tier_components(
295
295
  tier=ContextTier.FULL,
@@ -303,7 +303,7 @@ class TestFullTierTopology:
303
303
 
304
304
  def test_full_tier_topology_has_token_count(self, full_project: Path) -> None:
305
305
  """Test FULL tier topology component has a token count estimate."""
306
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
306
+ from pf.prime.tiers import ContextTier, load_tier_components
307
307
 
308
308
  components = load_tier_components(
309
309
  tier=ContextTier.FULL,
@@ -319,14 +319,14 @@ class TestFullTierTopology:
319
319
  self, full_project: Path, capsys
320
320
  ) -> None:
321
321
  """Test FULL tier text output includes topology section."""
322
- from pennyfarthing_scripts.prime.cli import prime
322
+ from pf.prime.cli import prime
323
323
 
324
324
  with patch(
325
- "pennyfarthing_scripts.prime.cli.get_project_root",
325
+ "pf.prime.cli.get_project_root",
326
326
  return_value=full_project,
327
327
  ):
328
328
  with patch(
329
- "pennyfarthing_scripts.prime.loader.get_project_root",
329
+ "pf.prime.loader.get_project_root",
330
330
  return_value=full_project,
331
331
  ):
332
332
  result = prime(
@@ -357,14 +357,14 @@ class TestJSONTopologyOutput:
357
357
  """Test JSON output includes topology in components list."""
358
358
  import json
359
359
 
360
- from pennyfarthing_scripts.prime.cli import prime
360
+ from pf.prime.cli import prime
361
361
 
362
362
  with patch(
363
- "pennyfarthing_scripts.prime.cli.get_project_root",
363
+ "pf.prime.cli.get_project_root",
364
364
  return_value=full_project,
365
365
  ):
366
366
  with patch(
367
- "pennyfarthing_scripts.prime.loader.get_project_root",
367
+ "pf.prime.loader.get_project_root",
368
368
  return_value=full_project,
369
369
  ):
370
370
  result = prime(
@@ -390,14 +390,14 @@ class TestJSONTopologyOutput:
390
390
  """Test JSON topology component has token count."""
391
391
  import json
392
392
 
393
- from pennyfarthing_scripts.prime.cli import prime
393
+ from pf.prime.cli import prime
394
394
 
395
395
  with patch(
396
- "pennyfarthing_scripts.prime.cli.get_project_root",
396
+ "pf.prime.cli.get_project_root",
397
397
  return_value=full_project,
398
398
  ):
399
399
  with patch(
400
- "pennyfarthing_scripts.prime.loader.get_project_root",
400
+ "pf.prime.loader.get_project_root",
401
401
  return_value=full_project,
402
402
  ):
403
403
  result = prime(
@@ -426,14 +426,14 @@ class TestJSONTopologyOutput:
426
426
  """Test JSON topology component has source path."""
427
427
  import json
428
428
 
429
- from pennyfarthing_scripts.prime.cli import prime
429
+ from pf.prime.cli import prime
430
430
 
431
431
  with patch(
432
- "pennyfarthing_scripts.prime.cli.get_project_root",
432
+ "pf.prime.cli.get_project_root",
433
433
  return_value=full_project,
434
434
  ):
435
435
  with patch(
436
- "pennyfarthing_scripts.prime.loader.get_project_root",
436
+ "pf.prime.loader.get_project_root",
437
437
  return_value=full_project,
438
438
  ):
439
439
  result = prime(
@@ -467,7 +467,7 @@ class TestTopologyTierAvailability:
467
467
 
468
468
  def test_full_tier_has_topology(self, full_project: Path) -> None:
469
469
  """Test FULL tier includes repos_topology."""
470
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
470
+ from pf.prime.tiers import ContextTier, load_tier_components
471
471
 
472
472
  components = load_tier_components(
473
473
  tier=ContextTier.FULL,
@@ -479,7 +479,7 @@ class TestTopologyTierAvailability:
479
479
 
480
480
  def test_refresh_tier_has_topology(self, full_project: Path) -> None:
481
481
  """Test REFRESH tier includes repos_topology (session-independent)."""
482
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
482
+ from pf.prime.tiers import ContextTier, load_tier_components
483
483
 
484
484
  components = load_tier_components(
485
485
  tier=ContextTier.REFRESH,
@@ -491,7 +491,7 @@ class TestTopologyTierAvailability:
491
491
 
492
492
  def test_handoff_tier_has_topology(self, full_project: Path) -> None:
493
493
  """Test HANDOFF tier includes repos_topology (agent needs orientation)."""
494
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
494
+ from pf.prime.tiers import ContextTier, load_tier_components
495
495
 
496
496
  components = load_tier_components(
497
497
  tier=ContextTier.HANDOFF,
@@ -503,7 +503,7 @@ class TestTopologyTierAvailability:
503
503
 
504
504
  def test_minimal_tier_excludes_topology(self, full_project: Path) -> None:
505
505
  """Test MINIMAL tier does NOT include repos_topology."""
506
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
506
+ from pf.prime.tiers import ContextTier, load_tier_components
507
507
 
508
508
  components = load_tier_components(
509
509
  tier=ContextTier.MINIMAL,
@@ -524,7 +524,7 @@ class TestTopologyTokenCounting:
524
524
 
525
525
  def test_topology_token_count_realistic(self, full_project: Path) -> None:
526
526
  """Test topology token count is in realistic range (100-500 tokens)."""
527
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
527
+ from pf.prime.tiers import ContextTier, load_tier_components
528
528
 
529
529
  components = load_tier_components(
530
530
  tier=ContextTier.FULL,
@@ -545,7 +545,7 @@ class TestTopologyTokenCounting:
545
545
 
546
546
  def test_topology_included_in_total_tokens(self, full_project: Path) -> None:
547
547
  """Test topology tokens are included in total_tokens sum."""
548
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
548
+ from pf.prime.tiers import ContextTier, load_tier_components
549
549
 
550
550
  components = load_tier_components(
551
551
  tier=ContextTier.FULL,
@@ -564,7 +564,7 @@ class TestTopologyBackwardsCompat:
564
564
 
565
565
  def test_project_without_repos_yaml_works(self, tmp_path: Path) -> None:
566
566
  """Test prime works fine when repos.yaml doesn't exist."""
567
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
567
+ from pf.prime.tiers import ContextTier, load_tier_components
568
568
 
569
569
  pf_dir = tmp_path / ".pennyfarthing"
570
570
  pf_dir.mkdir()
@@ -587,7 +587,7 @@ class TestTopologyBackwardsCompat:
587
587
 
588
588
  def test_legacy_repos_yaml_works(self, legacy_project: Path) -> None:
589
589
  """Test repos.yaml without topology fields doesn't break prime."""
590
- from pennyfarthing_scripts.prime.tiers import ContextTier, load_tier_components
590
+ from pf.prime.tiers import ContextTier, load_tier_components
591
591
 
592
592
  # Add agent for tier loading
593
593
  agents_dir = legacy_project / ".pennyfarthing" / "agents"
@@ -605,7 +605,7 @@ class TestTopologyBackwardsCompat:
605
605
 
606
606
  def test_cli_component_header_for_topology(self) -> None:
607
607
  """Test _component_header returns correct header for repos_topology."""
608
- from pennyfarthing_scripts.prime.cli import _component_header
608
+ from pf.prime.cli import _component_header
609
609
 
610
610
  header = _component_header("repos_topology", "dev")
611
611
 
@@ -613,7 +613,7 @@ class TestTopologyBackwardsCompat:
613
613
 
614
614
  def test_cli_component_source_for_topology(self) -> None:
615
615
  """Test _component_source returns correct path for repos_topology."""
616
- from pennyfarthing_scripts.prime.cli import _component_source
616
+ from pf.prime.cli import _component_source
617
617
 
618
618
  source = _component_source("repos_topology", "dev", Path("/fake"))
619
619
 
@@ -19,8 +19,8 @@ from __future__ import annotations
19
19
  import time
20
20
  from unittest.mock import MagicMock, patch
21
21
 
22
- from pennyfarthing_scripts.bikerack.tui import BikeRackApp
23
- from pennyfarthing_scripts.bikerack.ws_client import WheelHubClient
22
+ from pf.bikerack.tui import BikeRackApp
23
+ from pf.bikerack.ws_client import WheelHubClient
24
24
 
25
25
  # ---------------------------------------------------------------------------
26
26
  # Helpers
@@ -21,13 +21,13 @@ from unittest.mock import MagicMock, patch
21
21
 
22
22
  from ruamel.yaml import YAML
23
23
 
24
- from pennyfarthing_scripts.bc.focus import (
24
+ from pf.bc.focus import (
25
25
  VALID_PANELS,
26
26
  get_last_panel,
27
27
  save_last_panel,
28
28
  )
29
- from pennyfarthing_scripts.bikerack.tui import BikeRackApp
30
- from pennyfarthing_scripts.bikerack.ws_client import WheelHubClient
29
+ from pf.bikerack.tui import BikeRackApp
30
+ from pf.bikerack.ws_client import WheelHubClient
31
31
 
32
32
  # ---------------------------------------------------------------------------
33
33
  # Helpers
@@ -241,7 +241,7 @@ class TestTuiRestore:
241
241
  try:
242
242
  with patch.object(BikeRackApp, "run_worker"), \
243
243
  patch(
244
- "pennyfarthing_scripts.bikerack.tui.get_last_panel",
244
+ "pf.bikerack.tui.get_last_panel",
245
245
  return_value={"success": True, "last_panel": "git"},
246
246
  ):
247
247
  loop.run_until_complete(app.on_mount())
@@ -270,7 +270,7 @@ class TestTuiRestore:
270
270
  try:
271
271
  with patch.object(BikeRackApp, "run_worker"), \
272
272
  patch(
273
- "pennyfarthing_scripts.bikerack.tui.get_last_panel",
273
+ "pf.bikerack.tui.get_last_panel",
274
274
  return_value={"success": True, "last_panel": None},
275
275
  ):
276
276
  loop.run_until_complete(app.on_mount())
@@ -293,7 +293,7 @@ class TestTuiRestore:
293
293
  try:
294
294
  with patch.object(BikeRackApp, "run_worker"), \
295
295
  patch(
296
- "pennyfarthing_scripts.bikerack.tui.get_last_panel",
296
+ "pf.bikerack.tui.get_last_panel",
297
297
  return_value={"success": False, "error": "File not found"},
298
298
  ):
299
299
  loop.run_until_complete(app.on_mount())
@@ -320,7 +320,7 @@ class TestTuiPersist:
320
320
  app = make_app()
321
321
 
322
322
  with patch(
323
- "pennyfarthing_scripts.bikerack.tui.save_last_panel"
323
+ "pf.bikerack.tui.save_last_panel"
324
324
  ) as mock_save:
325
325
  mock_save.return_value = {"success": True, "data": "git"}
326
326
  app._handle_focus_message(focus_msg("git"))
@@ -333,7 +333,7 @@ class TestTuiPersist:
333
333
  app._handle_focus_message(focus_msg("sprint"))
334
334
 
335
335
  with patch(
336
- "pennyfarthing_scripts.bikerack.tui.save_last_panel"
336
+ "pf.bikerack.tui.save_last_panel"
337
337
  ) as mock_save:
338
338
  app._handle_focus_message(focus_msg(None))
339
339
 
@@ -346,7 +346,7 @@ class TestTuiPersist:
346
346
  app = make_app()
347
347
 
348
348
  with patch(
349
- "pennyfarthing_scripts.bikerack.tui.save_last_panel"
349
+ "pf.bikerack.tui.save_last_panel"
350
350
  ) as mock_save:
351
351
  mock_save.return_value = {"success": True}
352
352
  app._handle_focus_message(focus_msg("sprint"))
@@ -363,7 +363,7 @@ class TestTuiPersist:
363
363
  app = make_app()
364
364
 
365
365
  with patch(
366
- "pennyfarthing_scripts.bikerack.tui.save_last_panel"
366
+ "pf.bikerack.tui.save_last_panel"
367
367
  ) as mock_save:
368
368
  app._handle_focus_message(focus_msg("sprint", msg_type="init"))
369
369
 
@@ -17,7 +17,7 @@ from pathlib import Path
17
17
  import pytest
18
18
  from click.testing import CliRunner
19
19
 
20
- from pennyfarthing_scripts.sprint.validate_cmd import (
20
+ from pf.sprint.validate_cmd import (
21
21
  check_format_drift,
22
22
  validate_command,
23
23
  validate_sprint_yaml,
@@ -14,7 +14,7 @@ Acceptance Criteria tested here:
14
14
  from pathlib import Path
15
15
 
16
16
  # Module to be implemented
17
- from pennyfarthing_scripts.prime.version_sentinel import (
17
+ from pf.prime.version_sentinel import (
18
18
  check_version_mismatch,
19
19
  read_sentinel_version,
20
20
  )
@@ -21,11 +21,11 @@ from unittest.mock import patch
21
21
  import pytest
22
22
  from click.testing import CliRunner
23
23
 
24
- from pennyfarthing_scripts.cli import cli
25
- from pennyfarthing_scripts.workflow import get_workflow_state
24
+ from pf.cli import cli
25
+ from pf.workflow import get_workflow_state
26
26
 
27
27
  # Mock path: workflow.cli imports from workflow.state, so mock at the source module
28
- MOCK_PATH = "pennyfarthing_scripts.workflow.state.get_workflow_state"
28
+ MOCK_PATH = "pf.workflow.state.get_workflow_state"
29
29
 
30
30
 
31
31
  class TestWorkflowCheckCLI:
@@ -289,9 +289,9 @@ class TestSubprocessExecution:
289
289
  """Tests verifying the CLI works as a subprocess (integration)."""
290
290
 
291
291
  def test_module_runnable(self) -> None:
292
- """CLI should be runnable as python -m pennyfarthing_scripts.cli."""
292
+ """CLI should be runnable as python -m pf.cli."""
293
293
  result = subprocess.run(
294
- [sys.executable, "-m", "pennyfarthing_scripts.cli", "workflow", "check"],
294
+ [sys.executable, "-m", "pf.cli", "workflow", "check"],
295
295
  capture_output=True,
296
296
  text=True,
297
297
  timeout=30,
@@ -305,7 +305,7 @@ class TestSubprocessExecution:
305
305
  [
306
306
  sys.executable,
307
307
  "-m",
308
- "pennyfarthing_scripts.cli",
308
+ "pf.cli",
309
309
  "workflow",
310
310
  "check",
311
311
  "--json",
@@ -325,7 +325,7 @@ class TestSubprocessExecution:
325
325
  [
326
326
  sys.executable,
327
327
  "-m",
328
- "pennyfarthing_scripts.cli",
328
+ "pf.cli",
329
329
  "workflow",
330
330
  "check",
331
331
  "--help",
@@ -20,7 +20,7 @@ from __future__ import annotations
20
20
  import pytest
21
21
  from click.testing import CliRunner
22
22
 
23
- from pennyfarthing_scripts.cli import cli
23
+ from pf.cli import cli
24
24
 
25
25
 
26
26
  class TestWorkflowListTeamIndicator: