@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
@@ -22,75 +22,75 @@ def hooks():
22
22
  @hooks.command("session-start")
23
23
  def session_start():
24
24
  """SessionStart hook — session setup, WheelHub auto-start, OTEL config."""
25
- from pennyfarthing_scripts.hooks.session_start import main
25
+ from pf.hooks.session_start import main
26
26
  main()
27
27
 
28
28
 
29
29
  @hooks.command("session-stop")
30
30
  def session_stop():
31
31
  """Stop hook — save checkpoint for cross-session continuity."""
32
- from pennyfarthing_scripts.hooks.session_stop import main
32
+ from pf.hooks.session_stop import main
33
33
  main()
34
34
 
35
35
 
36
36
  @hooks.command("reflector-check")
37
37
  def reflector_check():
38
38
  """Stop hook — enforce CYCLIST reflector markers on every turn."""
39
- from pennyfarthing_scripts.hooks.reflector_check import main
39
+ from pf.hooks.reflector_check import main
40
40
  main()
41
41
 
42
42
 
43
43
  @hooks.command("pre-edit-check")
44
44
  def pre_edit_check():
45
45
  """PreToolUse hook — block edits to protected files."""
46
- from pennyfarthing_scripts.hooks.pre_edit_check import main
46
+ from pf.hooks.pre_edit_check import main
47
47
  main()
48
48
 
49
49
 
50
50
  @hooks.command("context-warning")
51
51
  def context_warning():
52
52
  """PreToolUse hook — warn when context usage is high."""
53
- from pennyfarthing_scripts.hooks.context_warning import main
53
+ from pf.hooks.context_warning import main
54
54
  main()
55
55
 
56
56
 
57
57
  @hooks.command("context-breaker")
58
58
  def context_breaker():
59
59
  """PreToolUse hook — block tool execution at critical context usage."""
60
- from pennyfarthing_scripts.hooks.context_breaker import main
60
+ from pf.hooks.context_breaker import main
61
61
  main()
62
62
 
63
63
 
64
64
  @hooks.command("cyclist-pretooluse")
65
65
  def cyclist_pretooluse():
66
66
  """PreToolUse hook — route approval through WheelHub when Cyclist is running."""
67
- from pennyfarthing_scripts.hooks.cyclist_pretooluse import main
67
+ from pf.hooks.cyclist_pretooluse import main
68
68
  main()
69
69
 
70
70
 
71
71
  @hooks.command("schema-validation")
72
72
  def schema_validation():
73
73
  """PreToolUse hook — validate XML schema on Write operations."""
74
- from pennyfarthing_scripts.hooks.schema_validation import main
74
+ from pf.hooks.schema_validation import main
75
75
  main()
76
76
 
77
77
 
78
78
  @hooks.command("bell-mode")
79
79
  def bell_mode():
80
80
  """PostToolUse hook — bell queue + tandem observation injection."""
81
- from pennyfarthing_scripts.hooks.bell_mode import main
81
+ from pf.hooks.bell_mode import main
82
82
  main()
83
83
 
84
84
 
85
85
  @hooks.command("sprint-yaml")
86
86
  def sprint_yaml():
87
87
  """PostToolUse hook — validate sprint YAML after Edit/Write."""
88
- from pennyfarthing_scripts.hooks.sprint_yaml_validation import main
88
+ from pf.hooks.sprint_yaml_validation import main
89
89
  main()
90
90
 
91
91
 
92
92
  @hooks.command("statusline")
93
93
  def statusline():
94
94
  """statusLine hook — render Claude Code status bar."""
95
- from pennyfarthing_scripts.hooks.statusline import main
95
+ from pf.hooks.statusline import main
96
96
  main()
@@ -15,7 +15,7 @@ import sys
15
15
  from datetime import UTC, datetime
16
16
  from pathlib import Path
17
17
 
18
- from pennyfarthing_scripts.context import check_context, load_config
18
+ from pf.context import check_context, load_config
19
19
 
20
20
 
21
21
  def _checkpoint_save(project_dir: str, label: str, data: str) -> None:
@@ -10,7 +10,7 @@ from __future__ import annotations
10
10
  import os
11
11
  import sys
12
12
 
13
- from pennyfarthing_scripts.context import check_context, load_config
13
+ from pf.context import check_context, load_config
14
14
 
15
15
 
16
16
  def main() -> None:
@@ -12,7 +12,7 @@ from __future__ import annotations
12
12
  import sys
13
13
  from pathlib import Path
14
14
 
15
- from pennyfarthing_scripts.hooks import (
15
+ from pf.hooks import (
16
16
  HookResponse,
17
17
  find_project_root,
18
18
  get_context_state,
@@ -12,7 +12,7 @@ from __future__ import annotations
12
12
  import re
13
13
  import sys
14
14
 
15
- from pennyfarthing_scripts.hooks import (
15
+ from pf.hooks import (
16
16
  HookResponse,
17
17
  output_hook_response,
18
18
  read_stdin_json,
@@ -20,7 +20,7 @@ import sys
20
20
  from datetime import UTC, datetime
21
21
  from pathlib import Path
22
22
 
23
- from pennyfarthing_scripts.hooks import (
23
+ from pf.hooks import (
24
24
  is_cyclist_running,
25
25
  load_settings,
26
26
  send_to_cyclist,
@@ -128,7 +128,7 @@ def _validate_checkpoint(project_dir: Path) -> None:
128
128
 
129
129
  def _ensure_wheelhub(project_dir: Path) -> int | None:
130
130
  """Auto-start WheelHub if not already running. Returns port or None."""
131
- from pennyfarthing_scripts.bikerack.launcher import (
131
+ from pf.bikerack.launcher import (
132
132
  is_already_running,
133
133
  poll_for_port_file,
134
134
  start_wheelhub,
@@ -175,7 +175,7 @@ def _write_env_file(project_dir: Path, session_id: str, otel_port: int | None) -
175
175
  ]
176
176
 
177
177
  if otel_port is not None:
178
- from pennyfarthing_scripts.bikerack.launcher import build_otel_env
178
+ from pf.bikerack.launcher import build_otel_env
179
179
 
180
180
  lines.append("# OTEL auto-configuration for Cyclist/WheelHub")
181
181
  for key, value in build_otel_env(otel_port).items():
@@ -13,7 +13,7 @@ import re
13
13
  import subprocess
14
14
  import sys
15
15
 
16
- from pennyfarthing_scripts.hooks import (
16
+ from pf.hooks import (
17
17
  HookResponse,
18
18
  output_hook_response,
19
19
  )
@@ -16,7 +16,7 @@ import subprocess
16
16
  import sys
17
17
  from pathlib import Path
18
18
 
19
- from pennyfarthing_scripts.hooks import load_settings
19
+ from pf.hooks import load_settings
20
20
 
21
21
  try:
22
22
  import yaml
@@ -1,15 +1,15 @@
1
1
  """
2
2
  Backward-compatibility shim — hooks utilities moved to hooks/ subpackage.
3
3
 
4
- All exports are re-imported from pennyfarthing_scripts.hooks (the package).
4
+ All exports are re-imported from pf.hooks (the package).
5
5
  Existing code that does `from hooks import ...` or
6
- `from pennyfarthing_scripts.hooks import ...` continues to work.
6
+ `from pf.hooks import ...` continues to work.
7
7
 
8
8
  This file will be removed in a future version.
9
9
  """
10
10
 
11
11
  # Re-export everything from the hooks package
12
- from pennyfarthing_scripts.hooks import ( # noqa: F401
12
+ from pf.hooks import ( # noqa: F401
13
13
  CYCLIST_PORT_FILE,
14
14
  DEFAULT_CYCLIST_PORT,
15
15
  HTTP_TIMEOUT_SECONDS,
@@ -6,13 +6,13 @@ bug fix concentration, and multi-author churn — indicators of code hotspots th
6
6
  may benefit from refactoring attention.
7
7
  """
8
8
 
9
- from pennyfarthing_scripts.hotspots.analyze import (
9
+ from pf.hotspots.analyze import (
10
10
  analyze_all_repos,
11
11
  analyze_repo,
12
12
  calculate_hotspot_score,
13
13
  is_bug_fix_commit,
14
14
  )
15
- from pennyfarthing_scripts.hotspots.models import (
15
+ from pf.hotspots.models import (
16
16
  DirectoryHotspot,
17
17
  FileHotspot,
18
18
  HotspotResult,
@@ -0,0 +1,6 @@
1
+ """Allow running as: python -m pf.hotspots"""
2
+
3
+ from pf.hotspots.cli import hotspots
4
+
5
+ if __name__ == "__main__":
6
+ hotspots()
@@ -15,7 +15,7 @@ from collections import defaultdict
15
15
  from datetime import UTC, datetime, timedelta
16
16
  from pathlib import Path
17
17
 
18
- from pennyfarthing_scripts.hotspots.models import (
18
+ from pf.hotspots.models import (
19
19
  DirectoryHotspot,
20
20
  FileHotspot,
21
21
  HotspotResult,
@@ -572,7 +572,7 @@ async def analyze_all_repos(
572
572
  Returns:
573
573
  MultiRepoHotspotResult with per-repo results
574
574
  """
575
- from pennyfarthing_scripts.common.config import load_yaml_config
575
+ from pf.common.config import load_yaml_config
576
576
 
577
577
  repos_yaml = load_yaml_config(project_root / ".pennyfarthing" / "repos.yaml")
578
578
 
@@ -44,8 +44,8 @@ def _common_options(fn):
44
44
 
45
45
  def _run_analysis(repo: str | None, repo_path: str | None, days: int, exclude: tuple, branch: str, skip_type: tuple = ()):
46
46
  """Run analysis and return result."""
47
- from pennyfarthing_scripts.common.config import get_project_root
48
- from pennyfarthing_scripts.hotspots.analyze import analyze_all_repos, analyze_repo
47
+ from pf.common.config import get_project_root
48
+ from pf.hotspots.analyze import analyze_all_repos, analyze_repo
49
49
 
50
50
  excludes = list(exclude) if exclude else None
51
51
  skip_types = list(skip_type) if skip_type else None
@@ -57,7 +57,7 @@ def _run_analysis(repo: str | None, repo_path: str | None, days: int, exclude: t
57
57
  elif repo:
58
58
  # Single named repo from project
59
59
  project_root = get_project_root()
60
- from pennyfarthing_scripts.common.config import load_yaml_config
60
+ from pf.common.config import load_yaml_config
61
61
  repos_yaml = load_yaml_config(project_root / ".pennyfarthing" / "repos.yaml")
62
62
  if repos_yaml and repo in repos_yaml:
63
63
  cfg = repos_yaml[repo]
@@ -83,14 +83,14 @@ def _run_analysis(repo: str | None, repo_path: str | None, days: int, exclude: t
83
83
 
84
84
  def _output_result(result, fmt: str, output_file: str | None, top: int, mode: str):
85
85
  """Format and output the analysis result."""
86
- from pennyfarthing_scripts.hotspots.formatters import (
86
+ from pf.hotspots.formatters import (
87
87
  export_csv,
88
88
  export_json,
89
89
  format_dir_table,
90
90
  format_file_table,
91
91
  format_summary,
92
92
  )
93
- from pennyfarthing_scripts.hotspots.models import MultiRepoHotspotResult
93
+ from pf.hotspots.models import MultiRepoHotspotResult
94
94
 
95
95
  # Collect all repo results
96
96
  if isinstance(result, MultiRepoHotspotResult):
@@ -14,8 +14,8 @@ import sys
14
14
  from dataclasses import asdict
15
15
  from typing import TextIO
16
16
 
17
- from pennyfarthing_scripts.common.output import header, info
18
- from pennyfarthing_scripts.hotspots.models import (
17
+ from pf.common.output import header, info
18
+ from pf.hotspots.models import (
19
19
  DirectoryHotspot,
20
20
  FileHotspot,
21
21
  HotspotResult,
@@ -11,18 +11,18 @@ This package provides:
11
11
 
12
12
  Usage:
13
13
  # Use the client module
14
- from pennyfarthing_scripts.jira import JiraClient
14
+ from pf.jira import JiraClient
15
15
  client = JiraClient()
16
16
  issue = client.get_issue_sync("MSSCI-12345")
17
17
 
18
18
  # Use CLI
19
- python -m pennyfarthing_scripts.jira <subcommand> [args]
19
+ python -m pf.jira <subcommand> [args]
20
20
  """
21
21
 
22
22
  # Re-export from client for backwards compatibility
23
23
  # Import submodules to make them accessible
24
24
  # CLI entry point - import module, not function, so "from jira import cli" gets the module
25
- from pennyfarthing_scripts.jira import (
25
+ from pf.jira import (
26
26
  bidirectional,
27
27
  claim,
28
28
  cli,
@@ -34,8 +34,8 @@ from pennyfarthing_scripts.jira import (
34
34
  story,
35
35
  sync,
36
36
  )
37
- from pennyfarthing_scripts.jira.cli import main
38
- from pennyfarthing_scripts.jira.client import (
37
+ from pf.jira.cli import main
38
+ from pf.jira.client import (
39
39
  # Constants
40
40
  GITHUB_TO_JIRA_MAP,
41
41
  JIRA_PROJECT,
@@ -0,0 +1,10 @@
1
+ """
2
+ Entry point for python -m pf.jira
3
+ """
4
+
5
+ import sys
6
+
7
+ from pf.jira.cli import cli
8
+
9
+ if __name__ == "__main__":
10
+ sys.exit(cli())
@@ -3,7 +3,7 @@ Bidirectional sync between sprint YAML and Jira.
3
3
 
4
4
  Story: MSSCI-12400 (Port from jira-bidirectional-sync.mjs)
5
5
 
6
- Usage: python -m pennyfarthing_scripts.jira bidirectional [options]
6
+ Usage: python -m pf.jira bidirectional [options]
7
7
 
8
8
  Options:
9
9
  --dry-run Show changes without applying
@@ -28,9 +28,9 @@ from dataclasses import dataclass, field
28
28
  from pathlib import Path
29
29
  from typing import Any, Literal
30
30
 
31
- from pennyfarthing_scripts.common.output import error, info, success, warn
32
- from pennyfarthing_scripts.jira.client import JiraClient, map_jira_to_status, map_status_to_jira
33
- from pennyfarthing_scripts.sprint.loader import get_all_stories, load_sprint
31
+ from pf.common.output import error, info, success, warn
32
+ from pf.jira.client import JiraClient, map_jira_to_status, map_status_to_jira
33
+ from pf.sprint.loader import get_all_stories, load_sprint
34
34
 
35
35
  # =============================================================================
36
36
  # Data Classes
@@ -92,13 +92,13 @@ def parse_cli_args(argv: list[str] | None = None) -> argparse.Namespace:
92
92
  epilog="""
93
93
  Examples:
94
94
  # Preview status sync (dry run)
95
- python -m pennyfarthing_scripts.jira bidirectional --status --dry-run
95
+ python -m pf.jira bidirectional --status --dry-run
96
96
 
97
97
  # Sync all fields, YAML wins conflicts
98
- python -m pennyfarthing_scripts.jira bidirectional --all --yaml-wins
98
+ python -m pf.jira bidirectional --all --yaml-wins
99
99
 
100
100
  # Sync only points to Jira
101
- python -m pennyfarthing_scripts.jira bidirectional --points
101
+ python -m pf.jira bidirectional --points
102
102
  """,
103
103
  )
104
104
 
@@ -353,8 +353,8 @@ async def execute_sync_plan(
353
353
 
354
354
  # Execute YAML updates (sequential, file-based)
355
355
  if yaml_updates:
356
- from pennyfarthing_scripts.common.config import get_project_root
357
- from pennyfarthing_scripts.sprint.yaml_io import read_sprint, write_sprint
356
+ from pf.common.config import get_project_root
357
+ from pf.sprint.yaml_io import read_sprint, write_sprint
358
358
 
359
359
  root = get_project_root()
360
360
  sprint_file = sprint_path or (root / "sprint" / "current-sprint.yaml")
@@ -2,7 +2,7 @@
2
2
  Claim Jira stories for work.
3
3
 
4
4
  Usage:
5
- python -m pennyfarthing_scripts.jira claim <issue-key> [--claim]
5
+ python -m pf.jira claim <issue-key> [--claim]
6
6
 
7
7
  Options:
8
8
  --claim Actually claim (assign + move to In Progress)
@@ -18,7 +18,7 @@ import argparse
18
18
  import sys
19
19
  from typing import Any
20
20
 
21
- from pennyfarthing_scripts.jira.client import (
21
+ from pf.jira.client import (
22
22
  get_issue,
23
23
  get_jira_field,
24
24
  is_jira_cli_available,
@@ -164,8 +164,8 @@ def claim_story(issue_key: str) -> dict[str, Any]:
164
164
 
165
165
  # Update sprint YAML assigned_to field
166
166
  try:
167
- from pennyfarthing_scripts.common.config import get_project_root
168
- from pennyfarthing_scripts.sprint.yaml_io import read_sprint, write_sprint
167
+ from pf.common.config import get_project_root
168
+ from pf.sprint.yaml_io import read_sprint, write_sprint
169
169
 
170
170
  root = get_project_root()
171
171
  sprint_path = root / "sprint" / "current-sprint.yaml"
@@ -3,7 +3,7 @@ Jira CLI - Unified entry point for all Jira operations.
3
3
 
4
4
  Usage:
5
5
  pf jira <command> [args]
6
- python -m pennyfarthing_scripts.jira <command> [args]
6
+ python -m pf.jira <command> [args]
7
7
 
8
8
  Commands:
9
9
  view View issue details
@@ -54,7 +54,7 @@ def view(key):
54
54
  @click.argument("key")
55
55
  def check(key):
56
56
  """Check if a story is available to claim."""
57
- from pennyfarthing_scripts.jira.claim import main as claim_main
57
+ from pf.jira.claim import main as claim_main
58
58
 
59
59
  raise SystemExit(claim_main([key]))
60
60
 
@@ -67,7 +67,7 @@ def claim(key, dry_run):
67
67
  if dry_run:
68
68
  click.echo(f"[DRY-RUN] Would claim {key} (assign to self + move to In Progress)")
69
69
  return
70
- from pennyfarthing_scripts.jira.claim import main as claim_main
70
+ from pf.jira.claim import main as claim_main
71
71
 
72
72
  raise SystemExit(claim_main([key, "--claim"]))
73
73
 
@@ -82,7 +82,7 @@ def move(key, status, dry_run):
82
82
  \b
83
83
  Statuses: "To Do", "In Progress", "In Review", "Done"
84
84
  """
85
- from pennyfarthing_scripts.jira.operations import move_issue
85
+ from pf.jira.operations import move_issue
86
86
 
87
87
  result = move_issue(key, status, dry_run=dry_run)
88
88
  if result.get("already_at_status"):
@@ -100,7 +100,7 @@ def move(key, status, dry_run):
100
100
  @click.option("--dry-run", is_flag=True, help="Preview without applying")
101
101
  def assign(key, user, dry_run):
102
102
  """Assign issue to a user (email or GitHub username)."""
103
- from pennyfarthing_scripts.jira.operations import assign_issue
103
+ from pf.jira.operations import assign_issue
104
104
 
105
105
  result = assign_issue(key, user, dry_run=dry_run)
106
106
  if result.get("already_assigned"):
@@ -123,7 +123,7 @@ def link(parent_key, child_key, link_type, dry_run):
123
123
  \b
124
124
  Link types: "Parent-Child", "Blocks", "Relates", "Duplicate"
125
125
  """
126
- from pennyfarthing_scripts.jira.operations import link_issues
126
+ from pf.jira.operations import link_issues
127
127
 
128
128
  result = link_issues(parent_key, child_key, link_type, dry_run=dry_run)
129
129
  if result.get("success"):
@@ -157,7 +157,7 @@ def create():
157
157
  @click.option("--dry-run", is_flag=True, help="Preview without creating")
158
158
  def create_epic(epic_id, dry_run):
159
159
  """Create a Jira epic and its child stories from sprint YAML."""
160
- from pennyfarthing_scripts.jira.create import create_epic_in_jira
160
+ from pf.jira.create import create_epic_in_jira
161
161
 
162
162
  result = create_epic_in_jira(epic_id, dry_run=dry_run)
163
163
  if not result.get("success"):
@@ -171,7 +171,7 @@ def create_epic(epic_id, dry_run):
171
171
  @click.option("--dry-run", is_flag=True, help="Preview without creating")
172
172
  def create_story(epic_jira_key, story_id, dry_run):
173
173
  """Create a single Jira story under an epic from sprint YAML."""
174
- from pennyfarthing_scripts.jira.create import create_story_in_jira
174
+ from pf.jira.create import create_story_in_jira
175
175
 
176
176
  result = create_story_in_jira(epic_jira_key, story_id, dry_run=dry_run)
177
177
  if not result.get("success") and not result.get("dry_run"):
@@ -199,9 +199,9 @@ def create_standalone(title, points, description, dry_run):
199
199
  pf jira create standalone "Add drift detection" -d "Detects YAML drift"
200
200
  pf jira create standalone "Quick fix" --dry-run
201
201
  """
202
- from pennyfarthing_scripts.jira.client import JIRA_PROJECT, get_client
203
- from pennyfarthing_scripts.jira.create import _build_adf_description
204
- from pennyfarthing_scripts.sprint.loader import get_sprint_info
202
+ from pf.jira.client import JIRA_PROJECT, get_client
203
+ from pf.jira.create import _build_adf_description
204
+ from pf.sprint.loader import get_sprint_info
205
205
 
206
206
  sprint_info = get_sprint_info()
207
207
  sprint_id = sprint_info.get("jira_sprint_id")
@@ -261,7 +261,7 @@ def create_standalone(title, points, description, dry_run):
261
261
  @click.option("--all", "sync_all", is_flag=True, help="Sync all fields")
262
262
  def sync(epic, dry_run, transition, points, sync_all):
263
263
  """Sync epic stories from sprint YAML to Jira."""
264
- from pennyfarthing_scripts.jira.sync import main as sync_main
264
+ from pf.jira.sync import main as sync_main
265
265
 
266
266
  args = [epic]
267
267
  if dry_run:
@@ -283,7 +283,7 @@ def sync(epic, dry_run, transition, points, sync_all):
283
283
  @click.option("--sprint", "sprint_id", help="Target specific sprint")
284
284
  def bidirectional(dry_run, yaml_wins, status, points, assignee, sync_all, sprint_id):
285
285
  """Bidirectional sync between YAML and Jira."""
286
- from pennyfarthing_scripts.jira.bidirectional import main as bidirectional_main
286
+ from pf.jira.bidirectional import main as bidirectional_main
287
287
 
288
288
  args = []
289
289
  if dry_run:
@@ -307,7 +307,7 @@ def bidirectional(dry_run, yaml_wins, status, points, assignee, sync_all, sprint
307
307
  @click.option("--fix", is_flag=True, help="Apply automatic fixes where safe")
308
308
  def reconcile(fix):
309
309
  """Reconciliation report: sprint YAML vs Jira."""
310
- from pennyfarthing_scripts.jira.reconcile import reconcile as run_reconcile
310
+ from pf.jira.reconcile import reconcile as run_reconcile
311
311
 
312
312
  result = run_reconcile(fix=fix)
313
313
  if not result.get("success"):
@@ -330,7 +330,7 @@ def sprint_add(sprint_id, issue_key, dry_run):
330
330
  if dry_run:
331
331
  click.echo(f"[DRY-RUN] Would add {issue_key} to sprint {sprint_id}")
332
332
  return
333
- from pennyfarthing_scripts.jira.client import get_client
333
+ from pf.jira.client import get_client
334
334
 
335
335
  client = get_client()
336
336
  result = client.add_to_sprint_sync(sprint_id, issue_key)
@@ -18,7 +18,7 @@ from typing import Any
18
18
  def _resolve_jira_config():
19
19
  """Resolve Jira project and URL from config file, env, or defaults."""
20
20
  try:
21
- from pennyfarthing_scripts.common.config import load_pennyfarthing_config
21
+ from pf.common.config import load_pennyfarthing_config
22
22
  config = load_pennyfarthing_config()
23
23
  jira_cfg = config.get("jira", {})
24
24
  except Exception:
@@ -16,9 +16,9 @@ import sys
16
16
  from pathlib import Path
17
17
  from typing import Any
18
18
 
19
- from pennyfarthing_scripts.jira.client import JIRA_PROJECT, get_client
20
- from pennyfarthing_scripts.sprint.loader import find_epic, find_story, load_sprint
21
- from pennyfarthing_scripts.sprint.yaml_io import read_sprint, write_sprint
19
+ from pf.jira.client import JIRA_PROJECT, get_client
20
+ from pf.sprint.loader import find_epic, find_story, load_sprint
21
+ from pf.sprint.yaml_io import read_sprint, write_sprint
22
22
 
23
23
  # Priority mapping: Pennyfarthing -> Jira
24
24
  PRIORITY_MAP = {
@@ -33,7 +33,7 @@ PROJECT_LABEL = "pennyfarthing"
33
33
 
34
34
  def _get_sprint_path() -> Path:
35
35
  """Get path to current-sprint.yaml."""
36
- from pennyfarthing_scripts.common.config import get_project_root
36
+ from pf.common.config import get_project_root
37
37
 
38
38
  return get_project_root() / "sprint" / "current-sprint.yaml"
39
39
 
@@ -187,7 +187,7 @@ def create_epic_in_jira(
187
187
  return {"success": False, "error": f"Epic '{epic_id}' not found in ruamel data"}
188
188
 
189
189
  # Validate epic shard before any Jira operations (ADR-0022)
190
- from pennyfarthing_scripts.sprint.validator import validate_epic_shard
190
+ from pf.sprint.validator import validate_epic_shard
191
191
  validation = validate_epic_shard(dict(epic_ruamel))
192
192
  if not validation.valid:
193
193
  error_msgs = "; ".join(e.message for e in validation.errors)
@@ -2,14 +2,14 @@
2
2
  Create Jira epics from Pennyfarthing sprint YAML definitions.
3
3
 
4
4
  Usage:
5
- python -m pennyfarthing_scripts.jira create epic <epic_id> [options]
5
+ python -m pf.jira create epic <epic_id> [options]
6
6
 
7
7
  Options:
8
8
  --dry-run Show what would be done without making changes
9
9
 
10
10
  Examples:
11
- python -m pennyfarthing_scripts.jira create epic epic-63 --dry-run
12
- python -m pennyfarthing_scripts.jira create epic 63
11
+ python -m pf.jira create epic epic-63 --dry-run
12
+ python -m pf.jira create epic 63
13
13
  """
14
14
 
15
15
  import argparse
@@ -17,9 +17,9 @@ import json
17
17
  import sys
18
18
  from typing import Any
19
19
 
20
- from pennyfarthing_scripts.jira.client import JIRA_PROJECT, JiraClient
21
- from pennyfarthing_scripts.sprint.loader import find_epic
22
- from pennyfarthing_scripts.sprint.loader import load_sprint as load_current_sprint
20
+ from pf.jira.client import JIRA_PROJECT, JiraClient
21
+ from pf.sprint.loader import find_epic
22
+ from pf.sprint.loader import load_sprint as load_current_sprint
23
23
 
24
24
 
25
25
  def parse_args(args: list[str] | None = None) -> argparse.Namespace:
@@ -12,7 +12,7 @@ Usage:
12
12
 
13
13
  from typing import Any
14
14
 
15
- from pennyfarthing_scripts.jira.client import (
15
+ from pf.jira.client import (
16
16
  get_client,
17
17
  get_jira_field,
18
18
  map_github_to_jira,