@pennyfarthing/core 10.1.0 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) hide show
  1. package/README.md +13 -18
  2. package/package.json +3 -1
  3. package/packages/core/dist/cli/commands/doctor-file-layout.test.js.map +1 -1
  4. package/packages/core/dist/cli/commands/doctor-legacy.test.js +24 -0
  5. package/packages/core/dist/cli/commands/doctor-legacy.test.js.map +1 -1
  6. package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -1
  7. package/packages/core/dist/cli/commands/doctor.js +101 -15
  8. package/packages/core/dist/cli/commands/doctor.js.map +1 -1
  9. package/packages/core/dist/cli/commands/e2e-fresh-install.test.js +1 -1
  10. package/packages/core/dist/cli/commands/e2e-fresh-install.test.js.map +1 -1
  11. package/packages/core/dist/cli/commands/e2e-upgrade.test.js +1 -1
  12. package/packages/core/dist/cli/commands/e2e-upgrade.test.js.map +1 -1
  13. package/packages/core/dist/cli/commands/hooks-consolidation.test.js +2 -2
  14. package/packages/core/dist/cli/commands/hooks-consolidation.test.js.map +1 -1
  15. package/packages/core/dist/cli/commands/init-consolidation.test.js.map +1 -1
  16. package/packages/core/dist/cli/commands/uninstall.d.ts.map +1 -1
  17. package/packages/core/dist/cli/commands/uninstall.js +24 -13
  18. package/packages/core/dist/cli/commands/uninstall.js.map +1 -1
  19. package/packages/core/dist/cli/commands/update-consolidation.test.js +0 -10
  20. package/packages/core/dist/cli/commands/update-consolidation.test.js.map +1 -1
  21. package/packages/core/dist/cli/commands/update.js.map +1 -1
  22. package/packages/core/dist/cli/ocean-profiles.test.js.map +1 -1
  23. package/packages/core/dist/cli/theme-maker.test.js +64 -115
  24. package/packages/core/dist/cli/theme-maker.test.js.map +1 -1
  25. package/packages/core/dist/index.d.ts +1 -1
  26. package/packages/core/dist/index.d.ts.map +1 -1
  27. package/packages/core/dist/index.js +2 -2
  28. package/packages/core/dist/index.js.map +1 -1
  29. package/packages/core/dist/plugins/plugin-discovery.d.ts +116 -0
  30. package/packages/core/dist/plugins/plugin-discovery.d.ts.map +1 -0
  31. package/packages/core/dist/plugins/plugin-discovery.js +165 -0
  32. package/packages/core/dist/plugins/plugin-discovery.js.map +1 -0
  33. package/packages/core/dist/plugins/plugin-discovery.test.d.ts +22 -0
  34. package/packages/core/dist/plugins/plugin-discovery.test.d.ts.map +1 -0
  35. package/packages/core/dist/plugins/plugin-discovery.test.js +498 -0
  36. package/packages/core/dist/plugins/plugin-discovery.test.js.map +1 -0
  37. package/packages/core/dist/scripts/generate-spider-report.js.map +1 -1
  38. package/packages/core/dist/workflow/context-watch.d.ts +80 -0
  39. package/packages/core/dist/workflow/context-watch.d.ts.map +1 -0
  40. package/packages/core/dist/workflow/context-watch.js +235 -0
  41. package/packages/core/dist/workflow/context-watch.js.map +1 -0
  42. package/packages/core/dist/workflow/context-watch.test.d.ts +1 -0
  43. package/packages/core/dist/workflow/context-watch.test.d.ts.map +1 -0
  44. package/packages/core/dist/workflow/context-watch.test.js +746 -0
  45. package/packages/core/dist/workflow/context-watch.test.js.map +1 -0
  46. package/packages/core/dist/workflow/file-watch.d.ts +82 -0
  47. package/packages/core/dist/workflow/file-watch.d.ts.map +1 -0
  48. package/packages/core/dist/workflow/file-watch.js +198 -0
  49. package/packages/core/dist/workflow/file-watch.js.map +1 -0
  50. package/packages/core/dist/workflow/file-watch.test.d.ts +21 -0
  51. package/packages/core/dist/workflow/file-watch.test.d.ts.map +1 -0
  52. package/packages/core/dist/workflow/file-watch.test.js +469 -0
  53. package/packages/core/dist/workflow/file-watch.test.js.map +1 -0
  54. package/packages/core/dist/workflow/observation-writer.d.ts +79 -0
  55. package/packages/core/dist/workflow/observation-writer.d.ts.map +1 -0
  56. package/packages/core/dist/workflow/observation-writer.js +97 -0
  57. package/packages/core/dist/workflow/observation-writer.js.map +1 -0
  58. package/packages/core/dist/workflow/observation-writer.test.d.ts +18 -0
  59. package/packages/core/dist/workflow/observation-writer.test.d.ts.map +1 -0
  60. package/packages/core/dist/workflow/observation-writer.test.js +424 -0
  61. package/packages/core/dist/workflow/observation-writer.test.js.map +1 -0
  62. package/packages/core/dist/workflow/story-workflow-routing.test.js +4 -2
  63. package/packages/core/dist/workflow/story-workflow-routing.test.js.map +1 -1
  64. package/packages/core/dist/workflow/tandem-lifecycle.d.ts +117 -0
  65. package/packages/core/dist/workflow/tandem-lifecycle.d.ts.map +1 -0
  66. package/packages/core/dist/workflow/tandem-lifecycle.js +186 -0
  67. package/packages/core/dist/workflow/tandem-lifecycle.js.map +1 -0
  68. package/packages/core/dist/workflow/tandem-lifecycle.test.d.ts +16 -0
  69. package/packages/core/dist/workflow/tandem-lifecycle.test.d.ts.map +1 -0
  70. package/packages/core/dist/workflow/tandem-lifecycle.test.js +531 -0
  71. package/packages/core/dist/workflow/tandem-lifecycle.test.js.map +1 -0
  72. package/packages/core/dist/workflow/tool-watch.d.ts +68 -0
  73. package/packages/core/dist/workflow/tool-watch.d.ts.map +1 -0
  74. package/packages/core/dist/workflow/tool-watch.js +166 -0
  75. package/packages/core/dist/workflow/tool-watch.js.map +1 -0
  76. package/packages/core/dist/workflow/tool-watch.test.d.ts +18 -0
  77. package/packages/core/dist/workflow/tool-watch.test.d.ts.map +1 -0
  78. package/packages/core/dist/workflow/tool-watch.test.js +718 -0
  79. package/packages/core/dist/workflow/tool-watch.test.js.map +1 -0
  80. package/packages/core/dist/workflow/workflow-migration.test.js +8 -4
  81. package/packages/core/dist/workflow/workflow-migration.test.js.map +1 -1
  82. package/packages/core/dist/workflow/workflow-schema.d.ts +7 -0
  83. package/packages/core/dist/workflow/workflow-schema.d.ts.map +1 -1
  84. package/packages/core/dist/workflow/workflow-schema.js +44 -0
  85. package/packages/core/dist/workflow/workflow-schema.js.map +1 -1
  86. package/packages/core/dist/workflow/workflow-schema.test.d.ts.map +1 -1
  87. package/packages/core/dist/workflow/workflow-schema.test.js +192 -0
  88. package/packages/core/dist/workflow/workflow-schema.test.js.map +1 -1
  89. package/pennyfarthing-dist/agents/handoff.md +18 -3
  90. package/pennyfarthing-dist/agents/sm-finish.md +1 -1
  91. package/pennyfarthing-dist/agents/sm-handoff.md +27 -4
  92. package/pennyfarthing-dist/agents/sm.md +11 -5
  93. package/pennyfarthing-dist/agents/tandem-backseat.md +119 -0
  94. package/pennyfarthing-dist/commands/setup.md +4 -0
  95. package/pennyfarthing-dist/guides/agent-behavior.md +62 -6
  96. package/pennyfarthing-dist/guides/bikelane.md +3 -2
  97. package/pennyfarthing-dist/guides/scale-levels.md +4 -6
  98. package/pennyfarthing-dist/guides/tandem-protocol.md +158 -0
  99. package/pennyfarthing-dist/personas/themes/discworld.yaml +1 -1
  100. package/pennyfarthing-dist/personas/themes/fifth-element.yaml +295 -0
  101. package/pennyfarthing-dist/scripts/README.md +1 -1
  102. package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +131 -54
  103. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +20 -10
  104. package/pennyfarthing-dist/scripts/misc/statusline.sh +50 -8
  105. package/pennyfarthing-dist/scripts/workflow/README.md +2 -2
  106. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +10 -189
  107. package/pennyfarthing-dist/skills/skill-registry.schema.json +8 -0
  108. package/pennyfarthing-dist/skills/skill-registry.yaml +1 -1
  109. package/pennyfarthing-dist/skills/sprint/skill.md +25 -2
  110. package/pennyfarthing-dist/skills/workflow/skill.md +24 -1
  111. package/pennyfarthing-dist/workflows/architecture/workflow.yaml +65 -0
  112. package/pennyfarthing-dist/workflows/bdd-tandem.yaml +70 -0
  113. package/pennyfarthing-dist/workflows/tdd-tandem.yaml +61 -0
  114. package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
  115. package/pennyfarthing_scripts/__pycache__/bellmode_hook.cpython-314.pyc +0 -0
  116. package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
  117. package/pennyfarthing_scripts/__pycache__/config.cpython-314.pyc +0 -0
  118. package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
  119. package/pennyfarthing_scripts/__pycache__/jira_bidirectional_sync.cpython-314.pyc +0 -0
  120. package/pennyfarthing_scripts/__pycache__/jira_epic_creation.cpython-314.pyc +0 -0
  121. package/pennyfarthing_scripts/__pycache__/jira_sync.cpython-314.pyc +0 -0
  122. package/pennyfarthing_scripts/__pycache__/jira_sync_story.cpython-314.pyc +0 -0
  123. package/pennyfarthing_scripts/__pycache__/output.cpython-314.pyc +0 -0
  124. package/pennyfarthing_scripts/__pycache__/patch_mode.cpython-314.pyc +0 -0
  125. package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
  126. package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
  127. package/pennyfarthing_scripts/bellmode_hook.py +202 -47
  128. package/pennyfarthing_scripts/brownfield/__init__.py +6 -6
  129. package/pennyfarthing_scripts/brownfield/__main__.py +1 -0
  130. package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
  131. package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
  132. package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
  133. package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
  134. package/pennyfarthing_scripts/brownfield/cli.py +0 -1
  135. package/pennyfarthing_scripts/brownfield/discover.py +1 -2
  136. package/pennyfarthing_scripts/cli.py +11 -6
  137. package/pennyfarthing_scripts/codemarkers/__init__.py +5 -1
  138. package/pennyfarthing_scripts/codemarkers/__pycache__/__init__.cpython-314.pyc +0 -0
  139. package/pennyfarthing_scripts/codemarkers/__pycache__/__main__.cpython-314.pyc +0 -0
  140. package/pennyfarthing_scripts/codemarkers/__pycache__/analyze.cpython-314.pyc +0 -0
  141. package/pennyfarthing_scripts/codemarkers/__pycache__/cli.cpython-314.pyc +0 -0
  142. package/pennyfarthing_scripts/codemarkers/__pycache__/formatters.cpython-314.pyc +0 -0
  143. package/pennyfarthing_scripts/codemarkers/__pycache__/models.cpython-314.pyc +0 -0
  144. package/pennyfarthing_scripts/codemarkers/analyze.py +177 -2
  145. package/pennyfarthing_scripts/codemarkers/cli.py +50 -0
  146. package/pennyfarthing_scripts/codemarkers/formatters.py +0 -1
  147. package/pennyfarthing_scripts/codemarkers/models.py +15 -0
  148. package/pennyfarthing_scripts/common/__init__.py +8 -9
  149. package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-314.pyc +0 -0
  150. package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
  151. package/pennyfarthing_scripts/common/__pycache__/output.cpython-314.pyc +0 -0
  152. package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
  153. package/pennyfarthing_scripts/common/config.py +1 -1
  154. package/pennyfarthing_scripts/complexity/__init__.py +1 -1
  155. package/pennyfarthing_scripts/complexity/__pycache__/__init__.cpython-314.pyc +0 -0
  156. package/pennyfarthing_scripts/complexity/__pycache__/__main__.cpython-314.pyc +0 -0
  157. package/pennyfarthing_scripts/complexity/__pycache__/analyze.cpython-314.pyc +0 -0
  158. package/pennyfarthing_scripts/complexity/__pycache__/cli.cpython-314.pyc +0 -0
  159. package/pennyfarthing_scripts/complexity/__pycache__/formatters.cpython-314.pyc +0 -0
  160. package/pennyfarthing_scripts/complexity/__pycache__/models.cpython-314.pyc +0 -0
  161. package/pennyfarthing_scripts/complexity/analyze.py +1 -1
  162. package/pennyfarthing_scripts/complexity/cli.py +5 -1
  163. package/pennyfarthing_scripts/complexity/formatters.py +1 -1
  164. package/pennyfarthing_scripts/context.py +14 -15
  165. package/pennyfarthing_scripts/deadcode/__pycache__/__init__.cpython-314.pyc +0 -0
  166. package/pennyfarthing_scripts/deadcode/__pycache__/__main__.cpython-314.pyc +0 -0
  167. package/pennyfarthing_scripts/deadcode/__pycache__/analyze.cpython-314.pyc +0 -0
  168. package/pennyfarthing_scripts/deadcode/__pycache__/cli.cpython-314.pyc +0 -0
  169. package/pennyfarthing_scripts/deadcode/__pycache__/formatters.cpython-314.pyc +0 -0
  170. package/pennyfarthing_scripts/deadcode/__pycache__/models.cpython-314.pyc +0 -0
  171. package/pennyfarthing_scripts/deadcode/analyze.py +3 -4
  172. package/pennyfarthing_scripts/deadcode/cli.py +2 -2
  173. package/pennyfarthing_scripts/dependencies/__init__.py +2 -2
  174. package/pennyfarthing_scripts/dependencies/__pycache__/__init__.cpython-314.pyc +0 -0
  175. package/pennyfarthing_scripts/dependencies/__pycache__/__main__.cpython-314.pyc +0 -0
  176. package/pennyfarthing_scripts/dependencies/__pycache__/analyze.cpython-314.pyc +0 -0
  177. package/pennyfarthing_scripts/dependencies/__pycache__/cli.cpython-314.pyc +0 -0
  178. package/pennyfarthing_scripts/dependencies/__pycache__/formatters.cpython-314.pyc +0 -0
  179. package/pennyfarthing_scripts/dependencies/__pycache__/models.cpython-314.pyc +0 -0
  180. package/pennyfarthing_scripts/dependencies/analyze.py +1 -1
  181. package/pennyfarthing_scripts/dependencies/cli.py +8 -4
  182. package/pennyfarthing_scripts/dependencies/formatters.py +1 -1
  183. package/pennyfarthing_scripts/git/__init__.py +5 -5
  184. package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
  185. package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
  186. package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
  187. package/pennyfarthing_scripts/git/create_branches.py +3 -2
  188. package/pennyfarthing_scripts/git/status_all.py +1 -1
  189. package/pennyfarthing_scripts/healthscore/__init__.py +2 -2
  190. package/pennyfarthing_scripts/healthscore/__main__.py +8 -0
  191. package/pennyfarthing_scripts/healthscore/__pycache__/__init__.cpython-314.pyc +0 -0
  192. package/pennyfarthing_scripts/healthscore/__pycache__/__main__.cpython-314.pyc +0 -0
  193. package/pennyfarthing_scripts/healthscore/__pycache__/analyze.cpython-314.pyc +0 -0
  194. package/pennyfarthing_scripts/healthscore/__pycache__/cli.cpython-314.pyc +0 -0
  195. package/pennyfarthing_scripts/healthscore/__pycache__/formatters.cpython-314.pyc +0 -0
  196. package/pennyfarthing_scripts/healthscore/__pycache__/models.cpython-314.pyc +0 -0
  197. package/pennyfarthing_scripts/healthscore/analyze.py +451 -21
  198. package/pennyfarthing_scripts/healthscore/cli.py +5 -1
  199. package/pennyfarthing_scripts/healthscore/models.py +0 -1
  200. package/pennyfarthing_scripts/hooks.py +8 -11
  201. package/pennyfarthing_scripts/hotspots/__init__.py +6 -6
  202. package/pennyfarthing_scripts/hotspots/__pycache__/__init__.cpython-314.pyc +0 -0
  203. package/pennyfarthing_scripts/hotspots/__pycache__/__main__.cpython-314.pyc +0 -0
  204. package/pennyfarthing_scripts/hotspots/__pycache__/analyze.cpython-314.pyc +0 -0
  205. package/pennyfarthing_scripts/hotspots/__pycache__/cli.cpython-314.pyc +0 -0
  206. package/pennyfarthing_scripts/hotspots/__pycache__/formatters.cpython-314.pyc +0 -0
  207. package/pennyfarthing_scripts/hotspots/__pycache__/models.cpython-314.pyc +0 -0
  208. package/pennyfarthing_scripts/hotspots/analyze.py +128 -14
  209. package/pennyfarthing_scripts/hotspots/cli.py +2 -2
  210. package/pennyfarthing_scripts/hotspots/models.py +0 -1
  211. package/pennyfarthing_scripts/jira/__init__.py +15 -17
  212. package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
  213. package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
  214. package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
  215. package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-314.pyc +0 -0
  216. package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
  217. package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
  218. package/pennyfarthing_scripts/jira/__pycache__/create.cpython-314.pyc +0 -0
  219. package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-314.pyc +0 -0
  220. package/pennyfarthing_scripts/jira/__pycache__/operations.cpython-314.pyc +0 -0
  221. package/pennyfarthing_scripts/jira/__pycache__/reconcile.cpython-314.pyc +0 -0
  222. package/pennyfarthing_scripts/jira/__pycache__/story.cpython-314.pyc +0 -0
  223. package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-314.pyc +0 -0
  224. package/pennyfarthing_scripts/jira/bidirectional.py +2 -3
  225. package/pennyfarthing_scripts/jira/claim.py +21 -0
  226. package/pennyfarthing_scripts/jira/cli.py +2 -2
  227. package/pennyfarthing_scripts/jira/client.py +4 -4
  228. package/pennyfarthing_scripts/jira/create.py +45 -1
  229. package/pennyfarthing_scripts/jira/epic.py +3 -2
  230. package/pennyfarthing_scripts/jira/reconcile.py +0 -1
  231. package/pennyfarthing_scripts/jira/story.py +2 -0
  232. package/pennyfarthing_scripts/jira/sync.py +1 -1
  233. package/pennyfarthing_scripts/migration/__pycache__/__init__.cpython-314.pyc +0 -0
  234. package/pennyfarthing_scripts/migration/__pycache__/session.cpython-314.pyc +0 -0
  235. package/pennyfarthing_scripts/migration/__pycache__/skill.cpython-314.pyc +0 -0
  236. package/pennyfarthing_scripts/migration/__pycache__/step.cpython-314.pyc +0 -0
  237. package/pennyfarthing_scripts/migration/__pycache__/validate.cpython-314.pyc +0 -0
  238. package/pennyfarthing_scripts/migration/skill.py +0 -1
  239. package/pennyfarthing_scripts/migration/step.py +0 -1
  240. package/pennyfarthing_scripts/migration/validate.py +8 -5
  241. package/pennyfarthing_scripts/patch_mode.py +2 -2
  242. package/pennyfarthing_scripts/preflight/__init__.py +1 -1
  243. package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
  244. package/pennyfarthing_scripts/preflight/__pycache__/__main__.cpython-314.pyc +0 -0
  245. package/pennyfarthing_scripts/preflight/__pycache__/cli.cpython-314.pyc +0 -0
  246. package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
  247. package/pennyfarthing_scripts/preflight/finish.py +0 -1
  248. package/pennyfarthing_scripts/pretooluse_hook.py +6 -7
  249. package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
  250. package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
  251. package/pennyfarthing_scripts/prime/__pycache__/loader.cpython-314.pyc +0 -0
  252. package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
  253. package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
  254. package/pennyfarthing_scripts/prime/__pycache__/session.cpython-314.pyc +0 -0
  255. package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
  256. package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
  257. package/pennyfarthing_scripts/prime/cli.py +5 -1
  258. package/pennyfarthing_scripts/prime/loader.py +2 -3
  259. package/pennyfarthing_scripts/prime/persona.py +2 -1
  260. package/pennyfarthing_scripts/prime/tiers.py +4 -4
  261. package/pennyfarthing_scripts/schema_validation_hook.py +2 -3
  262. package/pennyfarthing_scripts/sprint/__init__.py +10 -12
  263. package/pennyfarthing_scripts/sprint/__main__.py +2 -2
  264. package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
  265. package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
  266. package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
  267. package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
  268. package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
  269. package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
  270. package/pennyfarthing_scripts/sprint/__pycache__/import_epic.cpython-314.pyc +0 -0
  271. package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
  272. package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-314.pyc +0 -0
  273. package/pennyfarthing_scripts/sprint/__pycache__/story_add.cpython-314.pyc +0 -0
  274. package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
  275. package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
  276. package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
  277. package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
  278. package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
  279. package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-314.pyc +0 -0
  280. package/pennyfarthing_scripts/sprint/archive.py +0 -1
  281. package/pennyfarthing_scripts/sprint/archive_epic.py +1 -4
  282. package/pennyfarthing_scripts/sprint/cli.py +34 -28
  283. package/pennyfarthing_scripts/sprint/epic_add.py +8 -1
  284. package/pennyfarthing_scripts/sprint/import_epic.py +42 -18
  285. package/pennyfarthing_scripts/sprint/loader.py +6 -0
  286. package/pennyfarthing_scripts/sprint/status.py +1 -2
  287. package/pennyfarthing_scripts/sprint/story_add.py +2 -2
  288. package/pennyfarthing_scripts/sprint/story_finish.py +3 -5
  289. package/pennyfarthing_scripts/sprint/story_update.py +11 -3
  290. package/pennyfarthing_scripts/sprint/validate_cmd.py +0 -1
  291. package/pennyfarthing_scripts/sprint/validator.py +120 -6
  292. package/pennyfarthing_scripts/sprint/work.py +1 -4
  293. package/pennyfarthing_scripts/sprint/yaml_io.py +10 -2
  294. package/pennyfarthing_scripts/story/__init__.py +14 -16
  295. package/pennyfarthing_scripts/story/__pycache__/__init__.cpython-314.pyc +0 -0
  296. package/pennyfarthing_scripts/story/__pycache__/__main__.cpython-314.pyc +0 -0
  297. package/pennyfarthing_scripts/story/__pycache__/cli.cpython-314.pyc +0 -0
  298. package/pennyfarthing_scripts/story/__pycache__/create.cpython-314.pyc +0 -0
  299. package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
  300. package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
  301. package/pennyfarthing_scripts/story/size.py +0 -1
  302. package/pennyfarthing_scripts/story/template.py +0 -1
  303. package/pennyfarthing_scripts/swebench.py +1 -2
  304. package/pennyfarthing_scripts/tests/__pycache__/__init__.cpython-314.pyc +0 -0
  305. package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
  306. package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
  307. package/pennyfarthing_scripts/tests/__pycache__/test_cli_modules.cpython-314-pytest-9.0.2.pyc +0 -0
  308. package/pennyfarthing_scripts/tests/__pycache__/test_codemarkers.cpython-314-pytest-9.0.2.pyc +0 -0
  309. package/pennyfarthing_scripts/tests/__pycache__/test_common.cpython-314-pytest-9.0.2.pyc +0 -0
  310. package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
  311. package/pennyfarthing_scripts/tests/__pycache__/test_healthscore.cpython-314-pytest-9.0.2.pyc +0 -0
  312. package/pennyfarthing_scripts/tests/__pycache__/test_jira_package.cpython-314-pytest-9.0.2.pyc +0 -0
  313. package/pennyfarthing_scripts/tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc +0 -0
  314. package/pennyfarthing_scripts/tests/__pycache__/test_patch_mode.cpython-314-pytest-9.0.2.pyc +0 -0
  315. package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
  316. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
  317. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
  318. package/pennyfarthing_scripts/tests/__pycache__/test_story_add.cpython-314-pytest-9.0.2.pyc +0 -0
  319. package/pennyfarthing_scripts/tests/__pycache__/test_story_package.cpython-314-pytest-9.0.2.pyc +0 -0
  320. package/pennyfarthing_scripts/tests/__pycache__/test_story_update.cpython-314-pytest-9.0.2.pyc +0 -0
  321. package/pennyfarthing_scripts/tests/__pycache__/test_tiers.cpython-314-pytest-9.0.2.pyc +0 -0
  322. package/pennyfarthing_scripts/tests/__pycache__/test_token_counting.cpython-314-pytest-9.0.2.pyc +0 -0
  323. package/pennyfarthing_scripts/tests/__pycache__/test_validate_cmd.cpython-314-pytest-9.0.2.pyc +0 -0
  324. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_check.cpython-314-pytest-9.0.2.pyc +0 -0
  325. package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
  326. package/pennyfarthing_scripts/tests/conftest.py +1 -2
  327. package/pennyfarthing_scripts/tests/test_brownfield.py +10 -13
  328. package/pennyfarthing_scripts/tests/test_cli_modules.py +0 -4
  329. package/pennyfarthing_scripts/tests/test_codemarkers.py +13 -8
  330. package/pennyfarthing_scripts/tests/test_common.py +9 -4
  331. package/pennyfarthing_scripts/tests/test_epic_shard_validation.py +699 -0
  332. package/pennyfarthing_scripts/tests/test_git_utils.py +10 -13
  333. package/pennyfarthing_scripts/tests/test_healthscore.py +17 -25
  334. package/pennyfarthing_scripts/tests/test_jira_package.py +0 -3
  335. package/pennyfarthing_scripts/tests/test_package_structure.py +3 -16
  336. package/pennyfarthing_scripts/tests/test_patch_mode.py +7 -11
  337. package/pennyfarthing_scripts/tests/test_prime.py +39 -21
  338. package/pennyfarthing_scripts/tests/test_sprint_package.py +3 -8
  339. package/pennyfarthing_scripts/tests/test_sprint_validator.py +53 -5
  340. package/pennyfarthing_scripts/tests/test_story_add.py +3 -7
  341. package/pennyfarthing_scripts/tests/test_story_package.py +0 -3
  342. package/pennyfarthing_scripts/tests/test_story_update.py +5 -10
  343. package/pennyfarthing_scripts/tests/test_tiers.py +18 -17
  344. package/pennyfarthing_scripts/tests/test_token_counting.py +19 -13
  345. package/pennyfarthing_scripts/tests/test_validate_cmd.py +2 -7
  346. package/pennyfarthing_scripts/tests/test_workflow_check.py +0 -2
  347. package/pennyfarthing_scripts/tests/test_yaml_io.py +0 -3
  348. package/pennyfarthing_scripts/theme/__pycache__/__init__.cpython-314.pyc +0 -0
  349. package/pennyfarthing_scripts/theme/__pycache__/cli.cpython-314.pyc +0 -0
  350. package/pennyfarthing_scripts/theme/cli.py +3 -2
  351. package/pennyfarthing_scripts/validate/__init__.py +21 -0
  352. package/pennyfarthing_scripts/validate/__pycache__/__init__.cpython-314.pyc +0 -0
  353. package/pennyfarthing_scripts/validate/__pycache__/cli.cpython-314.pyc +0 -0
  354. package/pennyfarthing_scripts/validate/adapters/__init__.py +0 -0
  355. package/pennyfarthing_scripts/validate/adapters/__pycache__/__init__.cpython-314.pyc +0 -0
  356. package/pennyfarthing_scripts/validate/adapters/__pycache__/agent.cpython-314.pyc +0 -0
  357. package/pennyfarthing_scripts/validate/adapters/__pycache__/schema.cpython-314.pyc +0 -0
  358. package/pennyfarthing_scripts/validate/adapters/__pycache__/skill_command.cpython-314.pyc +0 -0
  359. package/pennyfarthing_scripts/validate/adapters/__pycache__/sprint.cpython-314.pyc +0 -0
  360. package/pennyfarthing_scripts/validate/adapters/__pycache__/workflow.cpython-314.pyc +0 -0
  361. package/pennyfarthing_scripts/validate/adapters/agent.py +239 -0
  362. package/pennyfarthing_scripts/validate/adapters/schema.py +30 -0
  363. package/pennyfarthing_scripts/validate/adapters/skill_command.py +292 -0
  364. package/pennyfarthing_scripts/validate/adapters/sprint.py +69 -0
  365. package/pennyfarthing_scripts/validate/adapters/workflow.py +320 -0
  366. package/pennyfarthing_scripts/validate/cli.py +141 -0
  367. package/pennyfarthing_scripts/welcome_hook.py +2 -3
  368. package/pennyfarthing_scripts/workflow.py +3 -3
  369. package/scripts/README.md +3 -15
  370. package/pennyfarthing-dist/commands/benchmark-control.md +0 -69
  371. package/pennyfarthing-dist/commands/benchmark.md +0 -485
  372. package/pennyfarthing-dist/commands/job-fair.md +0 -102
  373. package/pennyfarthing-dist/commands/solo.md +0 -447
  374. package/pennyfarthing-dist/guides/benchmarks.md +0 -62
  375. package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
  376. package/pennyfarthing-dist/scripts/test/ensure-swebench-data.sh +0 -59
  377. package/pennyfarthing-dist/scripts/test/ground-truth-judge.py +0 -220
  378. package/pennyfarthing-dist/scripts/test/swebench-judge.py +0 -374
  379. package/pennyfarthing-dist/scripts/test/test-cache.sh +0 -165
  380. package/pennyfarthing-dist/scripts/test/test-setup.sh +0 -337
  381. package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +0 -13
  382. package/pennyfarthing-dist/scripts/theme/compute_theme_tiers.py +0 -402
  383. package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +0 -97
  384. package/pennyfarthing-dist/skills/finalize-run/SKILL.md +0 -261
  385. package/pennyfarthing-dist/skills/judge/SKILL.md +0 -644
  386. package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +0 -187
  387. package/pennyfarthing-dist/workflows/dev-story/checklist.md +0 -80
  388. package/pennyfarthing-dist/workflows/dev-story/instructions.xml +0 -410
  389. package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +0 -50
  390. package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +0 -201
  391. package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +0 -156
  392. package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +0 -140
  393. package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +0 -203
  394. package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +0 -74
  395. package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +0 -27
  396. package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  397. package/pennyfarthing_scripts/__pycache__/jira.cpython-314.pyc +0 -0
  398. package/pennyfarthing_scripts/__pycache__/pretooluse_hook.cpython-314.pyc +0 -0
  399. package/pennyfarthing_scripts/__pycache__/sprint.cpython-314.pyc +0 -0
  400. package/pennyfarthing_scripts/__pycache__/workflow.cpython-311.pyc +0 -0
  401. package/pennyfarthing_scripts/jira/__pycache__/compat.cpython-314.pyc +0 -0
  402. package/pennyfarthing_scripts/jira/__pycache__/mappings.cpython-314.pyc +0 -0
  403. package/pennyfarthing_scripts/jira/__pycache__/models.cpython-314.pyc +0 -0
  404. package/pennyfarthing_scripts/migration/__pycache__/__main__.cpython-314.pyc +0 -0
  405. package/pennyfarthing_scripts/migration/__pycache__/cli.cpython-314.pyc +0 -0
  406. package/pennyfarthing_scripts/prime/__pycache__/__main__.cpython-314.pyc +0 -0
  407. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_cli.cpython-314-pytest-9.0.2.pyc +0 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Pennyfarthing
2
2
 
3
- **v10.1.0** | *The outer loop goes once, the inner loop goes many times.*
3
+ **v10.2.0** | *The outer loop goes once, the inner loop goes many times.*
4
4
 
5
5
  <img src="pennyfarthing.png" alt="Pennyfarthing Logo" width="75" style="float:left; margin:10px">
6
6
 
@@ -15,9 +15,9 @@ A Claude Code agent orchestration framework built around three pillars: a flexib
15
15
  A multi-agent system with customizable BikeLane workflows for structured software development:
16
16
 
17
17
  - **10 Coordinated Agents** - SM, TEA, Dev, Reviewer, Architect, PM, Tech Writer, UX Designer, DevOps, Orchestrator
18
- - **9 BikeLane Workflows** - Phased (TDD, BDD, Trivial, 2pTDD), Stepped (Architecture, Release, Git Cleanup)
19
- - **50 Slash Commands** - Entry points for agent activation and workflows
20
- - **22 Skills** - Reusable knowledge domains (testing, code-review, jira, mermaid, etc.)
18
+ - **11 BikeLane Workflows** - Phased (TDD, BDD, Trivial, 2pTDD, TDD-Tandem, BDD-Tandem, Patch, Agent-Docs), Stepped (Architecture, Release, Git Cleanup)
19
+ - **46 Slash Commands** - Entry points for agent activation and workflows
20
+ - **19 Skills** - Reusable knowledge domains (testing, code-review, jira, mermaid, etc.)
21
21
  - **Prime Context System** - Tiered context injection assembles agent definition, persona, session state, and sidecar memory
22
22
  - **Automatic Handoffs** - Context-aware agent transitions via subagent delegation
23
23
  - **Agent Sidecars** - Persistent learning files where agents record patterns, gotchas, and decisions across stories
@@ -41,12 +41,6 @@ The 97 persona themes (Discworld, Star Trek, Breaking Bad, etc.) are instruments
41
41
 
42
42
  ---
43
43
 
44
- ### [**Explore the Research Showcase**](https://animated-meme-3e4494y.pages.github.io/)
45
-
46
- 97 themes with OCEAN spider charts, benchmark tiers, and character profiles.
47
-
48
- ---
49
-
50
44
  ## Quick Start
51
45
 
52
46
  ```bash
@@ -87,8 +81,8 @@ All panels are draggable, floatable, and splittable:
87
81
  |-------|---------|
88
82
  | **Message** | Conversation stream (always visible) |
89
83
  | **Sprint** | Current sprint stories and progress |
90
- | **Progress** | TDD/BDD phase visualization |
91
84
  | **BikeLane** | Stepped workflow state and navigation |
85
+ | **AC** | Acceptance criteria checklist with progress |
92
86
  | **Acceptance Criteria** | Story ACs with pass/fail tracking |
93
87
  | **Changed** | Files added or modified during the session |
94
88
  | **Diffs** | Git-based diff viewer for current changes |
@@ -100,6 +94,7 @@ All panels are draggable, floatable, and splittable:
100
94
  | **Background** | Background job monitoring |
101
95
  | **TTY** | Integrated terminal |
102
96
  | **Workflow** | Workflow navigation and status |
97
+ | **Hotspots** | Codebase health — dead code, complexity, dependencies |
103
98
 
104
99
  ### Tool Visualization
105
100
 
@@ -201,21 +196,21 @@ See [Benchmarking Documentation](docs/BENCHMARKING.md) for methodology.
201
196
  |----------|-------------|
202
197
  | [**User Guide**](docs/USER-GUIDE.md) | Complete documentation |
203
198
  | [Getting Started](docs/GETTING-STARTED.md) | Quick start guide |
204
- | [Workflow Diagrams](docs/WORKFLOW-DIAGRAMS.md) | Visual Mermaid diagrams for all workflows |
199
+ | [BikeLane Diagrams](docs/BIKELANE-DIAGRAMS.md) | Visual Mermaid diagrams for all workflows |
205
200
  | [BikeLane](docs/BIKELANE.md) | Workflow system architecture |
206
201
  | [Agents](docs/AGENTS.md) | Agent reference |
207
202
  | [Commands](docs/COMMANDS.md) | Slash command reference |
208
- | [Benchmarking](docs/BENCHMARKING.md) | Scientific persona evaluation |
203
+ | [Benchmarking](packages/benchmark/docs/BENCHMARKING.md) | Scientific persona evaluation |
209
204
  | [Jira Integration](docs/JIRA-INTEGRATION.md) | Jira CLI and sprint sync |
210
- | [Cyclist](docs/CYCLIST.md) | Visual terminal documentation |
205
+ | [Cyclist Guide](docs/CYCLIST-GUIDE.md) | Visual terminal documentation |
211
206
 
212
- ## Available Themes (97)
207
+ ## Available Themes (98)
213
208
 
214
- Core includes 26 themes. Optional theme packs add 98 more across 7 packages:
209
+ Core includes 27 themes. Optional theme packs add 71 more across 7 packages:
215
210
 
216
211
  | Package | Themes | Examples |
217
212
  |---------|--------|----------|
218
- | `@pennyfarthing/core` (included) | 26 | `the-expanse`, `star-trek-tng`, `breaking-bad`, `discworld`, `game-of-thrones` |
213
+ | `@pennyfarthing/core` (included) | 27 | `the-expanse`, `star-trek-tng`, `breaking-bad`, `discworld`, `fifth-element` |
219
214
  | `@pennyfarthing/themes-prestige-tv` | 17 | `succession`, `the-wire`, `mad-men`, `fargo`, `the-sopranos` |
220
215
  | `@pennyfarthing/themes-literary` | 15 | `shakespeare`, `jane-austen`, `sherlock-holmes`, `1984`, `great-gatsby` |
221
216
  | `@pennyfarthing/themes-realistic` | 14 | `ancient-philosophers`, `jazz-legends`, `film-auteurs`, `software-pioneers` |
@@ -224,7 +219,7 @@ Core includes 26 themes. Optional theme packs add 98 more across 7 packages:
224
219
  | `@pennyfarthing/themes-mythology-fantasy` | 4 | `greek-mythology`, `norse-mythology`, `his-dark-materials`, `the-witcher` |
225
220
  | `@pennyfarthing/themes-superheroes` | 4 | `marvel-mcu`, `avatar-the-last-airbender`, `legion-of-doom` |
226
221
 
227
- All themes include OCEAN (Big Five) personality profiles. See [Theme Comparison](docs/THEME-COMPARISON.md) for personality analysis.
222
+ All themes include OCEAN (Big Five) personality profiles. See [Personas](docs/PERSONAS.md) for personality analysis.
228
223
 
229
224
  ### Installing Theme Packs
230
225
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pennyfarthing/core",
3
- "version": "10.1.0",
3
+ "version": "10.2.0",
4
4
  "description": "Claude Code agent framework with TDD workflow and persona system",
5
5
  "type": "module",
6
6
  "bin": {
@@ -38,6 +38,7 @@
38
38
  "dev": "pnpm -r --parallel dev",
39
39
  "test": "pnpm -r test",
40
40
  "lint": "eslint 'packages/*/src/**/*.ts' --max-warnings 0",
41
+ "lint:md": "markdownlint-cli2 'pennyfarthing-dist/**/*.md'",
41
42
  "validate:refs": "node scripts/validate-refs.js",
42
43
  "test:validate-refs": "node --test scripts/validate-refs.test.js",
43
44
  "clean": "pnpm -r clean"
@@ -55,6 +56,7 @@
55
56
  "@eslint/js": "^9.39.2",
56
57
  "eslint": "^9.39.2",
57
58
  "globals": "^17.0.0",
59
+ "markdownlint-cli2": "^0.20.0",
58
60
  "typescript": "^5.3.3",
59
61
  "typescript-eslint": "^8.53.0"
60
62
  },
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-file-layout.test.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor-file-layout.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor-file-layout.test.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor-file-layout.test.ts"],"names":[],"mappings":"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"}
@@ -112,6 +112,30 @@ describe('MSSCI-12346: Legacy Install Cleanup', () => {
112
112
  assert.strictEqual(existsSync(legacyPath), false, 'Legacy config should be removed');
113
113
  });
114
114
  });
115
+ describe('Bug 5: persona config preservation on YAML parse failure', () => {
116
+ it('should NOT delete legacy persona-config.yaml if YAML parse fails', () => {
117
+ const legacyConfig = join(claudeDir, 'persona-config.yaml');
118
+ writeFileSync(legacyConfig, 'theme: minimalist\n bad indent: [unclosed', 'utf8');
119
+ const results = checkLegacyFiles(testDir);
120
+ const personaResult = results.find(r => r.name.includes('persona'));
121
+ assert.ok(personaResult, 'Should detect legacy persona config');
122
+ if (personaResult?.fix) {
123
+ personaResult.fix();
124
+ }
125
+ assert.ok(existsSync(legacyConfig), 'Legacy persona config must NOT be deleted when YAML parse fails');
126
+ });
127
+ it('should delete legacy persona-config.yaml after successful migration', () => {
128
+ const legacyConfig = join(claudeDir, 'persona-config.yaml');
129
+ writeFileSync(legacyConfig, 'theme: minimalist\n', 'utf8');
130
+ mkdirSync(pennyfarthingDir, { recursive: true });
131
+ const results = checkLegacyFiles(testDir);
132
+ const personaResult = results.find(r => r.name.includes('persona'));
133
+ if (personaResult?.fix) {
134
+ personaResult.fix();
135
+ }
136
+ assert.ok(!existsSync(legacyConfig), 'Legacy persona config should be deleted after successful migration');
137
+ });
138
+ });
115
139
  describe('checkLegacyStatuslinePath()', () => {
116
140
  it('should detect wrong statusline path in settings.local.json', () => {
117
141
  // AC: doctor --fix updates settings.local.json statusline path if wrong
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-legacy.test.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor-legacy.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor-legacy.test.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor-legacy.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAsBA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2HzE;AA+iDD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,CAgKnE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAkF1E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,CAsIlE"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAsBA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2HzE;AAsoDD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,CA+JnE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAkF1E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,CAsIlE"}
@@ -403,7 +403,8 @@ function addBenchmarkPermissions(projectRoot) {
403
403
  settings = JSON.parse(readFileSync(settingsPath, 'utf8'));
404
404
  }
405
405
  catch {
406
- // Start fresh if parse fails
406
+ logger.warning(`Cannot parse ${settingsPath} fix JSON syntax and re-run doctor --fix`);
407
+ return;
407
408
  }
408
409
  }
409
410
  if (!settings.permissions) {
@@ -722,7 +723,8 @@ function addContextCircuitBreaker(projectRoot, installationType) {
722
723
  settings = JSON.parse(readFileSync(settingsPath, 'utf8'));
723
724
  }
724
725
  catch {
725
- // Start fresh if parse fails
726
+ logger.warning(`Cannot parse ${settingsPath} fix JSON syntax and re-run doctor --fix`);
727
+ return;
726
728
  }
727
729
  }
728
730
  if (!settings.hooks) {
@@ -810,7 +812,8 @@ function addSchemaValidationHook(projectRoot, installationType) {
810
812
  settings = JSON.parse(readFileSync(settingsPath, 'utf8'));
811
813
  }
812
814
  catch {
813
- // Start fresh if parse fails
815
+ logger.warning(`Cannot parse ${settingsPath} fix JSON syntax and re-run doctor --fix`);
816
+ return;
814
817
  }
815
818
  }
816
819
  if (!settings.hooks) {
@@ -899,7 +902,8 @@ function addPostToolUseHook(projectRoot, installationType) {
899
902
  settings = JSON.parse(readFileSync(settingsPath, 'utf8'));
900
903
  }
901
904
  catch {
902
- // Start fresh if parse fails
905
+ logger.warning(`Cannot parse ${settingsPath} fix JSON syntax and re-run doctor --fix`);
906
+ return;
903
907
  }
904
908
  }
905
909
  if (!settings.hooks) {
@@ -988,7 +992,8 @@ function addSprintYamlValidationHook(projectRoot, installationType) {
988
992
  settings = JSON.parse(readFileSync(settingsPath, 'utf8'));
989
993
  }
990
994
  catch {
991
- // Start fresh if parse fails
995
+ logger.warning(`Cannot parse ${settingsPath} fix JSON syntax and re-run doctor --fix`);
996
+ return;
992
997
  }
993
998
  }
994
999
  if (!settings.hooks) {
@@ -1025,7 +1030,8 @@ function addStopHook(projectRoot, installationType) {
1025
1030
  settings = JSON.parse(readFileSync(settingsPath, 'utf8'));
1026
1031
  }
1027
1032
  catch {
1028
- // Start fresh if parse fails
1033
+ logger.warning(`Cannot parse ${settingsPath} fix JSON syntax and re-run doctor --fix`);
1034
+ return;
1029
1035
  }
1030
1036
  }
1031
1037
  if (!settings.hooks) {
@@ -1090,7 +1096,8 @@ function addSessionStartHooks(projectRoot, installationType) {
1090
1096
  settings = JSON.parse(readFileSync(settingsPath, 'utf8'));
1091
1097
  }
1092
1098
  catch {
1093
- // Start fresh if parse fails
1099
+ logger.warning(`Cannot parse ${settingsPath} fix JSON syntax and re-run doctor --fix`);
1100
+ return;
1094
1101
  }
1095
1102
  }
1096
1103
  if (!settings.hooks) {
@@ -1316,15 +1323,28 @@ function checkHooks(projectRoot) {
1316
1323
  /**
1317
1324
  * Check git hooks in .git/hooks/ are up-to-date with package source.
1318
1325
  * Detects stale copies that were installed by `pennyfarthing init` but never refreshed.
1319
- * Provides --fix to overwrite stale hooks with current package content.
1326
+ * For framework/orchestrator repos (has pennyfarthing-dist/), checks that hooks are
1327
+ * symlinked rather than copied, since symlinks stay current automatically.
1328
+ * Provides --fix to refresh stale hooks or replace copies with symlinks.
1320
1329
  */
1321
1330
  function checkGitHooks(projectRoot, nodeModulesPath) {
1322
1331
  const results = [];
1323
- const gitHooksDir = join(projectRoot, '.git/hooks');
1332
+ // Use git rev-parse to find the actual git dir (handles worktrees where .git is a file)
1333
+ const gitDirResult = spawnSync('git', ['rev-parse', '--git-dir'], { cwd: projectRoot, encoding: 'utf8' });
1334
+ const gitDir = gitDirResult.status === 0
1335
+ ? (gitDirResult.stdout.trim().startsWith('/') ? gitDirResult.stdout.trim() : join(projectRoot, gitDirResult.stdout.trim()))
1336
+ : join(projectRoot, '.git');
1337
+ const gitHooksDir = join(gitDir, 'hooks');
1324
1338
  if (!pathExists(gitHooksDir)) {
1325
1339
  return results;
1326
1340
  }
1327
- if (!nodeModulesPath) {
1341
+ // Detect framework/orchestrator repo (has pennyfarthing-dist/ at project root)
1342
+ const isFrameworkRepo = pathExists(join(projectRoot, 'pennyfarthing-dist'));
1343
+ const frameworkHooksDir = isFrameworkRepo
1344
+ ? join(projectRoot, 'pennyfarthing-dist/scripts/hooks')
1345
+ : null;
1346
+ // Need either node_modules or framework source to compare against
1347
+ if (!nodeModulesPath && !frameworkHooksDir) {
1328
1348
  return results;
1329
1349
  }
1330
1350
  const hooks = [
@@ -1333,7 +1353,10 @@ function checkGitHooks(projectRoot, nodeModulesPath) {
1333
1353
  { source: 'post-merge.sh', dest: 'post-merge', marker: 'pennyfarthing' },
1334
1354
  ];
1335
1355
  for (const hook of hooks) {
1336
- const sourcePath = join(nodeModulesPath, 'scripts/hooks', hook.source);
1356
+ // Prefer framework source (pennyfarthing-dist/) over node_modules
1357
+ const sourcePath = frameworkHooksDir
1358
+ ? join(frameworkHooksDir, hook.source)
1359
+ : join(nodeModulesPath, 'scripts/hooks', hook.source);
1337
1360
  const destPath = join(gitHooksDir, hook.dest);
1338
1361
  if (!pathExists(sourcePath)) {
1339
1362
  continue;
@@ -1344,12 +1367,75 @@ function checkGitHooks(projectRoot, nodeModulesPath) {
1344
1367
  status: 'warn',
1345
1368
  detail: 'Not installed',
1346
1369
  fix: () => {
1347
- const content = readFileSync(sourcePath, 'utf8');
1348
- writeFileSync(destPath, content, { mode: 0o755 });
1370
+ if (isFrameworkRepo) {
1371
+ // Framework repos: create symlink (relative from hooks dir to source)
1372
+ const absSource = join(projectRoot, 'pennyfarthing-dist/scripts/hooks', hook.source);
1373
+ const relTarget = relative(gitHooksDir, absSource);
1374
+ symlinkSync(relTarget, destPath);
1375
+ }
1376
+ else {
1377
+ // End-user repos: copy content
1378
+ const content = readFileSync(sourcePath, 'utf8');
1379
+ writeFileSync(destPath, content, { mode: 0o755 });
1380
+ }
1349
1381
  }
1350
1382
  });
1351
1383
  continue;
1352
1384
  }
1385
+ // Check if hook is a symlink (framework repos should use symlinks)
1386
+ const hookIsSymlink = isSymlink(destPath);
1387
+ if (isFrameworkRepo && !hookIsSymlink) {
1388
+ // Framework repo has a copied hook instead of a symlink — it will go stale
1389
+ results.push({
1390
+ name: `git-hook/${hook.dest}`,
1391
+ status: 'warn',
1392
+ detail: 'Copy instead of symlink (will go stale)',
1393
+ fix: () => {
1394
+ // Backup existing, replace with symlink
1395
+ const absSource = join(projectRoot, 'pennyfarthing-dist/scripts/hooks', hook.source);
1396
+ const relTarget = relative(gitHooksDir, absSource);
1397
+ renameSync(destPath, `${destPath}.backup`);
1398
+ symlinkSync(relTarget, destPath);
1399
+ }
1400
+ });
1401
+ continue;
1402
+ }
1403
+ if (hookIsSymlink) {
1404
+ // Symlinked hook — verify target exists
1405
+ try {
1406
+ const target = readlinkSync(destPath);
1407
+ const resolvedTarget = join(gitHooksDir, target);
1408
+ if (pathExists(resolvedTarget)) {
1409
+ results.push({
1410
+ name: `git-hook/${hook.dest}`,
1411
+ status: 'pass',
1412
+ detail: 'Symlinked'
1413
+ });
1414
+ }
1415
+ else {
1416
+ results.push({
1417
+ name: `git-hook/${hook.dest}`,
1418
+ status: 'warn',
1419
+ detail: `Broken symlink → ${target}`,
1420
+ fix: () => {
1421
+ unlinkSync(destPath);
1422
+ const absSource = join(projectRoot, 'pennyfarthing-dist/scripts/hooks', hook.source);
1423
+ const relTarget = relative(gitHooksDir, absSource);
1424
+ symlinkSync(relTarget, destPath);
1425
+ }
1426
+ });
1427
+ }
1428
+ }
1429
+ catch {
1430
+ results.push({
1431
+ name: `git-hook/${hook.dest}`,
1432
+ status: 'warn',
1433
+ detail: 'Cannot read symlink'
1434
+ });
1435
+ }
1436
+ continue;
1437
+ }
1438
+ // Copied hook — check content freshness
1353
1439
  const existingContent = readFileSync(destPath, 'utf8');
1354
1440
  // Only check hooks that are ours (contain the marker)
1355
1441
  if (!existingContent.includes(hook.marker)) {
@@ -1584,11 +1670,11 @@ export function checkLegacyFiles(projectRoot) {
1584
1670
  writeFileSync(properThemeConfig, YAML.stringify(config), 'utf8');
1585
1671
  }
1586
1672
  }
1673
+ unlinkSync(legacyPersonaConfig);
1587
1674
  }
1588
1675
  catch {
1589
- // If we can't read/parse legacy, just remove it
1676
+ logger.warning(`Cannot parse ${legacyPersonaConfig} fix YAML syntax and re-run doctor --fix`);
1590
1677
  }
1591
- unlinkSync(legacyPersonaConfig);
1592
1678
  }
1593
1679
  });
1594
1680
  }