claude-mpm 3.4.10__py3-none-any.whl → 5.4.55__py3-none-any.whl

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 (950) hide show
  1. claude_mpm/BUILD_NUMBER +1 -0
  2. claude_mpm/VERSION +1 -0
  3. claude_mpm/__init__.py +50 -12
  4. claude_mpm/__main__.py +7 -2
  5. claude_mpm/agents/BASE_AGENT.md +164 -0
  6. claude_mpm/agents/BASE_ENGINEER.md +658 -0
  7. claude_mpm/agents/CLAUDE_MPM_OUTPUT_STYLE.md +290 -0
  8. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +2002 -0
  9. claude_mpm/agents/MEMORY.md +72 -0
  10. claude_mpm/agents/PM_INSTRUCTIONS.md +1402 -0
  11. claude_mpm/agents/WORKFLOW.md +111 -0
  12. claude_mpm/agents/__init__.py +92 -80
  13. claude_mpm/agents/agent-template.yaml +83 -0
  14. claude_mpm/agents/agent_loader.py +560 -745
  15. claude_mpm/agents/agent_loader_integration.py +53 -55
  16. claude_mpm/agents/agents_metadata.py +186 -27
  17. claude_mpm/agents/async_agent_loader.py +436 -0
  18. claude_mpm/agents/base_agent.json +8 -4
  19. claude_mpm/agents/frontmatter_validator.py +754 -0
  20. claude_mpm/agents/system_agent_config.py +222 -155
  21. claude_mpm/agents/templates/README.md +465 -0
  22. claude_mpm/agents/templates/__init__.py +17 -13
  23. claude_mpm/agents/templates/circuit-breakers.md +1391 -0
  24. claude_mpm/agents/templates/context-management-examples.md +544 -0
  25. claude_mpm/agents/templates/git-file-tracking.md +584 -0
  26. claude_mpm/agents/templates/pm-examples.md +474 -0
  27. claude_mpm/agents/templates/pm-red-flags.md +310 -0
  28. claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
  29. claude_mpm/agents/templates/research-gate-examples.md +669 -0
  30. claude_mpm/agents/templates/response-format.md +583 -0
  31. claude_mpm/agents/templates/structured-questions-examples.md +615 -0
  32. claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
  33. claude_mpm/agents/templates/ticketing-examples.md +277 -0
  34. claude_mpm/agents/templates/validation-templates.md +312 -0
  35. claude_mpm/cli/__init__.py +90 -128
  36. claude_mpm/cli/__main__.py +33 -0
  37. claude_mpm/cli/chrome_devtools_installer.py +175 -0
  38. claude_mpm/cli/commands/__init__.py +36 -12
  39. claude_mpm/cli/commands/agent_manager.py +1403 -0
  40. claude_mpm/cli/commands/agent_source.py +774 -0
  41. claude_mpm/cli/commands/agent_state_manager.py +335 -0
  42. claude_mpm/cli/commands/agents.py +2503 -168
  43. claude_mpm/cli/commands/agents_cleanup.py +210 -0
  44. claude_mpm/cli/commands/agents_discover.py +338 -0
  45. claude_mpm/cli/commands/aggregate.py +540 -0
  46. claude_mpm/cli/commands/analyze.py +553 -0
  47. claude_mpm/cli/commands/analyze_code.py +528 -0
  48. claude_mpm/cli/commands/auto_configure.py +1053 -0
  49. claude_mpm/cli/commands/cleanup.py +588 -0
  50. claude_mpm/cli/commands/cleanup_orphaned_agents.py +150 -0
  51. claude_mpm/cli/commands/config.py +586 -0
  52. claude_mpm/cli/commands/configure.py +2654 -0
  53. claude_mpm/cli/commands/configure_agent_display.py +282 -0
  54. claude_mpm/cli/commands/configure_behavior_manager.py +204 -0
  55. claude_mpm/cli/commands/configure_hook_manager.py +225 -0
  56. claude_mpm/cli/commands/configure_models.py +18 -0
  57. claude_mpm/cli/commands/configure_navigation.py +184 -0
  58. claude_mpm/cli/commands/configure_paths.py +104 -0
  59. claude_mpm/cli/commands/configure_persistence.py +254 -0
  60. claude_mpm/cli/commands/configure_startup_manager.py +646 -0
  61. claude_mpm/cli/commands/configure_template_editor.py +497 -0
  62. claude_mpm/cli/commands/configure_validators.py +73 -0
  63. claude_mpm/cli/commands/dashboard.py +286 -0
  64. claude_mpm/cli/commands/debug.py +1386 -0
  65. claude_mpm/cli/commands/doctor.py +243 -0
  66. claude_mpm/cli/commands/hook_errors.py +277 -0
  67. claude_mpm/cli/commands/info.py +195 -74
  68. claude_mpm/cli/commands/local_deploy.py +534 -0
  69. claude_mpm/cli/commands/mcp.py +205 -0
  70. claude_mpm/cli/commands/mcp_command_router.py +161 -0
  71. claude_mpm/cli/commands/mcp_config.py +154 -0
  72. claude_mpm/cli/commands/mcp_config_commands.py +20 -0
  73. claude_mpm/cli/commands/mcp_external_commands.py +249 -0
  74. claude_mpm/cli/commands/mcp_install_commands.py +346 -0
  75. claude_mpm/cli/commands/mcp_pipx_config.py +208 -0
  76. claude_mpm/cli/commands/mcp_server_commands.py +155 -0
  77. claude_mpm/cli/commands/mcp_setup_external.py +868 -0
  78. claude_mpm/cli/commands/mcp_tool_commands.py +34 -0
  79. claude_mpm/cli/commands/memory.py +585 -846
  80. claude_mpm/cli/commands/monitor.py +228 -310
  81. claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
  82. claude_mpm/cli/commands/mpm_init/core.py +759 -0
  83. claude_mpm/cli/commands/mpm_init/display.py +341 -0
  84. claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
  85. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  86. claude_mpm/cli/commands/mpm_init/modes.py +397 -0
  87. claude_mpm/cli/commands/mpm_init/prompts.py +722 -0
  88. claude_mpm/cli/commands/mpm_init_cli.py +396 -0
  89. claude_mpm/cli/commands/mpm_init_handler.py +195 -0
  90. claude_mpm/cli/commands/postmortem.py +401 -0
  91. claude_mpm/cli/commands/profile.py +276 -0
  92. claude_mpm/cli/commands/run.py +910 -488
  93. claude_mpm/cli/commands/search.py +458 -0
  94. claude_mpm/cli/commands/skill_source.py +694 -0
  95. claude_mpm/cli/commands/skills.py +1246 -0
  96. claude_mpm/cli/commands/summarize.py +413 -0
  97. claude_mpm/cli/commands/tickets.py +536 -53
  98. claude_mpm/cli/commands/uninstall.py +176 -0
  99. claude_mpm/cli/commands/upgrade.py +152 -0
  100. claude_mpm/cli/commands/verify.py +119 -0
  101. claude_mpm/cli/executor.py +297 -0
  102. claude_mpm/cli/helpers.py +105 -0
  103. claude_mpm/cli/interactive/__init__.py +21 -0
  104. claude_mpm/cli/interactive/agent_wizard.py +1947 -0
  105. claude_mpm/cli/interactive/skills_wizard.py +491 -0
  106. claude_mpm/cli/parser.py +87 -563
  107. claude_mpm/cli/parsers/__init__.py +35 -0
  108. claude_mpm/cli/parsers/agent_manager_parser.py +393 -0
  109. claude_mpm/cli/parsers/agent_source_parser.py +171 -0
  110. claude_mpm/cli/parsers/agents_parser.py +575 -0
  111. claude_mpm/cli/parsers/analyze_code_parser.py +170 -0
  112. claude_mpm/cli/parsers/analyze_parser.py +135 -0
  113. claude_mpm/cli/parsers/auto_configure_parser.py +120 -0
  114. claude_mpm/cli/parsers/base_parser.py +644 -0
  115. claude_mpm/cli/parsers/config_parser.py +208 -0
  116. claude_mpm/cli/parsers/configure_parser.py +138 -0
  117. claude_mpm/cli/parsers/dashboard_parser.py +113 -0
  118. claude_mpm/cli/parsers/debug_parser.py +319 -0
  119. claude_mpm/cli/parsers/local_deploy_parser.py +227 -0
  120. claude_mpm/cli/parsers/mcp_parser.py +195 -0
  121. claude_mpm/cli/parsers/memory_parser.py +138 -0
  122. claude_mpm/cli/parsers/monitor_parser.py +142 -0
  123. claude_mpm/cli/parsers/mpm_init_parser.py +311 -0
  124. claude_mpm/cli/parsers/profile_parser.py +147 -0
  125. claude_mpm/cli/parsers/run_parser.py +157 -0
  126. claude_mpm/cli/parsers/search_parser.py +245 -0
  127. claude_mpm/cli/parsers/skill_source_parser.py +169 -0
  128. claude_mpm/cli/parsers/skills_parser.py +277 -0
  129. claude_mpm/cli/parsers/source_parser.py +138 -0
  130. claude_mpm/cli/parsers/tickets_parser.py +203 -0
  131. claude_mpm/cli/shared/__init__.py +40 -0
  132. claude_mpm/cli/shared/argument_patterns.py +205 -0
  133. claude_mpm/cli/shared/base_command.py +242 -0
  134. claude_mpm/cli/shared/error_handling.py +242 -0
  135. claude_mpm/cli/shared/output_formatters.py +241 -0
  136. claude_mpm/cli/startup.py +1743 -0
  137. claude_mpm/cli/startup_display.py +480 -0
  138. claude_mpm/cli/startup_logging.py +839 -0
  139. claude_mpm/cli/utils.py +136 -47
  140. claude_mpm/cli_module/__init__.py +6 -6
  141. claude_mpm/cli_module/args.py +188 -140
  142. claude_mpm/cli_module/commands.py +79 -70
  143. claude_mpm/cli_module/migration_example.py +42 -64
  144. claude_mpm/commands/__init__.py +14 -0
  145. claude_mpm/commands/mpm-config.md +28 -0
  146. claude_mpm/commands/mpm-doctor.md +20 -0
  147. claude_mpm/commands/mpm-help.md +20 -0
  148. claude_mpm/commands/mpm-init.md +120 -0
  149. claude_mpm/commands/mpm-monitor.md +31 -0
  150. claude_mpm/commands/mpm-organize.md +120 -0
  151. claude_mpm/commands/mpm-postmortem.md +21 -0
  152. claude_mpm/commands/mpm-session-resume.md +30 -0
  153. claude_mpm/commands/mpm-status.md +20 -0
  154. claude_mpm/commands/mpm-ticket-view.md +109 -0
  155. claude_mpm/commands/mpm-version.md +20 -0
  156. claude_mpm/commands/mpm.md +31 -0
  157. claude_mpm/config/__init__.py +42 -2
  158. claude_mpm/config/agent_config.py +402 -0
  159. claude_mpm/config/agent_presets.py +488 -0
  160. claude_mpm/config/agent_sources.py +352 -0
  161. claude_mpm/config/experimental_features.py +217 -0
  162. claude_mpm/config/model_config.py +428 -0
  163. claude_mpm/config/paths.py +258 -0
  164. claude_mpm/config/skill_presets.py +392 -0
  165. claude_mpm/config/skill_sources.py +590 -0
  166. claude_mpm/config/socketio_config.py +125 -83
  167. claude_mpm/constants.py +132 -22
  168. claude_mpm/core/__init__.py +62 -36
  169. claude_mpm/core/agent_name_normalizer.py +71 -73
  170. claude_mpm/core/agent_registry.py +385 -492
  171. claude_mpm/core/agent_session_manager.py +81 -70
  172. claude_mpm/core/api_validator.py +330 -0
  173. claude_mpm/core/base_service.py +159 -122
  174. claude_mpm/core/cache.py +560 -0
  175. claude_mpm/core/claude_runner.py +696 -916
  176. claude_mpm/core/config.py +613 -122
  177. claude_mpm/core/config_aliases.py +74 -73
  178. claude_mpm/core/config_constants.py +314 -0
  179. claude_mpm/core/constants.py +361 -0
  180. claude_mpm/core/container.py +646 -104
  181. claude_mpm/core/enums.py +452 -0
  182. claude_mpm/core/error_handler.py +623 -0
  183. claude_mpm/core/exceptions.py +536 -0
  184. claude_mpm/core/factories.py +105 -109
  185. claude_mpm/core/file_utils.py +764 -0
  186. claude_mpm/core/framework/__init__.py +25 -0
  187. claude_mpm/core/framework/formatters/__init__.py +11 -0
  188. claude_mpm/core/framework/formatters/capability_generator.py +367 -0
  189. claude_mpm/core/framework/formatters/content_formatter.py +278 -0
  190. claude_mpm/core/framework/formatters/context_generator.py +185 -0
  191. claude_mpm/core/framework/loaders/__init__.py +13 -0
  192. claude_mpm/core/framework/loaders/agent_loader.py +213 -0
  193. claude_mpm/core/framework/loaders/file_loader.py +176 -0
  194. claude_mpm/core/framework/loaders/instruction_loader.py +222 -0
  195. claude_mpm/core/framework/loaders/packaged_loader.py +232 -0
  196. claude_mpm/core/framework/processors/__init__.py +11 -0
  197. claude_mpm/core/framework/processors/memory_processor.py +230 -0
  198. claude_mpm/core/framework/processors/metadata_processor.py +146 -0
  199. claude_mpm/core/framework/processors/template_processor.py +244 -0
  200. claude_mpm/core/framework_loader.py +485 -414
  201. claude_mpm/core/hook_error_memory.py +381 -0
  202. claude_mpm/core/hook_manager.py +246 -86
  203. claude_mpm/core/hook_performance_config.py +147 -0
  204. claude_mpm/core/injectable_service.py +72 -63
  205. claude_mpm/core/instruction_reinforcement_hook.py +267 -0
  206. claude_mpm/core/interactive_session.py +670 -0
  207. claude_mpm/core/interfaces.py +570 -164
  208. claude_mpm/core/lazy.py +467 -0
  209. claude_mpm/core/log_manager.py +707 -0
  210. claude_mpm/core/logger.py +295 -134
  211. claude_mpm/core/logging_config.py +474 -0
  212. claude_mpm/core/logging_utils.py +520 -0
  213. claude_mpm/core/minimal_framework_loader.py +24 -22
  214. claude_mpm/core/mixins.py +30 -29
  215. claude_mpm/core/oneshot_session.py +594 -0
  216. claude_mpm/core/optimized_agent_loader.py +479 -0
  217. claude_mpm/core/optimized_startup.py +554 -0
  218. claude_mpm/core/output_style_manager.py +483 -0
  219. claude_mpm/core/pm_hook_interceptor.py +197 -82
  220. claude_mpm/core/protocols/__init__.py +23 -0
  221. claude_mpm/core/protocols/runner_protocol.py +103 -0
  222. claude_mpm/core/protocols/session_protocol.py +131 -0
  223. claude_mpm/core/service_registry.py +153 -116
  224. claude_mpm/core/session_manager.py +179 -64
  225. claude_mpm/core/shared/__init__.py +17 -0
  226. claude_mpm/core/shared/config_loader.py +326 -0
  227. claude_mpm/core/shared/path_resolver.py +281 -0
  228. claude_mpm/core/shared/singleton_manager.py +221 -0
  229. claude_mpm/core/socketio_pool.py +400 -137
  230. claude_mpm/core/system_context.py +38 -0
  231. claude_mpm/core/tool_access_control.py +64 -57
  232. claude_mpm/core/types.py +307 -0
  233. claude_mpm/core/typing_utils.py +553 -0
  234. claude_mpm/core/unified_agent_registry.py +969 -0
  235. claude_mpm/core/unified_config.py +570 -0
  236. claude_mpm/core/unified_paths.py +941 -0
  237. claude_mpm/dashboard/__init__.py +12 -0
  238. claude_mpm/dashboard/api/simple_directory.py +261 -0
  239. claude_mpm/dashboard/static/svelte-build/_app/env.js +1 -0
  240. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.DWzvg0-y.css +1 -0
  241. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.ThTw9_ym.css +1 -0
  242. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/4TdZjIqw.js +1 -0
  243. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/5shd3_w0.js +24 -0
  244. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B0uc0UOD.js +36 -0
  245. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B7RN905-.js +1 -0
  246. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B7xVLGWV.js +2 -0
  247. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BIF9m_hv.js +61 -0
  248. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BKjSRqUr.js +1 -0
  249. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BPYeabCQ.js +1 -0
  250. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BQaXIfA_.js +331 -0
  251. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BSNlmTZj.js +1 -0
  252. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Be7GpZd6.js +7 -0
  253. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Bh0LDWpI.js +145 -0
  254. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BofRWZRR.js +10 -0
  255. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BovzEFCE.js +30 -0
  256. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C30mlcqg.js +165 -0
  257. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C4B-KCzX.js +1 -0
  258. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C4JcI4KD.js +122 -0
  259. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CBBdVcY8.js +1 -0
  260. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CDuw-vjf.js +1 -0
  261. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C_Usid8X.js +15 -0
  262. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cfqx1Qun.js +10 -0
  263. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CiIAseT4.js +128 -0
  264. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CmKTTxBW.js +1 -0
  265. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CnA0NrzZ.js +1 -0
  266. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cs_tUR18.js +24 -0
  267. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cu_Erd72.js +261 -0
  268. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CyWMqx4W.js +43 -0
  269. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CzZX-COe.js +220 -0
  270. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CzeYkLYB.js +65 -0
  271. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D3k0OPJN.js +4 -0
  272. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D9lljYKQ.js +1 -0
  273. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DGkLK5U1.js +267 -0
  274. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DI7hHRFL.js +1 -0
  275. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DLVjFsZ3.js +139 -0
  276. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DUrLdbGD.js +89 -0
  277. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DVp1hx9R.js +1 -0
  278. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DY1XQ8fi.js +2 -0
  279. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DZX00Y4g.js +1 -0
  280. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Da0KfYnO.js +1 -0
  281. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DaimHw_p.js +68 -0
  282. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Dfy6j1xT.js +323 -0
  283. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Dhb8PKl3.js +1 -0
  284. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Dle-35c7.js +64 -0
  285. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DmxopI1J.js +1 -0
  286. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DwBR2MJi.js +60 -0
  287. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/GYwsonyD.js +1 -0
  288. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Gi6I4Gst.js +1 -0
  289. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/NqQ1dWOy.js +1 -0
  290. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/RJiighC3.js +1 -0
  291. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Vzk33B_K.js +2 -0
  292. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/ZGh7QtNv.js +7 -0
  293. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/bT1r9zLR.js +1 -0
  294. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/bTOqqlTd.js +1 -0
  295. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/eNVUfhuA.js +1 -0
  296. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/iEWssX7S.js +162 -0
  297. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/sQeU3Y1z.js +1 -0
  298. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/uuIeMWc-.js +1 -0
  299. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.D6-I5TpK.js +2 -0
  300. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.NWzMBYRp.js +1 -0
  301. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/0.m1gL8KXf.js +1 -0
  302. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.CgNOuw-d.js +1 -0
  303. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.C0GcWctS.js +1 -0
  304. claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -0
  305. claude_mpm/dashboard/static/svelte-build/favicon.svg +7 -0
  306. claude_mpm/dashboard/static/svelte-build/index.html +36 -0
  307. claude_mpm/dashboard-svelte/node_modules/katex/src/fonts/generate_fonts.py +58 -0
  308. claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_tfms.py +114 -0
  309. claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_ttfs.py +122 -0
  310. claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/format_json.py +28 -0
  311. claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/parse_tfm.py +211 -0
  312. claude_mpm/experimental/__init__.py +10 -0
  313. claude_mpm/experimental/cli_enhancements.py +104 -89
  314. claude_mpm/generators/__init__.py +1 -1
  315. claude_mpm/generators/agent_profile_generator.py +76 -66
  316. claude_mpm/hooks/__init__.py +37 -1
  317. claude_mpm/hooks/base_hook.py +37 -32
  318. claude_mpm/hooks/claude_hooks/__init__.py +1 -1
  319. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  320. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  321. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  322. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  323. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  324. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  325. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  326. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  327. claude_mpm/hooks/claude_hooks/connection_pool.py +250 -0
  328. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  329. claude_mpm/hooks/claude_hooks/event_handlers.py +888 -0
  330. claude_mpm/hooks/claude_hooks/hook_handler.py +652 -875
  331. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +10 -7
  332. claude_mpm/hooks/claude_hooks/installer.py +806 -0
  333. claude_mpm/hooks/claude_hooks/memory_integration.py +249 -0
  334. claude_mpm/hooks/claude_hooks/response_tracking.py +412 -0
  335. claude_mpm/hooks/claude_hooks/services/__init__.py +15 -0
  336. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  337. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  338. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  339. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  340. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  341. claude_mpm/hooks/claude_hooks/services/connection_manager.py +229 -0
  342. claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +254 -0
  343. claude_mpm/hooks/claude_hooks/services/duplicate_detector.py +106 -0
  344. claude_mpm/hooks/claude_hooks/services/state_manager.py +284 -0
  345. claude_mpm/hooks/claude_hooks/services/subagent_processor.py +374 -0
  346. claude_mpm/hooks/claude_hooks/tool_analysis.py +224 -0
  347. claude_mpm/hooks/failure_learning/__init__.py +54 -0
  348. claude_mpm/hooks/failure_learning/failure_detection_hook.py +230 -0
  349. claude_mpm/hooks/failure_learning/fix_detection_hook.py +212 -0
  350. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +281 -0
  351. claude_mpm/hooks/instruction_reinforcement.py +301 -0
  352. claude_mpm/hooks/kuzu_enrichment_hook.py +263 -0
  353. claude_mpm/hooks/kuzu_memory_hook.py +386 -0
  354. claude_mpm/hooks/kuzu_response_hook.py +179 -0
  355. claude_mpm/hooks/memory_integration_hook.py +201 -107
  356. claude_mpm/hooks/session_resume_hook.py +121 -0
  357. claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
  358. claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
  359. claude_mpm/hooks/tool_call_interceptor.py +92 -76
  360. claude_mpm/hooks/validation_hooks.py +62 -54
  361. claude_mpm/init.py +518 -83
  362. claude_mpm/models/__init__.py +9 -9
  363. claude_mpm/models/agent_definition.py +40 -23
  364. claude_mpm/models/agent_session.py +538 -0
  365. claude_mpm/models/git_repository.py +198 -0
  366. claude_mpm/models/resume_log.py +340 -0
  367. claude_mpm/schemas/__init__.py +12 -0
  368. claude_mpm/scripts/__init__.py +15 -0
  369. claude_mpm/scripts/claude-hook-handler.sh +227 -0
  370. claude_mpm/scripts/launch_monitor.py +165 -0
  371. claude_mpm/scripts/mpm_doctor.py +322 -0
  372. claude_mpm/scripts/socketio_daemon.py +189 -200
  373. claude_mpm/scripts/start_activity_logging.py +91 -0
  374. claude_mpm/services/__init__.py +208 -39
  375. claude_mpm/services/agent_capabilities_service.py +266 -0
  376. claude_mpm/services/agents/__init__.py +89 -0
  377. claude_mpm/services/agents/agent_builder.py +514 -0
  378. claude_mpm/services/agents/agent_preset_service.py +238 -0
  379. claude_mpm/services/agents/agent_recommendation_service.py +278 -0
  380. claude_mpm/services/agents/agent_review_service.py +280 -0
  381. claude_mpm/services/agents/agent_selection_service.py +484 -0
  382. claude_mpm/services/agents/auto_config_manager.py +796 -0
  383. claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
  384. claude_mpm/services/agents/cache_git_manager.py +621 -0
  385. claude_mpm/services/agents/deployment/__init__.py +21 -0
  386. claude_mpm/services/agents/deployment/agent_config_provider.py +410 -0
  387. claude_mpm/services/agents/deployment/agent_configuration_manager.py +358 -0
  388. claude_mpm/services/agents/deployment/agent_definition_factory.py +80 -0
  389. claude_mpm/services/agents/deployment/agent_deployment.py +1037 -0
  390. claude_mpm/services/agents/deployment/agent_discovery_service.py +546 -0
  391. claude_mpm/services/agents/deployment/agent_environment_manager.py +288 -0
  392. claude_mpm/services/agents/deployment/agent_filesystem_manager.py +383 -0
  393. claude_mpm/services/agents/deployment/agent_format_converter.py +505 -0
  394. claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +160 -0
  395. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +957 -0
  396. claude_mpm/services/agents/deployment/agent_metrics_collector.py +273 -0
  397. claude_mpm/services/agents/deployment/agent_operation_service.py +573 -0
  398. claude_mpm/services/agents/deployment/agent_record_service.py +418 -0
  399. claude_mpm/services/agents/deployment/agent_restore_handler.py +84 -0
  400. claude_mpm/services/agents/deployment/agent_state_service.py +381 -0
  401. claude_mpm/services/agents/deployment/agent_template_builder.py +1369 -0
  402. claude_mpm/services/agents/deployment/agent_validator.py +376 -0
  403. claude_mpm/services/agents/deployment/agent_version_manager.py +322 -0
  404. claude_mpm/services/{agent_versioning.py → agents/deployment/agent_versioning.py} +10 -13
  405. claude_mpm/services/agents/deployment/agents_directory_resolver.py +149 -0
  406. claude_mpm/services/agents/deployment/async_agent_deployment.py +768 -0
  407. claude_mpm/services/agents/deployment/base_agent_locator.py +132 -0
  408. claude_mpm/services/agents/deployment/config/__init__.py +13 -0
  409. claude_mpm/services/agents/deployment/config/deployment_config.py +181 -0
  410. claude_mpm/services/agents/deployment/config/deployment_config_manager.py +200 -0
  411. claude_mpm/services/agents/deployment/deployment_config_loader.py +178 -0
  412. claude_mpm/services/agents/deployment/deployment_results_manager.py +185 -0
  413. claude_mpm/services/agents/deployment/deployment_type_detector.py +120 -0
  414. claude_mpm/services/agents/deployment/deployment_wrapper.py +129 -0
  415. claude_mpm/services/agents/deployment/facade/__init__.py +18 -0
  416. claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +159 -0
  417. claude_mpm/services/agents/deployment/facade/deployment_executor.py +70 -0
  418. claude_mpm/services/agents/deployment/facade/deployment_facade.py +269 -0
  419. claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +178 -0
  420. claude_mpm/services/agents/deployment/interface_adapter.py +226 -0
  421. claude_mpm/services/agents/deployment/lifecycle_health_checker.py +85 -0
  422. claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +100 -0
  423. claude_mpm/services/agents/deployment/local_template_deployment.py +362 -0
  424. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +1478 -0
  425. claude_mpm/services/agents/deployment/pipeline/__init__.py +32 -0
  426. claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +158 -0
  427. claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +162 -0
  428. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +169 -0
  429. claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +19 -0
  430. claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +240 -0
  431. claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +110 -0
  432. claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +80 -0
  433. claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +92 -0
  434. claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +101 -0
  435. claude_mpm/services/agents/deployment/processors/__init__.py +15 -0
  436. claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +102 -0
  437. claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +235 -0
  438. claude_mpm/services/agents/deployment/processors/agent_processor.py +269 -0
  439. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +311 -0
  440. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +862 -0
  441. claude_mpm/services/agents/deployment/results/__init__.py +13 -0
  442. claude_mpm/services/agents/deployment/results/deployment_metrics.py +200 -0
  443. claude_mpm/services/agents/deployment/results/deployment_result_builder.py +249 -0
  444. claude_mpm/services/agents/deployment/single_agent_deployer.py +315 -0
  445. claude_mpm/services/agents/deployment/strategies/__init__.py +25 -0
  446. claude_mpm/services/agents/deployment/strategies/base_strategy.py +113 -0
  447. claude_mpm/services/agents/deployment/strategies/project_strategy.py +148 -0
  448. claude_mpm/services/agents/deployment/strategies/strategy_selector.py +117 -0
  449. claude_mpm/services/agents/deployment/strategies/system_strategy.py +131 -0
  450. claude_mpm/services/agents/deployment/strategies/user_strategy.py +130 -0
  451. claude_mpm/services/agents/deployment/system_instructions_deployer.py +228 -0
  452. claude_mpm/services/agents/deployment/validation/__init__.py +21 -0
  453. claude_mpm/services/agents/deployment/validation/agent_validator.py +323 -0
  454. claude_mpm/services/agents/deployment/validation/deployment_validator.py +238 -0
  455. claude_mpm/services/agents/deployment/validation/template_validator.py +319 -0
  456. claude_mpm/services/agents/deployment/validation/validation_result.py +214 -0
  457. claude_mpm/services/agents/git_source_manager.py +682 -0
  458. claude_mpm/services/agents/loading/__init__.py +11 -0
  459. claude_mpm/services/{agent_profile_loader.py → agents/loading/agent_profile_loader.py} +306 -228
  460. claude_mpm/services/{base_agent_manager.py → agents/loading/base_agent_manager.py} +106 -91
  461. claude_mpm/services/agents/loading/framework_agent_loader.py +433 -0
  462. claude_mpm/services/agents/local_template_manager.py +784 -0
  463. claude_mpm/services/agents/management/__init__.py +9 -0
  464. claude_mpm/services/{agent_capabilities_generator.py → agents/management/agent_capabilities_generator.py} +92 -69
  465. claude_mpm/services/{agent_management_service.py → agents/management/agent_management_service.py} +219 -168
  466. claude_mpm/services/agents/memory/__init__.py +22 -0
  467. claude_mpm/services/agents/memory/agent_memory_manager.py +784 -0
  468. claude_mpm/services/{agent_persistence_service.py → agents/memory/agent_persistence_service.py} +20 -18
  469. claude_mpm/services/agents/memory/content_manager.py +470 -0
  470. claude_mpm/services/agents/memory/memory_categorization_service.py +167 -0
  471. claude_mpm/services/agents/memory/memory_file_service.py +129 -0
  472. claude_mpm/services/agents/memory/memory_format_service.py +201 -0
  473. claude_mpm/services/agents/memory/memory_limits_service.py +101 -0
  474. claude_mpm/services/agents/memory/template_generator.py +83 -0
  475. claude_mpm/services/agents/observers.py +547 -0
  476. claude_mpm/services/agents/recommender.py +617 -0
  477. claude_mpm/services/agents/registry/__init__.py +30 -0
  478. claude_mpm/services/agents/registry/deployed_agent_discovery.py +273 -0
  479. claude_mpm/services/{agent_modification_tracker.py → agents/registry/modification_tracker.py} +370 -295
  480. claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
  481. claude_mpm/services/agents/sources/__init__.py +13 -0
  482. claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
  483. claude_mpm/services/agents/sources/git_source_sync_service.py +1202 -0
  484. claude_mpm/services/agents/startup_sync.py +259 -0
  485. claude_mpm/services/agents/toolchain_detector.py +478 -0
  486. claude_mpm/services/analysis/__init__.py +35 -0
  487. claude_mpm/services/analysis/clone_detector.py +1030 -0
  488. claude_mpm/services/analysis/postmortem_reporter.py +474 -0
  489. claude_mpm/services/analysis/postmortem_service.py +765 -0
  490. claude_mpm/services/async_session_logger.py +665 -0
  491. claude_mpm/services/claude_session_logger.py +321 -0
  492. claude_mpm/services/cli/__init__.py +18 -0
  493. claude_mpm/services/cli/agent_cleanup_service.py +408 -0
  494. claude_mpm/services/cli/agent_dependency_service.py +395 -0
  495. claude_mpm/services/cli/agent_listing_service.py +463 -0
  496. claude_mpm/services/cli/agent_output_formatter.py +605 -0
  497. claude_mpm/services/cli/agent_validation_service.py +590 -0
  498. claude_mpm/services/cli/memory_crud_service.py +622 -0
  499. claude_mpm/services/cli/memory_output_formatter.py +604 -0
  500. claude_mpm/services/cli/resume_service.py +617 -0
  501. claude_mpm/services/cli/session_manager.py +604 -0
  502. claude_mpm/services/cli/session_pause_manager.py +504 -0
  503. claude_mpm/services/cli/session_resume_helper.py +372 -0
  504. claude_mpm/services/cli/startup_checker.py +362 -0
  505. claude_mpm/services/cli/unified_dashboard_manager.py +439 -0
  506. claude_mpm/services/command_deployment_service.py +446 -0
  507. claude_mpm/services/command_handler_service.py +221 -0
  508. claude_mpm/services/communication/__init__.py +22 -0
  509. claude_mpm/services/core/__init__.py +108 -0
  510. claude_mpm/services/core/base.py +269 -0
  511. claude_mpm/services/core/cache_manager.py +309 -0
  512. claude_mpm/services/core/interfaces/__init__.py +273 -0
  513. claude_mpm/services/core/interfaces/agent.py +514 -0
  514. claude_mpm/services/core/interfaces/communication.py +316 -0
  515. claude_mpm/services/core/interfaces/health.py +169 -0
  516. claude_mpm/services/core/interfaces/infrastructure.py +357 -0
  517. claude_mpm/services/core/interfaces/model.py +281 -0
  518. claude_mpm/services/core/interfaces/process.py +372 -0
  519. claude_mpm/services/core/interfaces/project.py +121 -0
  520. claude_mpm/services/core/interfaces/restart.py +307 -0
  521. claude_mpm/services/core/interfaces/service.py +405 -0
  522. claude_mpm/services/core/interfaces/stability.py +260 -0
  523. claude_mpm/services/core/interfaces.py +81 -0
  524. claude_mpm/services/core/memory_manager.py +682 -0
  525. claude_mpm/services/core/models/__init__.py +70 -0
  526. claude_mpm/services/core/models/agent_config.py +384 -0
  527. claude_mpm/services/core/models/health.py +162 -0
  528. claude_mpm/services/core/models/process.py +239 -0
  529. claude_mpm/services/core/models/restart.py +302 -0
  530. claude_mpm/services/core/models/stability.py +264 -0
  531. claude_mpm/services/core/models/toolchain.py +306 -0
  532. claude_mpm/services/core/path_resolver.py +517 -0
  533. claude_mpm/services/core/service_container.py +520 -0
  534. claude_mpm/services/core/service_interfaces.py +436 -0
  535. claude_mpm/services/diagnostics/__init__.py +18 -0
  536. claude_mpm/services/diagnostics/checks/__init__.py +38 -0
  537. claude_mpm/services/diagnostics/checks/agent_check.py +370 -0
  538. claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
  539. claude_mpm/services/diagnostics/checks/base_check.py +60 -0
  540. claude_mpm/services/diagnostics/checks/claude_code_check.py +270 -0
  541. claude_mpm/services/diagnostics/checks/common_issues_check.py +363 -0
  542. claude_mpm/services/diagnostics/checks/configuration_check.py +306 -0
  543. claude_mpm/services/diagnostics/checks/filesystem_check.py +233 -0
  544. claude_mpm/services/diagnostics/checks/installation_check.py +520 -0
  545. claude_mpm/services/diagnostics/checks/instructions_check.py +415 -0
  546. claude_mpm/services/diagnostics/checks/mcp_check.py +330 -0
  547. claude_mpm/services/diagnostics/checks/mcp_services_check.py +1058 -0
  548. claude_mpm/services/diagnostics/checks/monitor_check.py +281 -0
  549. claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
  550. claude_mpm/services/diagnostics/checks/startup_log_check.py +319 -0
  551. claude_mpm/services/diagnostics/diagnostic_runner.py +286 -0
  552. claude_mpm/services/diagnostics/doctor_reporter.py +578 -0
  553. claude_mpm/services/diagnostics/models.py +138 -0
  554. claude_mpm/services/event_aggregator.py +582 -0
  555. claude_mpm/services/event_bus/__init__.py +18 -0
  556. claude_mpm/services/event_bus/config.py +186 -0
  557. claude_mpm/services/event_bus/direct_relay.py +312 -0
  558. claude_mpm/services/event_bus/event_bus.py +396 -0
  559. claude_mpm/services/event_bus/relay.py +326 -0
  560. claude_mpm/services/events/__init__.py +44 -0
  561. claude_mpm/services/events/consumers/__init__.py +18 -0
  562. claude_mpm/services/events/consumers/dead_letter.py +306 -0
  563. claude_mpm/services/events/consumers/logging.py +184 -0
  564. claude_mpm/services/events/consumers/metrics.py +241 -0
  565. claude_mpm/services/events/consumers/socketio.py +377 -0
  566. claude_mpm/services/events/core.py +480 -0
  567. claude_mpm/services/events/interfaces.py +214 -0
  568. claude_mpm/services/events/producers/__init__.py +14 -0
  569. claude_mpm/services/events/producers/hook.py +269 -0
  570. claude_mpm/services/events/producers/system.py +329 -0
  571. claude_mpm/services/exceptions.py +433 -353
  572. claude_mpm/services/framework_claude_md_generator/__init__.py +81 -80
  573. claude_mpm/services/framework_claude_md_generator/content_assembler.py +74 -67
  574. claude_mpm/services/framework_claude_md_generator/content_validator.py +66 -62
  575. claude_mpm/services/framework_claude_md_generator/deployment_manager.py +82 -60
  576. claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +36 -37
  577. claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +41 -40
  578. claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +15 -15
  579. claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +5 -4
  580. claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +4 -3
  581. claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +4 -3
  582. claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +6 -5
  583. claude_mpm/services/framework_claude_md_generator/section_generators/header.py +8 -7
  584. claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +5 -4
  585. claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +6 -5
  586. claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +9 -8
  587. claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +26 -30
  588. claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +6 -5
  589. claude_mpm/services/framework_claude_md_generator/section_manager.py +28 -27
  590. claude_mpm/services/framework_claude_md_generator/version_manager.py +31 -30
  591. claude_mpm/services/git/__init__.py +21 -0
  592. claude_mpm/services/git/git_operations_service.py +579 -0
  593. claude_mpm/services/github/__init__.py +21 -0
  594. claude_mpm/services/github/github_cli_service.py +397 -0
  595. claude_mpm/services/hook_installer_service.py +506 -0
  596. claude_mpm/services/hook_service.py +159 -111
  597. claude_mpm/services/infrastructure/__init__.py +52 -0
  598. claude_mpm/services/infrastructure/context_preservation.py +569 -0
  599. claude_mpm/services/infrastructure/daemon_manager.py +279 -0
  600. claude_mpm/services/infrastructure/logging.py +209 -0
  601. claude_mpm/services/infrastructure/monitoring/__init__.py +39 -0
  602. claude_mpm/services/infrastructure/monitoring/aggregator.py +432 -0
  603. claude_mpm/services/infrastructure/monitoring/base.py +122 -0
  604. claude_mpm/services/infrastructure/monitoring/legacy.py +203 -0
  605. claude_mpm/services/infrastructure/monitoring/network.py +219 -0
  606. claude_mpm/services/infrastructure/monitoring/process.py +343 -0
  607. claude_mpm/services/infrastructure/monitoring/resources.py +244 -0
  608. claude_mpm/services/infrastructure/monitoring/service.py +368 -0
  609. claude_mpm/services/infrastructure/monitoring.py +71 -0
  610. claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
  611. claude_mpm/services/instructions/__init__.py +9 -0
  612. claude_mpm/services/instructions/instruction_cache_service.py +374 -0
  613. claude_mpm/services/local_ops/__init__.py +155 -0
  614. claude_mpm/services/local_ops/crash_detector.py +257 -0
  615. claude_mpm/services/local_ops/health_checks/__init__.py +26 -0
  616. claude_mpm/services/local_ops/health_checks/http_check.py +224 -0
  617. claude_mpm/services/local_ops/health_checks/process_check.py +236 -0
  618. claude_mpm/services/local_ops/health_checks/resource_check.py +255 -0
  619. claude_mpm/services/local_ops/health_manager.py +427 -0
  620. claude_mpm/services/local_ops/log_monitor.py +396 -0
  621. claude_mpm/services/local_ops/memory_leak_detector.py +294 -0
  622. claude_mpm/services/local_ops/process_manager.py +595 -0
  623. claude_mpm/services/local_ops/resource_monitor.py +331 -0
  624. claude_mpm/services/local_ops/restart_manager.py +401 -0
  625. claude_mpm/services/local_ops/restart_policy.py +387 -0
  626. claude_mpm/services/local_ops/state_manager.py +372 -0
  627. claude_mpm/services/local_ops/unified_manager.py +600 -0
  628. claude_mpm/services/mcp_config_manager.py +1542 -0
  629. claude_mpm/services/mcp_service_verifier.py +732 -0
  630. claude_mpm/services/memory/__init__.py +19 -0
  631. claude_mpm/services/{memory_builder.py → memory/builder.py} +465 -373
  632. claude_mpm/services/memory/cache/__init__.py +14 -0
  633. claude_mpm/services/{shared_prompt_cache.py → memory/cache/shared_prompt_cache.py} +237 -200
  634. claude_mpm/services/memory/cache/simple_cache.py +331 -0
  635. claude_mpm/services/memory/failure_tracker.py +578 -0
  636. claude_mpm/services/memory/indexed_memory.py +648 -0
  637. claude_mpm/services/{memory_optimizer.py → memory/optimizer.py} +272 -243
  638. claude_mpm/services/memory/router.py +951 -0
  639. claude_mpm/services/memory_hook_service.py +470 -0
  640. claude_mpm/services/model/__init__.py +147 -0
  641. claude_mpm/services/model/base_provider.py +365 -0
  642. claude_mpm/services/model/claude_provider.py +412 -0
  643. claude_mpm/services/model/model_router.py +452 -0
  644. claude_mpm/services/model/ollama_provider.py +415 -0
  645. claude_mpm/services/monitor/__init__.py +20 -0
  646. claude_mpm/services/monitor/daemon.py +698 -0
  647. claude_mpm/services/monitor/daemon_manager.py +1076 -0
  648. claude_mpm/services/monitor/event_emitter.py +350 -0
  649. claude_mpm/services/monitor/handlers/__init__.py +21 -0
  650. claude_mpm/services/monitor/handlers/code_analysis.py +332 -0
  651. claude_mpm/services/monitor/handlers/dashboard.py +299 -0
  652. claude_mpm/services/monitor/handlers/file.py +264 -0
  653. claude_mpm/services/monitor/handlers/hooks.py +512 -0
  654. claude_mpm/services/monitor/management/__init__.py +18 -0
  655. claude_mpm/services/monitor/management/health.py +124 -0
  656. claude_mpm/services/monitor/management/lifecycle.py +730 -0
  657. claude_mpm/services/monitor/server.py +1493 -0
  658. claude_mpm/services/monitor_build_service.py +349 -0
  659. claude_mpm/services/native_agent_converter.py +356 -0
  660. claude_mpm/services/orphan_detection.py +786 -0
  661. claude_mpm/services/pm_skills_deployer.py +707 -0
  662. claude_mpm/services/port_manager.py +597 -0
  663. claude_mpm/services/pr/__init__.py +14 -0
  664. claude_mpm/services/pr/pr_template_service.py +329 -0
  665. claude_mpm/services/profile_manager.py +337 -0
  666. claude_mpm/services/project/__init__.py +44 -0
  667. claude_mpm/services/{project_analyzer.py → project/analyzer.py} +541 -291
  668. claude_mpm/services/project/analyzer_v2.py +566 -0
  669. claude_mpm/services/project/architecture_analyzer.py +461 -0
  670. claude_mpm/services/project/archive_manager.py +1045 -0
  671. claude_mpm/services/project/dependency_analyzer.py +462 -0
  672. claude_mpm/services/project/detection_strategies.py +719 -0
  673. claude_mpm/services/project/documentation_manager.py +554 -0
  674. claude_mpm/services/project/enhanced_analyzer.py +572 -0
  675. claude_mpm/services/project/language_analyzer.py +265 -0
  676. claude_mpm/services/project/metrics_collector.py +407 -0
  677. claude_mpm/services/project/project_organizer.py +1009 -0
  678. claude_mpm/services/project/registry.py +636 -0
  679. claude_mpm/services/project/toolchain_analyzer.py +583 -0
  680. claude_mpm/services/project_port_allocator.py +596 -0
  681. claude_mpm/services/recovery_manager.py +293 -240
  682. claude_mpm/services/response_tracker.py +267 -0
  683. claude_mpm/services/runner_configuration_service.py +605 -0
  684. claude_mpm/services/self_upgrade_service.py +608 -0
  685. claude_mpm/services/session_management_service.py +314 -0
  686. claude_mpm/services/session_manager.py +380 -0
  687. claude_mpm/services/shared/__init__.py +21 -0
  688. claude_mpm/services/shared/async_service_base.py +216 -0
  689. claude_mpm/services/shared/config_service_base.py +301 -0
  690. claude_mpm/services/shared/lifecycle_service_base.py +308 -0
  691. claude_mpm/services/shared/manager_base.py +315 -0
  692. claude_mpm/services/shared/service_factory.py +309 -0
  693. claude_mpm/services/skills/__init__.py +21 -0
  694. claude_mpm/services/skills/git_skill_source_manager.py +1324 -0
  695. claude_mpm/services/skills/selective_skill_deployer.py +744 -0
  696. claude_mpm/services/skills/skill_discovery_service.py +568 -0
  697. claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
  698. claude_mpm/services/skills_config.py +547 -0
  699. claude_mpm/services/skills_deployer.py +1168 -0
  700. claude_mpm/services/socketio/__init__.py +25 -0
  701. claude_mpm/services/socketio/client_proxy.py +229 -0
  702. claude_mpm/services/socketio/dashboard_server.py +362 -0
  703. claude_mpm/services/socketio/event_normalizer.py +798 -0
  704. claude_mpm/services/socketio/handlers/__init__.py +30 -0
  705. claude_mpm/services/socketio/handlers/base.py +136 -0
  706. claude_mpm/services/socketio/handlers/code_analysis.py +682 -0
  707. claude_mpm/services/socketio/handlers/connection.py +643 -0
  708. claude_mpm/services/socketio/handlers/connection_handler.py +333 -0
  709. claude_mpm/services/socketio/handlers/file.py +263 -0
  710. claude_mpm/services/socketio/handlers/git.py +962 -0
  711. claude_mpm/services/socketio/handlers/hook.py +211 -0
  712. claude_mpm/services/socketio/handlers/memory.py +26 -0
  713. claude_mpm/services/socketio/handlers/project.py +24 -0
  714. claude_mpm/services/socketio/handlers/registry.py +214 -0
  715. claude_mpm/services/socketio/migration_utils.py +343 -0
  716. claude_mpm/services/socketio/monitor_client.py +364 -0
  717. claude_mpm/services/socketio/server/__init__.py +18 -0
  718. claude_mpm/services/socketio/server/broadcaster.py +569 -0
  719. claude_mpm/services/socketio/server/connection_manager.py +579 -0
  720. claude_mpm/services/socketio/server/core.py +1079 -0
  721. claude_mpm/services/socketio/server/eventbus_integration.py +245 -0
  722. claude_mpm/services/socketio/server/main.py +501 -0
  723. claude_mpm/services/socketio_client_manager.py +173 -143
  724. claude_mpm/services/socketio_server.py +38 -1657
  725. claude_mpm/services/subprocess_launcher_service.py +322 -0
  726. claude_mpm/services/system_instructions_service.py +270 -0
  727. claude_mpm/services/ticket_manager.py +25 -209
  728. claude_mpm/services/ticket_services/__init__.py +26 -0
  729. claude_mpm/services/ticket_services/crud_service.py +328 -0
  730. claude_mpm/services/ticket_services/formatter_service.py +290 -0
  731. claude_mpm/services/ticket_services/search_service.py +324 -0
  732. claude_mpm/services/ticket_services/validation_service.py +303 -0
  733. claude_mpm/services/ticket_services/workflow_service.py +244 -0
  734. claude_mpm/services/unified/__init__.py +65 -0
  735. claude_mpm/services/unified/analyzer_strategies/__init__.py +44 -0
  736. claude_mpm/services/unified/analyzer_strategies/code_analyzer.py +518 -0
  737. claude_mpm/services/unified/analyzer_strategies/dependency_analyzer.py +680 -0
  738. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +900 -0
  739. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +745 -0
  740. claude_mpm/services/unified/analyzer_strategies/structure_analyzer.py +733 -0
  741. claude_mpm/services/unified/config_strategies/__init__.py +175 -0
  742. claude_mpm/services/unified/config_strategies/config_schema.py +731 -0
  743. claude_mpm/services/unified/config_strategies/context_strategy.py +747 -0
  744. claude_mpm/services/unified/config_strategies/error_handling_strategy.py +1005 -0
  745. claude_mpm/services/unified/config_strategies/file_loader_strategy.py +881 -0
  746. claude_mpm/services/unified/config_strategies/unified_config_service.py +823 -0
  747. claude_mpm/services/unified/config_strategies/validation_strategy.py +1148 -0
  748. claude_mpm/services/unified/deployment_strategies/__init__.py +97 -0
  749. claude_mpm/services/unified/deployment_strategies/base.py +553 -0
  750. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +573 -0
  751. claude_mpm/services/unified/deployment_strategies/local.py +607 -0
  752. claude_mpm/services/unified/deployment_strategies/utils.py +667 -0
  753. claude_mpm/services/unified/deployment_strategies/vercel.py +471 -0
  754. claude_mpm/services/unified/interfaces.py +475 -0
  755. claude_mpm/services/unified/migration.py +509 -0
  756. claude_mpm/services/unified/strategies.py +534 -0
  757. claude_mpm/services/unified/unified_analyzer.py +542 -0
  758. claude_mpm/services/unified/unified_config.py +691 -0
  759. claude_mpm/services/unified/unified_deployment.py +466 -0
  760. claude_mpm/services/utility_service.py +280 -0
  761. claude_mpm/services/version_control/__init__.py +34 -37
  762. claude_mpm/services/version_control/branch_strategy.py +26 -17
  763. claude_mpm/services/version_control/conflict_resolution.py +52 -36
  764. claude_mpm/services/version_control/git_operations.py +183 -49
  765. claude_mpm/services/version_control/semantic_versioning.py +172 -61
  766. claude_mpm/services/version_control/version_parser.py +546 -0
  767. claude_mpm/services/version_service.py +379 -0
  768. claude_mpm/services/visualization/__init__.py +15 -0
  769. claude_mpm/services/visualization/mermaid_generator.py +937 -0
  770. claude_mpm/skills/__init__.py +42 -0
  771. claude_mpm/skills/agent_skills_injector.py +324 -0
  772. claude_mpm/skills/bundled/LICENSE_ATTRIBUTIONS.md +79 -0
  773. claude_mpm/skills/bundled/__init__.py +6 -0
  774. claude_mpm/skills/bundled/api-documentation.md +393 -0
  775. claude_mpm/skills/bundled/async-testing.md +571 -0
  776. claude_mpm/skills/bundled/code-review.md +143 -0
  777. claude_mpm/skills/bundled/database-migration.md +199 -0
  778. claude_mpm/skills/bundled/docker-containerization.md +194 -0
  779. claude_mpm/skills/bundled/express-local-dev.md +1429 -0
  780. claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
  781. claude_mpm/skills/bundled/git-workflow.md +414 -0
  782. claude_mpm/skills/bundled/imagemagick.md +204 -0
  783. claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
  784. claude_mpm/skills/bundled/json-data-handling.md +223 -0
  785. claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +157 -0
  786. claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +425 -0
  787. claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +303 -0
  788. claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +113 -0
  789. claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +72 -0
  790. claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
  791. claude_mpm/skills/bundled/pdf.md +141 -0
  792. claude_mpm/skills/bundled/performance-profiling.md +573 -0
  793. claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
  794. claude_mpm/skills/bundled/security-scanning.md +439 -0
  795. claude_mpm/skills/bundled/systematic-debugging.md +473 -0
  796. claude_mpm/skills/bundled/test-driven-development.md +378 -0
  797. claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +35 -0
  798. claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +44 -0
  799. claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +34 -0
  800. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +129 -0
  801. claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
  802. claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
  803. claude_mpm/skills/bundled/xlsx.md +157 -0
  804. claude_mpm/skills/registry.py +286 -0
  805. claude_mpm/skills/skill_manager.py +405 -0
  806. claude_mpm/skills/skills_registry.py +347 -0
  807. claude_mpm/skills/skills_service.py +739 -0
  808. claude_mpm/storage/__init__.py +9 -0
  809. claude_mpm/storage/state_storage.py +546 -0
  810. claude_mpm/templates/.pre-commit-config.yaml +112 -0
  811. claude_mpm/templates/questions/__init__.py +38 -0
  812. claude_mpm/templates/questions/base.py +193 -0
  813. claude_mpm/templates/questions/pr_strategy.py +311 -0
  814. claude_mpm/templates/questions/project_init.py +385 -0
  815. claude_mpm/templates/questions/ticket_mgmt.py +394 -0
  816. claude_mpm/ticket_wrapper.py +2 -2
  817. claude_mpm/tools/__init__.py +10 -0
  818. claude_mpm/tools/__main__.py +208 -0
  819. claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
  820. claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
  821. claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
  822. claude_mpm/tools/code_tree_analyzer/core.py +380 -0
  823. claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
  824. claude_mpm/tools/code_tree_analyzer/events.py +168 -0
  825. claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
  826. claude_mpm/tools/code_tree_analyzer/models.py +39 -0
  827. claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
  828. claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
  829. claude_mpm/tools/code_tree_builder.py +631 -0
  830. claude_mpm/tools/code_tree_events.py +420 -0
  831. claude_mpm/tools/socketio_debug.py +671 -0
  832. claude_mpm/utils/__init__.py +8 -8
  833. claude_mpm/utils/agent_dependency_loader.py +1090 -0
  834. claude_mpm/utils/agent_filters.py +261 -0
  835. claude_mpm/utils/common.py +544 -0
  836. claude_mpm/utils/config_manager.py +168 -126
  837. claude_mpm/utils/console.py +11 -0
  838. claude_mpm/utils/database_connector.py +298 -0
  839. claude_mpm/utils/dependency_cache.py +373 -0
  840. claude_mpm/utils/dependency_manager.py +60 -59
  841. claude_mpm/utils/dependency_strategies.py +381 -0
  842. claude_mpm/utils/display_helper.py +260 -0
  843. claude_mpm/utils/environment_context.py +313 -0
  844. claude_mpm/utils/error_handler.py +78 -66
  845. claude_mpm/utils/file_utils.py +305 -0
  846. claude_mpm/utils/framework_detection.py +12 -11
  847. claude_mpm/utils/git_analyzer.py +407 -0
  848. claude_mpm/utils/gitignore.py +244 -0
  849. claude_mpm/utils/import_migration_example.py +12 -60
  850. claude_mpm/utils/imports.py +48 -45
  851. claude_mpm/utils/log_cleanup.py +627 -0
  852. claude_mpm/utils/migration.py +372 -0
  853. claude_mpm/utils/path_operations.py +110 -104
  854. claude_mpm/utils/progress.py +387 -0
  855. claude_mpm/utils/robust_installer.py +823 -0
  856. claude_mpm/utils/session_logging.py +121 -0
  857. claude_mpm/utils/structured_questions.py +619 -0
  858. claude_mpm/utils/subprocess_utils.py +343 -0
  859. claude_mpm/validation/__init__.py +1 -1
  860. claude_mpm/validation/agent_validator.py +214 -108
  861. claude_mpm/validation/frontmatter_validator.py +252 -0
  862. claude_mpm-5.4.55.dist-info/METADATA +999 -0
  863. claude_mpm-5.4.55.dist-info/RECORD +868 -0
  864. {claude_mpm-3.4.10.dist-info → claude_mpm-5.4.55.dist-info}/entry_points.txt +1 -3
  865. claude_mpm-5.4.55.dist-info/licenses/LICENSE +94 -0
  866. claude_mpm-5.4.55.dist-info/licenses/LICENSE-FAQ.md +153 -0
  867. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -88
  868. claude_mpm/agents/INSTRUCTIONS.md +0 -352
  869. claude_mpm/agents/backups/INSTRUCTIONS.md +0 -352
  870. claude_mpm/agents/base_agent_loader.py +0 -529
  871. claude_mpm/agents/schema/agent_schema.json +0 -314
  872. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -36
  873. claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json +0 -46
  874. claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json +0 -45
  875. claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json +0 -49
  876. claude_mpm/agents/templates/backup/ops_agent_20250726_234551.json +0 -46
  877. claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json +0 -45
  878. claude_mpm/agents/templates/backup/research_agent_20250726_234551.json +0 -49
  879. claude_mpm/agents/templates/backup/security_agent_20250726_234551.json +0 -46
  880. claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json +0 -46
  881. claude_mpm/agents/templates/data_engineer.json +0 -110
  882. claude_mpm/agents/templates/documentation.json +0 -109
  883. claude_mpm/agents/templates/engineer.json +0 -113
  884. claude_mpm/agents/templates/ops.json +0 -109
  885. claude_mpm/agents/templates/pm.json +0 -25
  886. claude_mpm/agents/templates/qa.json +0 -111
  887. claude_mpm/agents/templates/research.json +0 -65
  888. claude_mpm/agents/templates/security.json +0 -113
  889. claude_mpm/agents/templates/test_integration.json +0 -112
  890. claude_mpm/agents/templates/version_control.json +0 -107
  891. claude_mpm/cli/commands/ui.py +0 -57
  892. claude_mpm/core/simple_runner.py +0 -1046
  893. claude_mpm/dashboard/open_dashboard.py +0 -34
  894. claude_mpm/deployment_paths.py +0 -261
  895. claude_mpm/hooks/builtin/__init__.py +0 -1
  896. claude_mpm/hooks/builtin/logging_hook_example.py +0 -165
  897. claude_mpm/hooks/builtin/memory_hooks_example.py +0 -67
  898. claude_mpm/hooks/builtin/mpm_command_hook.py +0 -125
  899. claude_mpm/hooks/builtin/post_delegation_hook_example.py +0 -124
  900. claude_mpm/hooks/builtin/pre_delegation_hook_example.py +0 -125
  901. claude_mpm/hooks/builtin/submit_hook_example.py +0 -100
  902. claude_mpm/hooks/builtin/ticket_extraction_hook_example.py +0 -237
  903. claude_mpm/hooks/builtin/todo_agent_prefix_hook.py +0 -240
  904. claude_mpm/hooks/builtin/workflow_start_hook.py +0 -181
  905. claude_mpm/orchestration/__init__.py +0 -6
  906. claude_mpm/orchestration/archive/direct_orchestrator.py +0 -195
  907. claude_mpm/orchestration/archive/factory.py +0 -215
  908. claude_mpm/orchestration/archive/hook_enabled_orchestrator.py +0 -188
  909. claude_mpm/orchestration/archive/hook_integration_example.py +0 -178
  910. claude_mpm/orchestration/archive/interactive_subprocess_orchestrator.py +0 -826
  911. claude_mpm/orchestration/archive/orchestrator.py +0 -501
  912. claude_mpm/orchestration/archive/pexpect_orchestrator.py +0 -252
  913. claude_mpm/orchestration/archive/pty_orchestrator.py +0 -270
  914. claude_mpm/orchestration/archive/simple_orchestrator.py +0 -82
  915. claude_mpm/orchestration/archive/subprocess_orchestrator.py +0 -801
  916. claude_mpm/orchestration/archive/system_prompt_orchestrator.py +0 -278
  917. claude_mpm/orchestration/archive/wrapper_orchestrator.py +0 -187
  918. claude_mpm/schemas/workflow_validator.py +0 -411
  919. claude_mpm/services/agent_deployment.py +0 -1534
  920. claude_mpm/services/agent_lifecycle_manager.py +0 -1169
  921. claude_mpm/services/agent_memory_manager.py +0 -1415
  922. claude_mpm/services/agent_registry.py +0 -676
  923. claude_mpm/services/deployed_agent_discovery.py +0 -226
  924. claude_mpm/services/framework_agent_loader.py +0 -337
  925. claude_mpm/services/framework_claude_md_generator.py +0 -621
  926. claude_mpm/services/health_monitor.py +0 -892
  927. claude_mpm/services/memory_router.py +0 -538
  928. claude_mpm/services/parent_directory_manager/__init__.py +0 -577
  929. claude_mpm/services/parent_directory_manager/backup_manager.py +0 -258
  930. claude_mpm/services/parent_directory_manager/config_manager.py +0 -210
  931. claude_mpm/services/parent_directory_manager/deduplication_manager.py +0 -279
  932. claude_mpm/services/parent_directory_manager/framework_protector.py +0 -143
  933. claude_mpm/services/parent_directory_manager/operations.py +0 -186
  934. claude_mpm/services/parent_directory_manager/state_manager.py +0 -624
  935. claude_mpm/services/parent_directory_manager/template_deployer.py +0 -579
  936. claude_mpm/services/parent_directory_manager/validation_manager.py +0 -378
  937. claude_mpm/services/parent_directory_manager/version_control_helper.py +0 -339
  938. claude_mpm/services/parent_directory_manager/version_manager.py +0 -222
  939. claude_mpm/services/standalone_socketio_server.py +0 -1300
  940. claude_mpm/services/ticket_manager_di.py +0 -318
  941. claude_mpm/services/ticketing_service_original.py +0 -508
  942. claude_mpm/ui/__init__.py +0 -1
  943. claude_mpm/ui/rich_terminal_ui.py +0 -295
  944. claude_mpm/ui/terminal_ui.py +0 -328
  945. claude_mpm/utils/paths.py +0 -289
  946. claude_mpm-3.4.10.dist-info/METADATA +0 -183
  947. claude_mpm-3.4.10.dist-info/RECORD +0 -201
  948. claude_mpm-3.4.10.dist-info/licenses/LICENSE +0 -21
  949. {claude_mpm-3.4.10.dist-info → claude_mpm-5.4.55.dist-info}/WHEEL +0 -0
  950. {claude_mpm-3.4.10.dist-info → claude_mpm-5.4.55.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1391 @@
1
+ # PM Circuit Breakers
2
+
3
+ **Purpose**: This file contains all circuit breaker definitions for PM delegation enforcement. Circuit breakers are automatic violation detection mechanisms that prevent PM from doing work instead of delegating.
4
+
5
+ **Version**: 1.0.0
6
+ **Last Updated**: 2025-10-20
7
+ **Parent Document**: [PM_INSTRUCTIONS.md](../PM_INSTRUCTIONS.md)
8
+
9
+ ---
10
+
11
+ ## Table of Contents
12
+
13
+ 1. [Circuit Breaker System Overview](#circuit-breaker-system-overview)
14
+ 2. [Quick Reference Table](#quick-reference-table)
15
+ 3. [Circuit Breaker #1: Implementation Detection](#circuit-breaker-1-implementation-detection)
16
+ 4. [Circuit Breaker #2: Investigation Detection](#circuit-breaker-2-investigation-detection)
17
+ 5. [Circuit Breaker #3: Unverified Assertion Detection](#circuit-breaker-3-unverified-assertion-detection)
18
+ 6. [Circuit Breaker #4: Implementation Before Delegation Detection](#circuit-breaker-4-implementation-before-delegation-detection)
19
+ 7. [Circuit Breaker #5: File Tracking Detection](#circuit-breaker-5-file-tracking-detection)
20
+ 8. [Circuit Breaker #6: Ticketing Tool Misuse Detection](#circuit-breaker-6-ticketing-tool-misuse-detection)
21
+ 9. [Circuit Breaker #7: Research Gate Violation Detection](#circuit-breaker-7-research-gate-violation-detection)
22
+ 10. [Violation Tracking Format](#violation-tracking-format)
23
+ 11. [Escalation Levels](#escalation-levels)
24
+
25
+ ---
26
+
27
+ ## Circuit Breaker System Overview
28
+
29
+ **What Are Circuit Breakers?**
30
+
31
+ Circuit breakers are automatic detection mechanisms that identify when PM is violating delegation principles. They act as "stop gates" that prevent PM from implementing, investigating, or asserting without proper delegation and verification.
32
+
33
+ **Core Principle:**
34
+
35
+ PM is a **coordinator**, not a worker. PM must:
36
+ - **DELEGATE** all implementation work
37
+ - **DELEGATE** all investigation work
38
+ - **VERIFY** all assertions with evidence
39
+ - **TRACK** all new files created during sessions
40
+
41
+ **Why Circuit Breakers?**
42
+
43
+ Without circuit breakers, PM tends to:
44
+ - Read files instead of delegating to Research
45
+ - Edit code instead of delegating to Engineer
46
+ - Make claims without verification evidence
47
+ - Skip file tracking in git
48
+
49
+ Circuit breakers enforce strict delegation discipline by detecting violations BEFORE they happen.
50
+
51
+ ---
52
+
53
+ ## Quick Reference Table
54
+
55
+ | Circuit Breaker | Detects | Trigger Conditions | Required Action |
56
+ |----------------|---------|-------------------|-----------------|
57
+ | **#1 Implementation** | PM doing implementation work | Edit, Write, MultiEdit, implementation Bash | Delegate to appropriate agent |
58
+ | **#2 Investigation** | PM doing investigation work | Reading >1 file, using Grep/Glob | Delegate to Research agent |
59
+ | **#3 Unverified Assertion** | PM making claims without evidence | Any assertion without agent verification | Delegate verification to appropriate agent |
60
+ | **#4 Implementation Before Delegation** | PM working without delegating first | Any implementation attempt without Task use | Use Task tool to delegate |
61
+ | **#5 File Tracking** | PM not tracking new files in git | Session ending with untracked files | Track files with proper context commits |
62
+ | **#6 Ticketing Tool Misuse** | PM using ticketing tools directly | PM calls mcp-ticketer tools or aitrackdown CLI | ALWAYS delegate to ticketing |
63
+ | **#7 Research Gate Violation** | PM skipping research for ambiguous tasks | Delegates to implementation without research validation | Delegate to Research agent FIRST |
64
+
65
+ ---
66
+
67
+ ## Circuit Breaker #1: Implementation Detection
68
+
69
+ **Purpose**: Prevent PM from implementing code changes, deployments, or any technical work.
70
+
71
+ ### Trigger Conditions
72
+
73
+ **IF PM attempts ANY of the following:**
74
+
75
+ #### Code Implementation
76
+ - `Edit` tool for code changes
77
+ - `Write` tool for creating files
78
+ - `MultiEdit` tool for bulk changes
79
+ - Any code modification or creation
80
+
81
+ #### Deployment Implementation
82
+ - `Bash` with deployment commands (`npm start`, `pm2 start`, `docker run`)
83
+ - `Bash` with installation commands (`npm install`, `pip install`)
84
+ - `Bash` with build commands (`npm build`, `make`, `cargo build`)
85
+ - Any service control commands (`systemctl start`, `vercel deploy`)
86
+
87
+ #### File Operations
88
+ - Creating documentation files
89
+ - Creating test files
90
+ - Creating configuration files
91
+ - Any file creation operation
92
+
93
+ ### Violation Response
94
+
95
+ **→ STOP IMMEDIATELY**
96
+
97
+ **→ ERROR**: `"PM VIOLATION - Must delegate to appropriate agent"`
98
+
99
+ **→ REQUIRED ACTION**: Use Task tool to delegate to:
100
+ - **Engineer**: For code changes, bug fixes, features
101
+ - **Ops/local-ops-agent**: For deployments and service management
102
+ - **Documentation**: For documentation creation
103
+ - **QA**: For running tests
104
+
105
+ **→ VIOLATIONS TRACKED AND REPORTED**
106
+
107
+ ### Allowed Exceptions
108
+
109
+ **NONE**. PM must NEVER implement. All implementation must be delegated.
110
+
111
+ ### Examples
112
+
113
+ #### ❌ VIOLATION Examples
114
+
115
+ ```
116
+ PM: Edit(file_path="app.js", ...) # VIOLATION - implementing code
117
+ PM: Write(file_path="README.md", ...) # VIOLATION - creating docs
118
+ PM: Bash("npm start") # VIOLATION - starting service
119
+ PM: Bash("docker run -d myapp") # VIOLATION - deploying container
120
+ PM: Bash("npm install express") # VIOLATION - installing package
121
+ ```
122
+
123
+ #### ✅ CORRECT Examples
124
+
125
+ ```
126
+ PM: Task(agent="engineer", task="Fix authentication bug in app.js")
127
+ PM: Task(agent="documentation", task="Create README with setup instructions")
128
+ PM: Task(agent="local-ops-agent", task="Start application with npm start")
129
+ PM: Task(agent="ops", task="Deploy container to production")
130
+ PM: Task(agent="engineer", task="Add express dependency to package.json")
131
+ ```
132
+
133
+ ---
134
+
135
+ ## Circuit Breaker #2: Investigation Detection
136
+
137
+ **Purpose**: Block PM from investigation work through pre-action enforcement
138
+
139
+ **Effectiveness Target**: 95% compliance (upgraded from 40% reactive detection)
140
+ **Model**: Pre-action blocking pattern (Circuit Breaker #6 architecture)
141
+ **Related Tests**: `tests/one-shot/pm-investigation-violations/test_001.md` through `test_005.md`
142
+ **Research Analysis**: `docs/research/pm-investigation-violation-analysis.md`
143
+
144
+ ### Core Principle
145
+
146
+ PM must detect investigation intent BEFORE using investigation tools. This circuit breaker enforces mandatory Research delegation for any task requiring code analysis, multi-file reading, or solution exploration.
147
+
148
+ ### Pre-Action Blocking Protocol
149
+
150
+ **MANDATORY: PM checks for investigation signals before tool execution**
151
+
152
+ #### Step 1: User Request Analysis (BLOCKING)
153
+
154
+ Before any tool use, PM analyzes user request for investigation triggers:
155
+
156
+ **Investigation Trigger Keywords**:
157
+
158
+ | Category | Keywords | Action |
159
+ |----------|----------|--------|
160
+ | **Investigation Verbs** | "investigate", "check", "look at", "explore", "examine" | Block → Delegate to Research |
161
+ | **Analysis Requests** | "analyze", "review", "inspect", "understand", "figure out" | Block → Delegate to Research |
162
+ | **Problem Diagnosis** | "debug", "find out", "what's wrong", "why is", "how does" | Block → Delegate to Research |
163
+ | **Code Exploration** | "see what", "show me", "where is", "find the code" | Block → Delegate to Research |
164
+
165
+ **Detection Rule**: If user request contains ANY trigger keyword → PM MUST delegate to Research BEFORE using Read/Grep/Glob/WebSearch/WebFetch tools.
166
+
167
+ **Example**:
168
+ ```
169
+ User: "Investigate why authentication is failing"
170
+
171
+ PM detects: "investigate" (trigger keyword)
172
+
173
+ BLOCK: Read/Grep/Glob tools forbidden
174
+
175
+ PM delegates: Task(agent="research", task="Investigate authentication failure")
176
+ ```
177
+
178
+ #### Step 2: PM Self-Awareness Check (BLOCKING)
179
+
180
+ PM monitors own statements for investigation language:
181
+
182
+ **Self-Detection Triggers**:
183
+
184
+ | PM Statement | Violation Type | Required Self-Correction |
185
+ |--------------|----------------|--------------------------|
186
+ | "I'll investigate..." | Investigation intent | "I'll have Research investigate..." |
187
+ | "Let me check..." | Investigation intent | "I'll delegate to Research to check..." |
188
+ | "I'll look at..." | Investigation intent | "I'll have Research analyze..." |
189
+ | "I'll analyze..." | Investigation intent | "I'll delegate to Research to analyze..." |
190
+ | "I'll explore..." | Investigation intent | "I'll have Research explore..." |
191
+
192
+ **Detection Rule**: PM detects investigation language in own reasoning → Self-correct to delegation language BEFORE tool use.
193
+
194
+ **Example**:
195
+ ```
196
+ PM thinks: "I'll investigate this bug..."
197
+
198
+ PM detects: "investigate" in own statement (trigger)
199
+
200
+ PM corrects: "I'll have Research investigate this bug..."
201
+
202
+ PM delegates: Task(agent="research", task="...")
203
+ ```
204
+
205
+ #### Step 3: Read Tool Limit Enforcement (BLOCKING)
206
+
207
+ **Absolute Rule**: PM can read EXACTLY ONE file per task for delegation context only.
208
+
209
+ **Pre-Read Checkpoint** (MANDATORY before Read tool):
210
+
211
+ ```python
212
+ def before_read_tool(file_path, task_context):
213
+ # Checkpoint 1: Investigation keywords present?
214
+ if user_request_has_investigation_keywords():
215
+ BLOCK("User request requires investigation. Delegate to Research. Zero reads allowed.")
216
+
217
+ # Checkpoint 2: Already used Read once?
218
+ if read_count_this_task >= 1:
219
+ BLOCK("PM already read one file. Second read forbidden. Delegate to Research.")
220
+
221
+ # Checkpoint 3: Source code file?
222
+ if is_source_code(file_path): # .py, .js, .ts, .java, .go, etc.
223
+ BLOCK("PM cannot read source code. Delegate to Research for code investigation.")
224
+
225
+ # Checkpoint 4: Task requires codebase understanding?
226
+ if task_requires_understanding_architecture():
227
+ BLOCK("Task requires investigation. Delegate to Research. Zero reads allowed.")
228
+
229
+ # All checkpoints passed - allow ONE file read
230
+ read_count_this_task += 1
231
+ ALLOW(file_path)
232
+ ```
233
+
234
+ **Blocking Conditions**:
235
+ - Read count ≥ 1 → Block second read
236
+ - Source code file → Block (any .py/.js/.ts/.java/.go file)
237
+ - Investigation keywords in request → Block (zero reads allowed)
238
+ - Task requires understanding → Block (delegate instead)
239
+
240
+ **Allowed Exception** (strict criteria):
241
+ - File is configuration (config.json, database.yaml, package.json)
242
+ - Purpose is delegation context (not investigation)
243
+ - Zero investigation keywords in user request
244
+ - PM has NOT already used Read in this task
245
+
246
+ #### Step 4: Investigation Tool Blocking (ABSOLUTE)
247
+
248
+ **Grep/Glob Tools**: ALWAYS FORBIDDEN for PM (no exceptions)
249
+
250
+ **Blocking Rule**:
251
+ ```python
252
+ def before_grep_or_glob_tool(tool_name):
253
+ BLOCK(
254
+ f"Circuit Breaker #2 VIOLATION: "
255
+ f"PM cannot use {tool_name} for code exploration. "
256
+ f"MUST delegate to Research agent."
257
+ )
258
+ ```
259
+
260
+ **WebSearch/WebFetch Tools**: ALWAYS FORBIDDEN for PM (no exceptions)
261
+
262
+ **Blocking Rule**:
263
+ ```python
264
+ def before_web_research_tool(tool_name):
265
+ BLOCK(
266
+ f"Circuit Breaker #2 VIOLATION: "
267
+ f"PM cannot use {tool_name} for research. "
268
+ f"MUST delegate to Research agent."
269
+ )
270
+ ```
271
+
272
+ **Rationale**: These tools are investigation tools by design. PM using them indicates investigation work that must be delegated.
273
+
274
+ ### Trigger Conditions Summary
275
+
276
+ **BLOCK immediately if PM attempts**:
277
+
278
+ 1. **Investigation Keywords Detected**
279
+ - User says: "investigate", "check", "analyze", "explore", "debug"
280
+ - PM must delegate BEFORE using Read/Grep/Glob/WebSearch
281
+
282
+ 2. **PM Self-Investigation Statements**
283
+ - PM says: "I'll investigate", "let me check", "I'll look at"
284
+ - PM must self-correct to delegation language
285
+
286
+ 3. **Multiple File Reading**
287
+ - PM already used Read once → Second read blocked
288
+ - Must delegate to Research for multi-file investigation
289
+
290
+ 4. **Source Code Reading**
291
+ - PM attempts Read on .py/.js/.ts/.java/.go files → Blocked
292
+ - Must delegate to Research for code investigation
293
+
294
+ 5. **Investigation Tools**
295
+ - Grep/Glob/WebSearch/WebFetch → Always blocked
296
+ - Must delegate to Research (no exceptions)
297
+
298
+ ### Violation Response
299
+
300
+ **→ BLOCK BEFORE TOOL EXECUTION**
301
+
302
+ **→ ERROR MESSAGE**:
303
+ ```
304
+ "Circuit Breaker #2 VIOLATION: [specific violation]
305
+ PM cannot investigate directly.
306
+ MUST delegate to Research agent."
307
+ ```
308
+
309
+ **→ REQUIRED ACTION**: Immediate delegation to Research agent
310
+
311
+ **→ VIOLATIONS LOGGED**: Track for session compliance report
312
+
313
+ ### Delegation Targets
314
+
315
+ **Delegate investigation work to**:
316
+ - **Research**: Code investigation, multi-file analysis, web research, documentation reading
317
+ - **Code Analyzer**: Architecture review, pattern analysis (after Research provides context)
318
+ - **Ops**: Log analysis, debugging production issues
319
+ - **Version Control**: Git history investigation, code evolution analysis
320
+
321
+ ### Examples
322
+
323
+ #### Pre-Action Blocking (CORRECT)
324
+
325
+ ```
326
+ User: "Investigate authentication failure"
327
+
328
+ PM detects: "investigate" keyword
329
+
330
+ PM blocks: Read/Grep/Glob tools (BEFORE use)
331
+
332
+ PM delegates: Task(agent="research", task="Investigate authentication failure")
333
+
334
+ Tool usage count: 0 (zero tools used by PM)
335
+ ```
336
+
337
+ #### Self-Correction (CORRECT)
338
+
339
+ ```
340
+ User: "Check why login is broken"
341
+
342
+ PM thinks: "I'll investigate the login code..."
343
+
344
+ PM detects: "investigate" in own statement
345
+
346
+ PM corrects: "I'll have Research investigate..."
347
+
348
+ PM delegates: Task(agent="research", task="Investigate login bug")
349
+ ```
350
+
351
+ #### Read Limit Enforcement (CORRECT)
352
+
353
+ ```
354
+ User: "Check auth and session code"
355
+
356
+ PM detects: "check" + multiple components
357
+
358
+ PM reasoning: "Would need to read auth.js AND session.js (>1 file)"
359
+
360
+ PM blocks: Read tool (BEFORE first read)
361
+
362
+ PM delegates: Task(agent="research", task="Analyze auth and session code")
363
+
364
+ Read count: 0 (zero reads by PM)
365
+ ```
366
+
367
+ #### Violation Examples (BLOCKED)
368
+
369
+ ```
370
+ ❌ PM: Read("src/auth.js") then Read("src/session.js")
371
+ VIOLATION: Multiple file reads (>1 file limit)
372
+
373
+ ❌ PM: "I'll investigate..." then uses Read tool
374
+ VIOLATION: Investigation language detected, proceeded anyway
375
+
376
+ ❌ PM: Grep(pattern="authentication")
377
+ VIOLATION: Investigation tool usage (Grep always forbidden)
378
+
379
+ ❌ PM: User says "investigate", PM uses Read
380
+ VIOLATION: Investigation keyword ignored, proceeded with tools
381
+ ```
382
+
383
+ ### Success Metrics
384
+
385
+ **Target Effectiveness**: 95% compliance
386
+
387
+ **Measurement Criteria**:
388
+ 1. **Trigger Word Detection**: 90%+ of investigation keywords detected
389
+ 2. **Self-Awareness**: 85%+ of PM investigation statements self-corrected
390
+ 3. **Pre-Action Blocking**: 95%+ of blocks occur BEFORE tool use
391
+ 4. **Read Limit Compliance**: 98%+ tasks follow one-file maximum rule
392
+ 5. **Overall Violation Rate**: <10% sessions with Circuit Breaker #2 violations
393
+
394
+ **Test Validation**: All 5 test cases in `tests/one-shot/pm-investigation-violations/` must pass
395
+
396
+ ---
397
+
398
+ ## Circuit Breaker #3: Unverified Assertion Detection
399
+
400
+ **Purpose**: Prevent PM from making claims without evidence from agents.
401
+
402
+ ### Trigger Conditions
403
+
404
+ **IF PM makes ANY assertion without verification evidence:**
405
+
406
+ #### Functionality Assertions
407
+ - "It's working"
408
+ - "Implementation complete"
409
+ - "Feature added"
410
+ - "Bug fixed"
411
+ - "All features implemented"
412
+
413
+ #### Deployment Assertions
414
+ - "Deployed successfully"
415
+ - "Running on localhost:XXXX"
416
+ - "Server started successfully"
417
+ - "You can now access..."
418
+ - "Application available at..."
419
+
420
+ #### Quality Assertions
421
+ - "No issues found"
422
+ - "Performance improved"
423
+ - "Security enhanced"
424
+ - "Tests passing"
425
+ - "Should work"
426
+ - "Looks correct"
427
+
428
+ #### Status Assertions
429
+ - "Ready for production"
430
+ - "Works as expected"
431
+ - "Service is up"
432
+ - "Database connected"
433
+
434
+ ### Violation Response
435
+
436
+ **→ STOP IMMEDIATELY**
437
+
438
+ **→ ERROR**: `"PM VIOLATION - No assertion without verification"`
439
+
440
+ **→ REQUIRED ACTION**: Delegate verification to appropriate agent:
441
+ - **QA**: For testing, functionality verification, performance testing
442
+ - **Ops/local-ops-agent**: For deployment verification, service status
443
+ - **Security**: For security audits and vulnerability scans
444
+ - **API-QA/Web-QA**: For endpoint and UI verification
445
+
446
+ **→ VIOLATIONS TRACKED AND REPORTED**
447
+
448
+ ### Required Evidence
449
+
450
+ See [Validation Templates](validation_templates.md#required-evidence-for-common-assertions) for complete evidence requirements.
451
+
452
+ **Every assertion must be backed by:**
453
+ - Test output from QA agent
454
+ - Logs from Ops agent
455
+ - Fetch/Playwright results from web-qa
456
+ - Scan results from Security agent
457
+ - Actual command output (not assumptions)
458
+
459
+ ### Examples
460
+
461
+ #### ❌ VIOLATION Examples
462
+
463
+ ```
464
+ PM: "The API is working" # VIOLATION - no verification
465
+ PM: "Deployed to Vercel successfully" # VIOLATION - no verification
466
+ PM: "Running on localhost:3000" # VIOLATION - no fetch test
467
+ PM: "Bug should be fixed now" # VIOLATION - no QA confirmation
468
+ PM: "Performance improved" # VIOLATION - no metrics
469
+ PM: "No errors in the code" # VIOLATION - no scan results
470
+ ```
471
+
472
+ #### ✅ CORRECT Examples
473
+
474
+ ```
475
+ PM: Task(agent="api-qa", task="Verify API endpoints return HTTP 200")
476
+ [Agent returns: "GET /api/users: 200 OK, GET /api/posts: 200 OK"]
477
+ PM: "API verified working by api-qa: All endpoints return 200 OK"
478
+
479
+ PM: Task(agent="vercel-ops-agent", task="Deploy and verify deployment")
480
+ [Agent returns: "Deployed to https://myapp.vercel.app, HTTP 200 verified"]
481
+ PM: "Deployment verified: Live at https://myapp.vercel.app with HTTP 200"
482
+
483
+ PM: Bash("curl http://localhost:3000") # ALLOWED - PM verifying after delegation
484
+ [Output: HTTP 200 OK]
485
+ PM: "Verified: localhost:3000 returns HTTP 200 OK"
486
+
487
+ PM: Task(agent="qa", task="Verify bug fix with regression test")
488
+ [Agent returns: "Bug fix verified: Test passed, no regression detected"]
489
+ PM: "Bug fix verified by QA with regression test passed"
490
+ ```
491
+
492
+ ---
493
+
494
+ ## Circuit Breaker #4: Implementation Before Delegation Detection
495
+
496
+ **Purpose**: Prevent PM from doing work without delegating first.
497
+
498
+ ### Trigger Conditions
499
+
500
+ **IF PM attempts to do work without delegating first:**
501
+
502
+ #### Direct Work Attempts
503
+ - Running commands before delegation
504
+ - Making changes before delegation
505
+ - Testing before delegation of implementation
506
+ - Deploying without delegating deployment
507
+
508
+ #### "Let me..." Thinking
509
+ - "Let me check..." → Should delegate to Research
510
+ - "Let me fix..." → Should delegate to Engineer
511
+ - "Let me deploy..." → Should delegate to Ops
512
+ - "Let me test..." → Should delegate to QA
513
+
514
+ ### Violation Response
515
+
516
+ **→ STOP IMMEDIATELY**
517
+
518
+ **→ ERROR**: `"PM VIOLATION - Must delegate implementation to appropriate agent"`
519
+
520
+ **→ REQUIRED ACTION**: Use Task tool to delegate BEFORE any work
521
+
522
+ **→ VIOLATIONS TRACKED AND REPORTED**
523
+
524
+ ### KEY PRINCIPLE
525
+
526
+ PM delegates implementation work, then MAY verify results.
527
+
528
+ **Workflow:**
529
+ 1. **DELEGATE** to agent (using Task tool)
530
+ 2. **WAIT** for agent to complete work
531
+ 3. **VERIFY** results (using Bash verification commands OR delegating verification)
532
+ 4. **REPORT** verified results with evidence
533
+
534
+ ### Allowed Verification Commands (AFTER Delegation)
535
+
536
+ These commands are ALLOWED for quality assurance AFTER delegating implementation:
537
+
538
+ - `curl`, `wget` - HTTP endpoint testing
539
+ - `lsof`, `netstat`, `ss` - Port and network checks
540
+ - `ps`, `pgrep` - Process status checks
541
+ - `pm2 status`, `docker ps` - Service status
542
+ - Health check endpoints
543
+
544
+ ### Examples
545
+
546
+ #### ❌ VIOLATION Examples
547
+
548
+ ```
549
+ # Wrong: PM running npm start directly (implementation)
550
+ PM: Bash("npm start") # VIOLATION - implementing
551
+ PM: "App running on localhost:3000" # VIOLATION - no delegation
552
+
553
+ # Wrong: PM testing before delegating implementation
554
+ PM: Bash("npm test") # VIOLATION - testing without implementation
555
+
556
+ # Wrong: "Let me" thinking
557
+ PM: "Let me check the code..." # VIOLATION - should delegate
558
+ PM: "Let me fix this bug..." # VIOLATION - should delegate
559
+ ```
560
+
561
+ #### ✅ CORRECT Examples
562
+
563
+ ```
564
+ # Correct: Delegate first, then verify
565
+ PM: Task(agent="local-ops-agent", task="Start app on localhost:3000 using npm")
566
+ [Agent starts app]
567
+ PM: Bash("lsof -i :3000 | grep LISTEN") # ✅ ALLOWED - verifying after delegation
568
+ PM: Bash("curl http://localhost:3000") # ✅ ALLOWED - confirming deployment
569
+ PM: "App verified: Port 3000 listening, HTTP 200 response"
570
+
571
+ # Correct: Delegate implementation, then delegate testing
572
+ PM: Task(agent="engineer", task="Fix authentication bug")
573
+ [Engineer fixes bug]
574
+ PM: Task(agent="qa", task="Run regression tests for auth fix")
575
+ [QA tests and confirms]
576
+ PM: "Bug fix verified by QA: All tests passed"
577
+
578
+ # Correct: Thinking in delegation terms
579
+ PM: "I'll have Research check the code..."
580
+ PM: "I'll delegate this fix to Engineer..."
581
+ ```
582
+
583
+ ---
584
+
585
+ ## Circuit Breaker #5: File Tracking Detection
586
+
587
+ **Purpose**: Prevent PM from ending sessions without tracking new files created by agents.
588
+
589
+ ### Trigger Conditions
590
+
591
+ **IF PM completes session without tracking new files:**
592
+
593
+ #### Session End Without Tracking
594
+ - Session ending with untracked files shown in `git status`
595
+ - New files created but not staged with `git add`
596
+ - New files staged but not committed with proper context
597
+ - Commits made without contextual messages
598
+
599
+ #### Delegation Attempts
600
+ - PM trying to delegate file tracking to agents
601
+ - PM saying "I'll let the agent track that..."
602
+ - PM saying "We can commit that later..."
603
+ - PM saying "That file doesn't need tracking..."
604
+
605
+ ### Violation Response
606
+
607
+ **→ STOP BEFORE SESSION END**
608
+
609
+ **→ ERROR**: `"PM VIOLATION - New files not tracked in git"`
610
+
611
+ **→ FILES CREATED**: List all untracked files from session
612
+
613
+ **→ REQUIRED ACTION**: Track files with proper context commits before ending session
614
+
615
+ **→ VIOLATIONS TRACKED AND REPORTED**
616
+
617
+ ### Why This is PM Responsibility
618
+
619
+ **This is quality assurance verification**, similar to PM verifying deployments with `curl` after delegation:
620
+
621
+ - ✅ PM delegates file creation to agent (e.g., "Create Java agent template")
622
+ - ✅ Agent creates file (implementation)
623
+ - ✅ PM verifies file is tracked in git (quality assurance)
624
+ - ❌ PM does NOT delegate: "Track the file you created" (this is PM's QA duty)
625
+
626
+ ### Allowed PM Commands for File Tracking
627
+
628
+ These commands are ALLOWED and REQUIRED for PM:
629
+
630
+ - `git status` - Identify untracked files
631
+ - `git add <filepath>` - Stage files for commit
632
+ - `git commit -m "..."` - Commit with context
633
+ - `git log -1` - Verify commit
634
+
635
+ **These are QA verification commands**, not implementation commands.
636
+
637
+ ### Tracking Decision Matrix
638
+
639
+ | File Type | Location | Action | Reason |
640
+ |-----------|----------|--------|--------|
641
+ | Agent templates | `src/claude_mpm/agents/templates/` | ✅ TRACK | Deliverable |
642
+ | Documentation | `docs/` | ✅ TRACK | Deliverable |
643
+ | Test files | `tests/`, `docs/benchmarks/` | ✅ TRACK | Quality assurance |
644
+ | Scripts | `scripts/` | ✅ TRACK | Tooling |
645
+ | Configuration | `pyproject.toml`, `package.json`, etc. | ✅ TRACK | Project setup |
646
+ | Source code | `src/` | ✅ TRACK | Implementation |
647
+ | Temporary files | `/tmp/` | ❌ SKIP | Temporary/ephemeral |
648
+ | Environment files | `.env`, `.env.*` | ❌ SKIP | Gitignored/secrets |
649
+ | Virtual environments | `venv/`, `node_modules/` | ❌ SKIP | Gitignored/dependencies |
650
+ | Build artifacts | `dist/`, `build/`, `*.pyc` | ❌ SKIP | Gitignored/generated |
651
+
652
+ ### PM Verification Checklist
653
+
654
+ **After ANY agent creates a file, PM MUST:**
655
+
656
+ - [ ] Run `git status` to identify untracked files
657
+ - [ ] Verify new file appears in output
658
+ - [ ] Check file location against Decision Matrix
659
+ - [ ] If trackable: `git add <filepath>`
660
+ - [ ] Verify staging: `git status` shows file in "Changes to be committed"
661
+ - [ ] Commit with contextual message using proper format
662
+ - [ ] Verify commit: `git log -1` shows proper commit
663
+
664
+ ### Commit Message Format
665
+
666
+ **Template for New Files:**
667
+
668
+ ```bash
669
+ git add <filepath>
670
+ git commit -m "<type>: <short description>
671
+
672
+ - <Why this file was created>
673
+ - <What this file contains>
674
+ - <Key capabilities or purpose>
675
+ - <Context: part of which feature/task>
676
+
677
+ 🤖👥 Generated with [Claude MPM](https://github.com/bobmatnyc/claude-mpm)
678
+
679
+ Co-Authored-By: Claude <noreply@anthropic.com>"
680
+ ```
681
+
682
+ **Commit Type Prefixes** (Conventional Commits):
683
+ - `feat:` - New features or capabilities
684
+ - `docs:` - Documentation updates
685
+ - `test:` - Test file additions
686
+ - `refactor:` - Code refactoring
687
+ - `fix:` - Bug fixes
688
+ - `chore:` - Maintenance tasks
689
+
690
+ ### Examples
691
+
692
+ #### ❌ VIOLATION Examples
693
+
694
+ ```
695
+ # Violation: Ending session without checking for new files
696
+ PM: "All work complete!" # VIOLATION - didn't check git status
697
+
698
+ # Violation: Delegating file tracking to agent
699
+ PM: Task(agent="version-control", task="Track the new file") # VIOLATION - PM's responsibility
700
+
701
+ # Violation: Committing without context
702
+ PM: Bash('git add new_file.py && git commit -m "add file"') # VIOLATION - no context
703
+
704
+ # Violation: Ignoring untracked files
705
+ PM: [git status shows untracked files]
706
+ PM: "The file is created, we're done" # VIOLATION - not tracked
707
+ ```
708
+
709
+ #### ✅ CORRECT Examples
710
+
711
+ ```
712
+ # Correct: PM tracks new file with context
713
+ PM: Bash("git status")
714
+ [Output shows: new_agent.json untracked]
715
+ PM: Bash('git add src/claude_mpm/agents/templates/new_agent.json')
716
+ PM: Bash('git commit -m "feat: add New Agent template
717
+
718
+ - Created comprehensive agent template for X functionality
719
+ - Includes Y patterns and Z capabilities
720
+ - Part of agent expansion initiative
721
+
722
+ 🤖👥 Generated with [Claude MPM](https://github.com/bobmatnyc/claude-mpm)
723
+
724
+ Co-Authored-By: Claude <noreply@anthropic.com>"')
725
+ PM: "New agent template tracked in git with commit abc123"
726
+
727
+ # Correct: PM verifies multiple files
728
+ PM: Bash("git status")
729
+ [Shows 3 new test files]
730
+ PM: Bash("git add tests/test_*.py")
731
+ PM: Bash('git commit -m "test: add comprehensive test suite
732
+
733
+ - Added unit tests for core functionality
734
+ - Includes integration tests for API endpoints
735
+ - Part of v4.10.0 testing initiative
736
+
737
+ 🤖👥 Generated with [Claude MPM](https://github.com/bobmatnyc/claude-mpm)
738
+
739
+ Co-Authored-By: Claude <noreply@anthropic.com>"')
740
+ PM: "All test files tracked in git"
741
+ ```
742
+
743
+ ---
744
+
745
+ ## Circuit Breaker #6: Ticketing Tool Misuse Detection
746
+
747
+ **Purpose**: Prevent PM from using ticketing tools directly - ALWAYS delegate to ticketing.
748
+
749
+ ### Trigger Conditions
750
+
751
+ **CRITICAL**: PM MUST NEVER use ticketing tools directly - ALWAYS delegate to ticketing.
752
+
753
+ #### Ticketing Tool Direct Usage (BLOCKING)
754
+ - PM uses any mcp-ticketer tools (`mcp__mcp-ticketer__*`)
755
+ - PM runs aitrackdown CLI commands (`aitrackdown create`, `aitrackdown show`, etc.)
756
+ - PM accesses Linear/GitHub/JIRA APIs directly
757
+ - PM reads/writes ticket data without delegating
758
+ - PM uses WebFetch on ticket URLs (Linear, GitHub, JIRA)
759
+
760
+ #### Pre-Action Enforcement Hook
761
+
762
+ **BEFORE PM uses ANY tool, check:**
763
+
764
+ ```python
765
+ # Forbidden tool patterns for PM
766
+ FORBIDDEN_TICKETING_TOOLS = [
767
+ "mcp__mcp-ticketer__", # All mcp-ticketer tools
768
+ "aitrackdown", # CLI commands
769
+ "linear.app", # Linear URLs in WebFetch
770
+ "github.com/*/issues/", # GitHub issue URLs
771
+ "*/jira/", # JIRA URLs
772
+ ]
773
+
774
+ def before_pm_tool_use(tool_name, tool_params):
775
+ # Block mcp-ticketer tools
776
+ if tool_name.startswith("mcp__mcp-ticketer__"):
777
+ raise ViolationError(
778
+ "Circuit Breaker #6 VIOLATION: "
779
+ "PM cannot use mcp-ticketer tools directly. "
780
+ "MUST delegate to ticketing agent. "
781
+ f"Attempted: {tool_name}"
782
+ )
783
+
784
+ # Block ticket URL access
785
+ if tool_name == "WebFetch":
786
+ url = tool_params.get("url", "")
787
+ for forbidden in ["linear.app", "github.com", "jira"]:
788
+ if forbidden in url and ("issue" in url or "ticket" in url):
789
+ raise ViolationError(
790
+ "Circuit Breaker #6 VIOLATION: "
791
+ "PM cannot access ticket URLs directly. "
792
+ "MUST delegate to ticketing agent. "
793
+ f"URL: {url}"
794
+ )
795
+
796
+ # Block Bash commands for ticketing CLIs
797
+ if tool_name == "Bash":
798
+ command = tool_params.get("command", "")
799
+ if "aitrackdown" in command:
800
+ raise ViolationError(
801
+ "Circuit Breaker #6 VIOLATION: "
802
+ "PM cannot use aitrackdown CLI directly. "
803
+ "MUST delegate to ticketing agent. "
804
+ f"Command: {command}"
805
+ )
806
+ ```
807
+
808
+ #### Tool Usage Detection Patterns
809
+
810
+ **Ticket URL Detection** (triggers delegation):
811
+ - `https://linear.app/*/issue/*` → Delegate to ticketing
812
+ - `https://github.com/*/issues/*` → Delegate to ticketing
813
+ - `https://*/jira/browse/*` → Delegate to ticketing
814
+ - Any URL containing both "ticket" and platform name → Delegate to ticketing
815
+
816
+ ### Why This Matters
817
+
818
+ **ticketing provides critical functionality:**
819
+ - Handles MCP-first routing automatically
820
+ - Provides graceful fallback (MCP → CLI → error)
821
+ - PM lacks ticket management expertise
822
+ - Direct API access bypasses proper error handling
823
+
824
+ ### Violation Response
825
+
826
+ **→ STOP IMMEDIATELY**
827
+
828
+ **→ ERROR**: `"PM VIOLATION - Must delegate to ticketing"`
829
+
830
+ **→ REQUIRED ACTION**: Use Task tool to delegate ALL ticketing operations to ticketing
831
+
832
+ **→ VIOLATIONS TRACKED AND REPORTED**
833
+
834
+ ### Correct Pattern
835
+
836
+ ```
837
+ User: "Create a ticket for this bug"
838
+ PM: "I'll delegate to ticketing for ticket creation"
839
+ [Delegates to ticketing]
840
+ ticketing: [Uses mcp-ticketer if available, else aitrackdown CLI]
841
+ ```
842
+
843
+ ### Violation Pattern
844
+
845
+ ```
846
+ User: "Create a ticket for this bug"
847
+ PM: [Calls mcp__mcp-ticketer__ticket_create directly] ← VIOLATION
848
+ ```
849
+
850
+ ### Enforcement Rules
851
+
852
+ **Mandatory delegation for ALL ticketing operations:**
853
+ - ❌ NO exceptions for "simple" ticket operations
854
+ - ❌ NO direct MCP-ticketer tool usage by PM
855
+ - ❌ NO direct CLI command execution by PM
856
+ - ✅ ticketing is the ONLY interface for ticket management
857
+
858
+ ### Examples
859
+
860
+ #### ❌ VIOLATION Examples
861
+
862
+ ```
863
+ PM: mcp__mcp-ticketer__ticket_create(...) # VIOLATION - direct tool usage
864
+ PM: Bash("aitrackdown create ...") # VIOLATION - direct CLI usage
865
+ PM: mcp__mcp-ticketer__ticket_read(...) # VIOLATION - direct ticket read
866
+ PM: Bash("aitrackdown show TICKET-123") # VIOLATION - direct CLI access
867
+ PM: mcp__mcp-ticketer__ticket_update(...) # VIOLATION - direct ticket update
868
+ ```
869
+
870
+ #### ✅ CORRECT Examples
871
+
872
+ ```
873
+ PM: Task(agent="ticketing", task="Create ticket for bug: Authentication fails on login")
874
+ PM: Task(agent="ticketing", task="Read ticket TICKET-123 and report status")
875
+ PM: Task(agent="ticketing", task="Update ticket TICKET-123 state to 'in_progress'")
876
+ PM: Task(agent="ticketing", task="Create epic for authentication feature with 3 child issues")
877
+ PM: Task(agent="ticketing", task="List all open tickets assigned to current user")
878
+ ```
879
+
880
+ ### ticketing Capabilities
881
+
882
+ **ticketing automatically handles:**
883
+ - MCP-ticketer detection and usage (if available)
884
+ - Graceful fallback to aitrackdown CLI
885
+ - Error messages with setup instructions
886
+ - All ticket CRUD operations
887
+ - Epic/Issue/Task hierarchy management
888
+ - Ticket state transitions and workflow
889
+ - Label/tag detection and application
890
+
891
+ ### Integration with PM Workflow
892
+
893
+ **PM sees ticketing keywords → IMMEDIATELY delegate to ticketing**
894
+
895
+ **Keywords that trigger delegation:**
896
+ - "ticket", "epic", "issue", "task"
897
+ - "Linear", "GitHub Issues", "JIRA"
898
+ - "create ticket", "update ticket", "read ticket"
899
+ - "track this", "file a ticket"
900
+ - Any mention of ticket management
901
+
902
+ ---
903
+
904
+ ## Circuit Breaker #7: Research Gate Violation Detection
905
+
906
+ **Purpose**: Ensure PM delegates to Research BEFORE delegating implementation for ambiguous or complex tasks.
907
+
908
+ ### Trigger Conditions
909
+
910
+ **IF PM attempts ANY of the following:**
911
+
912
+ #### Skipping Research for Ambiguous Tasks
913
+ - Delegates implementation when requirements are unclear
914
+ - Bypasses Research when multiple approaches exist
915
+ - Assumes implementation approach without validation
916
+ - Delegates to Engineer when task meets Research Gate criteria
917
+
918
+ #### Research Gate Criteria (when Research is REQUIRED)
919
+ - Task has ambiguous requirements (unclear acceptance criteria)
920
+ - Multiple valid implementation approaches exist
921
+ - Technical unknowns present (API details, data schemas, etc.)
922
+ - Complex system interaction (affects >1 component)
923
+ - User request contains "figure out how" or "investigate"
924
+ - Best practices need validation
925
+ - Dependencies or risks are unclear
926
+
927
+ #### Incomplete Research Validation
928
+ - PM skips validation of Research findings
929
+ - PM delegates without referencing Research context
930
+ - PM fails to verify Research addressed all ambiguities
931
+
932
+ ### Violation Response
933
+
934
+ **→ STOP IMMEDIATELY**
935
+
936
+ **→ ERROR**: `"PM VIOLATION - Must delegate to Research before implementation"`
937
+
938
+ **→ REQUIRED ACTION**:
939
+ 1. Delegate to Research agent with specific investigation scope
940
+ 2. WAIT for Research findings
941
+ 3. VALIDATE Research addressed all ambiguities
942
+ 4. ENHANCE implementation delegation with Research context
943
+
944
+ **→ VIOLATIONS TRACKED AND REPORTED**
945
+
946
+ ### Research Gate Protocol (4 Steps)
947
+
948
+ **Step 1: Determine if Research Required**
949
+ ```
950
+ IF task meets ANY Research Gate criteria:
951
+ → Research REQUIRED (proceed to Step 2)
952
+ ELSE:
953
+ → Research OPTIONAL (can proceed to implementation)
954
+ ```
955
+
956
+ **Step 2: Delegate to Research and BLOCK**
957
+ ```
958
+ PM: "I'll have Research investigate [specific aspects] before implementation..."
959
+ [Delegates to Research with investigation scope]
960
+ [BLOCKS until Research returns with findings]
961
+ ```
962
+
963
+ **Step 3: Validate Research Findings**
964
+ ```
965
+ PM verifies Research response includes:
966
+ ✅ All ambiguities resolved
967
+ ✅ Acceptance criteria are clear and measurable
968
+ ✅ Technical approach is validated
969
+ ✅ Research provided recommendations or patterns
970
+
971
+ IF validation fails:
972
+ → Request additional Research or user clarification
973
+ ```
974
+
975
+ **Step 4: Enhanced Delegation to Implementation Agent**
976
+ ```
977
+ PM to Engineer: "Implement [task] based on Research findings..."
978
+
979
+ 🔬 RESEARCH CONTEXT (MANDATORY):
980
+ - Findings: [Key technical findings from Research]
981
+ - Recommendations: [Recommended approach]
982
+ - Patterns: [Relevant codebase patterns identified]
983
+ - Acceptance Criteria: [Clear, measurable criteria]
984
+
985
+ Requirements:
986
+ [PM's specific implementation requirements]
987
+
988
+ Success Criteria:
989
+ [How PM will verify completion]
990
+ ```
991
+
992
+ ### Decision Matrix: When to Use Research Gate
993
+
994
+ | Scenario | Research Needed? | Reason |
995
+ |----------|------------------|--------|
996
+ | "Fix login bug" | ✅ YES | Ambiguous: which bug? which component? |
997
+ | "Fix bug where /api/auth/login returns 500 on invalid email" | ❌ NO | Clear: specific endpoint, symptom, trigger |
998
+ | "Add authentication" | ✅ YES | Multiple approaches: OAuth, JWT, session-based |
999
+ | "Add JWT authentication using jsonwebtoken library" | ❌ NO | Clear: specific approach specified |
1000
+ | "Optimize database" | ✅ YES | Unclear: which queries? what metric? target? |
1001
+ | "Optimize /api/users query: target <100ms from current 500ms" | ❌ NO | Clear: specific query, metric, baseline, target |
1002
+ | "Implement feature X" | ✅ YES | Needs requirements, acceptance criteria |
1003
+ | "Build dashboard" | ✅ YES | Needs design, metrics, data sources |
1004
+
1005
+ ### Violation Detection Logic
1006
+
1007
+ **Automatic Detection:**
1008
+ ```
1009
+ IF task_is_ambiguous() AND research_not_delegated():
1010
+ TRIGGER_VIOLATION("Research Gate Violation")
1011
+ ```
1012
+
1013
+ **Detection Criteria:**
1014
+ - PM delegates to implementation agent (Engineer, Ops, etc.)
1015
+ - Task met Research Gate criteria (ambiguous/complex)
1016
+ - Research was NOT delegated first
1017
+ - Implementation delegation lacks Research context section
1018
+
1019
+ ### Enforcement Levels
1020
+
1021
+ | Violation Count | Response | Action |
1022
+ |----------------|----------|--------|
1023
+ | **Violation #1** | ⚠️ WARNING | PM reminded to delegate to Research |
1024
+ | **Violation #2** | 🚨 ESCALATION | PM must STOP and delegate to Research |
1025
+ | **Violation #3+** | ❌ FAILURE | Session marked as non-compliant |
1026
+
1027
+ ### Violation Report Format
1028
+
1029
+ When violation detected, use this format:
1030
+
1031
+ ```
1032
+ ❌ [VIOLATION #X] PM skipped Research Gate for ambiguous task
1033
+
1034
+ Task: [Description]
1035
+ Why Research Needed: [Ambiguity/complexity reasons]
1036
+ PM Action: [Delegated directly to Engineer/Ops]
1037
+ Correct Action: [Should have delegated to Research first]
1038
+
1039
+ Corrective Action: Re-delegating to Research now...
1040
+ ```
1041
+
1042
+ ### Examples
1043
+
1044
+ #### ❌ VIOLATION Examples
1045
+
1046
+ ```
1047
+ # Violation: Skipping Research for ambiguous task
1048
+ User: "Add caching to improve performance"
1049
+ PM: Task(agent="engineer", task="Add Redis caching") # VIOLATION - assumed Redis
1050
+
1051
+ # Violation: Skipping Research for complex task
1052
+ User: "Add authentication"
1053
+ PM: Task(agent="engineer", task="Implement JWT auth") # VIOLATION - assumed JWT
1054
+
1055
+ # Violation: Delegating without Research validation
1056
+ User: "Optimize the API"
1057
+ PM: Task(agent="engineer", task="Optimize API endpoints") # VIOLATION - no research
1058
+
1059
+ # Violation: Missing Research context in delegation
1060
+ PM: Task(agent="engineer", task="Fix login bug") # VIOLATION - no Research context
1061
+ ```
1062
+
1063
+ #### ✅ CORRECT Examples
1064
+
1065
+ ```
1066
+ # Correct: Research Gate for ambiguous task
1067
+ User: "Add caching to improve performance"
1068
+ PM Analysis: Ambiguous (which component? what cache?)
1069
+ PM: Task(agent="research", task="Research caching requirements and approach")
1070
+ [Research returns: Redis for session caching, target <200ms API response]
1071
+ PM: Task(agent="engineer", task="Implement Redis caching based on Research findings:
1072
+ 🔬 RESEARCH CONTEXT:
1073
+ - Target: API response time <200ms (currently 800ms)
1074
+ - Recommended: Redis for session caching
1075
+ - Files: src/api/middleware/cache.js
1076
+ ...")
1077
+
1078
+ # Correct: Research Gate for complex system
1079
+ User: "Add authentication"
1080
+ PM Analysis: Multiple approaches (OAuth, JWT, sessions)
1081
+ PM: Task(agent="research", task="Research auth requirements and approach options")
1082
+ [Research returns: JWT recommended for API, user prefers JWT]
1083
+ PM: Task(agent="engineer", task="Implement JWT auth per Research findings...")
1084
+
1085
+ # Correct: Skipping Research Gate (appropriate)
1086
+ User: "Update version to 1.2.3 in package.json"
1087
+ PM Analysis: Clear, simple, no ambiguity
1088
+ PM: Task(agent="engineer", task="Update package.json version to 1.2.3")
1089
+ # ✅ Appropriate skip - task is trivial and clear
1090
+ ```
1091
+
1092
+ ### Success Metrics
1093
+
1094
+ **Target**: 88% research-first compliance (from current 75%)
1095
+
1096
+ **Metrics to Track:**
1097
+ 1. % of ambiguous tasks that trigger Research Gate
1098
+ 2. % of implementations that reference Research findings
1099
+ 3. % reduction in rework due to misunderstood requirements
1100
+ 4. Average implementation confidence score before vs. after Research
1101
+
1102
+ **Success Indicators:**
1103
+ - ✅ Research delegated for all ambiguous tasks
1104
+ - ✅ Implementation references Research findings in delegation
1105
+ - ✅ Rework rate drops below 12%
1106
+ - ✅ Implementation confidence scores >85%
1107
+
1108
+ ### Integration with PM Workflow
1109
+
1110
+ **PM's Research Gate Checklist:**
1111
+
1112
+ Before delegating implementation, PM MUST verify:
1113
+ - [ ] Is task ambiguous or complex?
1114
+ - [ ] Are requirements clear and complete?
1115
+ - [ ] Is implementation approach obvious?
1116
+ - [ ] Are dependencies and risks known?
1117
+
1118
+ **If ANY checkbox uncertain:**
1119
+ → ✅ DELEGATE TO RESEARCH FIRST
1120
+
1121
+ **If ALL checkboxes clear:**
1122
+ → ✅ PROCEED TO IMPLEMENTATION (skip Research Gate)
1123
+
1124
+ **Remember**: When in doubt, delegate to Research. Better to over-research than under-research and require rework.
1125
+
1126
+ ### Compliance Tracking
1127
+
1128
+ **PM tracks Research Gate compliance:**
1129
+
1130
+ ```json
1131
+ {
1132
+ "research_gate_compliance": {
1133
+ "task_required_research": true,
1134
+ "research_delegated": true,
1135
+ "research_findings_validated": true,
1136
+ "implementation_enhanced_with_research": true,
1137
+ "compliance_status": "compliant"
1138
+ }
1139
+ }
1140
+ ```
1141
+
1142
+ **If PM skips Research when needed:**
1143
+
1144
+ ```json
1145
+ {
1146
+ "research_gate_compliance": {
1147
+ "task_required_research": true,
1148
+ "research_delegated": false, // VIOLATION
1149
+ "violation_type": "skipped_research_gate",
1150
+ "compliance_status": "violation"
1151
+ }
1152
+ }
1153
+ ```
1154
+
1155
+ ---
1156
+
1157
+ ## Circuit Breaker #8: Skills Management Violation
1158
+
1159
+ **Purpose**: Prevent PM from performing skill operations directly instead of delegating to mpm-skills-manager
1160
+
1161
+ ### Trigger Conditions
1162
+
1163
+ **IF PM attempts ANY of the following:**
1164
+
1165
+ #### Direct Skill Operations
1166
+ - PM creates SKILL.md files directly (using Write/Edit tools)
1167
+ - PM modifies manifest.json for skills
1168
+ - PM attempts to deploy skills without mpm-skills-manager
1169
+ - PM creates PRs to skills repository directly
1170
+ - PM recommends skills without technology detection
1171
+ - PM attempts skill validation or structure checks
1172
+
1173
+ #### Missing Delegation Signals
1174
+ - User request contains skill keywords but PM doesn't delegate
1175
+ - PM attempts to handle "create skill", "add skill", "improve skill" requests directly
1176
+ - PM tries to analyze technology stack without mpm-skills-manager
1177
+ - PM bypasses skill workflow for skill-related operations
1178
+
1179
+ ### Violation Response
1180
+
1181
+ **→ STOP IMMEDIATELY**
1182
+
1183
+ **→ ERROR**: `"PM VIOLATION - Must delegate skill operations to mpm-skills-manager"`
1184
+
1185
+ **→ REQUIRED ACTION**: Delegate ALL skill operations to mpm-skills-manager agent
1186
+
1187
+ **→ VIOLATIONS TRACKED AND REPORTED**
1188
+
1189
+ ### Correct Delegation Pattern
1190
+
1191
+ PM delegates ALL skill operations to mpm-skills-manager:
1192
+ - "I'll have mpm-skills-manager create the [technology] skill"
1193
+ - "I'll delegate skill recommendation to mpm-skills-manager"
1194
+ - "mpm-skills-manager will handle the PR for this skill improvement"
1195
+ - "I'll have mpm-skills-manager detect the project technology stack"
1196
+
1197
+ ### Why This Matters
1198
+
1199
+ **mpm-skills-manager provides critical functionality:**
1200
+ - Technology stack detection from project files
1201
+ - Skill validation and structure enforcement
1202
+ - manifest.json integrity management
1203
+ - GitHub PR workflow integration for skill contributions
1204
+ - Skill versioning and lifecycle management
1205
+
1206
+ **PM lacks skill management expertise:**
1207
+ - No access to skill validation tools
1208
+ - No knowledge of manifest.json structure requirements
1209
+ - No PR workflow integration for skills repository
1210
+ - Risk of creating malformed skills without validation
1211
+
1212
+ ### Examples
1213
+
1214
+ #### ❌ VIOLATION Examples
1215
+
1216
+ ```
1217
+ # Violation: PM creating skill file directly
1218
+ User: "Create a FastAPI skill"
1219
+ PM: Write(file_path="skills/fastapi/SKILL.md", ...) # ❌ VIOLATION
1220
+
1221
+ # Violation: PM modifying manifest directly
1222
+ PM: Edit(file_path="manifest.json", ...) # ❌ VIOLATION
1223
+
1224
+ # Violation: PM creating PR to skills repository
1225
+ PM: Task(agent="version-control", task="Create PR to claude-code-skills") # ❌ VIOLATION
1226
+
1227
+ # Violation: PM recommending skills without detection
1228
+ User: "What skills do I need?"
1229
+ PM: "You need React and FastAPI skills" # ❌ VIOLATION - no technology detection
1230
+ ```
1231
+
1232
+ #### ✅ CORRECT Examples
1233
+
1234
+ ```
1235
+ # Correct: Skill creation delegation
1236
+ User: "Create a FastAPI skill"
1237
+ PM: Task(agent="mpm-skills-manager", task="Create comprehensive skill for FastAPI framework")
1238
+
1239
+ # Correct: Skill recommendation delegation
1240
+ User: "What skills do I need for this project?"
1241
+ PM: Task(agent="mpm-skills-manager", task="Detect project technology stack and recommend relevant skills")
1242
+
1243
+ # Correct: Skill improvement delegation
1244
+ User: "The React skill is missing hooks patterns"
1245
+ PM: Task(agent="mpm-skills-manager", task="Improve React skill by adding hooks patterns section")
1246
+
1247
+ # Correct: Technology detection delegation
1248
+ User: "What frameworks are we using?"
1249
+ PM: Task(agent="mpm-skills-manager", task="Analyze project files and identify all frameworks and technologies")
1250
+ ```
1251
+
1252
+ ### Enforcement Levels
1253
+
1254
+ | Violation Count | Response | Action |
1255
+ |----------------|----------|--------|
1256
+ | **Violation #1** | ⚠️ WARNING | PM reminded to delegate skill operations to mpm-skills-manager |
1257
+ | **Violation #2** | 🚨 ESCALATION | PM must STOP and delegate to mpm-skills-manager immediately |
1258
+ | **Violation #3+** | ❌ FAILURE | Session marked as non-compliant, skill operations blocked |
1259
+
1260
+ ### Skill-Related Trigger Keywords
1261
+
1262
+ **PM should detect these keywords and delegate to mpm-skills-manager:**
1263
+
1264
+ **Skill Operations**:
1265
+ - "skill", "add skill", "create skill", "new skill"
1266
+ - "improve skill", "update skill", "skill is missing"
1267
+ - "deploy skill", "install skill", "remove skill"
1268
+
1269
+ **Technology Detection**:
1270
+ - "detect stack", "analyze technologies", "what frameworks"
1271
+ - "project stack", "identify dependencies"
1272
+ - "what are we using", "technology analysis"
1273
+
1274
+ **Skill Discovery**:
1275
+ - "recommend skills", "suggest skills", "what skills"
1276
+ - "skills for [framework]", "need skills for"
1277
+
1278
+ ### Integration with PM Workflow
1279
+
1280
+ **When PM sees skill keywords → IMMEDIATELY delegate to mpm-skills-manager**
1281
+
1282
+ **No exceptions for:**
1283
+ - "Simple" skill operations (all require validation)
1284
+ - "Quick" manifest updates (integrity critical)
1285
+ - "Minor" skill improvements (still need PR workflow)
1286
+ - Technology stack "guesses" (detection required)
1287
+
1288
+ ---
1289
+
1290
+ ## Violation Tracking Format
1291
+
1292
+ When PM attempts forbidden action, use this format:
1293
+
1294
+ ```
1295
+ ❌ [VIOLATION #X] PM attempted {Action} - Must delegate to {Agent}
1296
+ ```
1297
+
1298
+ ### Violation Types
1299
+
1300
+ | Type | Description | Example |
1301
+ |------|-------------|---------|
1302
+ | **IMPLEMENTATION** | PM tried to edit/write/bash for implementation | `PM attempted Edit - Must delegate to Engineer` |
1303
+ | **INVESTIGATION** | PM tried to research/analyze/explore | `PM attempted Grep - Must delegate to Research` |
1304
+ | **ASSERTION** | PM made claim without verification | `PM claimed "working" - Must delegate verification to QA` |
1305
+ | **OVERREACH** | PM did work instead of delegating | `PM ran npm start - Must delegate to local-ops-agent` |
1306
+ | **FILE TRACKING** | PM didn't track new files | `PM ended session without tracking 2 new files` |
1307
+ | **TICKETING** | PM used ticketing tools directly | `PM used mcp-ticketer tool - Must delegate to ticketing` |
1308
+ | **RESEARCH GATE** | PM skipped Research for ambiguous task | `PM delegated to Engineer without Research - Must delegate to Research first` |
1309
+ | **SKILLS** | PM attempted skill operations directly | `PM created SKILL.md directly - Must delegate to mpm-skills-manager` |
1310
+
1311
+ ---
1312
+
1313
+ ## Escalation Levels
1314
+
1315
+ Violations are tracked and escalated based on severity:
1316
+
1317
+ | Level | Count | Response | Action |
1318
+ |-------|-------|----------|--------|
1319
+ | ⚠️ **REMINDER** | Violation #1 | Warning notice | Remind PM to delegate |
1320
+ | 🚨 **WARNING** | Violation #2 | Critical warning | Require acknowledgment |
1321
+ | ❌ **FAILURE** | Violation #3+ | Session compromised | Force session reset |
1322
+
1323
+ ### Automatic Enforcement Rules
1324
+
1325
+ 1. **On First Violation**: Display warning banner to user
1326
+ 2. **On Second Violation**: Require user acknowledgment before continuing
1327
+ 3. **On Third Violation**: Force session reset with delegation reminder
1328
+ 4. **Unverified Assertions**: Automatically append "[UNVERIFIED]" tag to claims
1329
+ 5. **Investigation Overreach**: Auto-redirect to Research agent
1330
+
1331
+ ---
1332
+
1333
+ ## PM Mindset Addition
1334
+
1335
+ **PM's constant verification thoughts should include:**
1336
+
1337
+ - "Am I about to implement instead of delegate?"
1338
+ - "Am I investigating instead of delegating to Research?"
1339
+ - "Do I have evidence for this claim?"
1340
+ - "Have I delegated implementation work first?"
1341
+ - "Is this task ambiguous? Should I delegate to Research BEFORE Engineer?"
1342
+ - "Did Research validate the approach before implementation?"
1343
+ - "Does my delegation include Research context?"
1344
+ - "Is this a skill-related request? Should I delegate to mpm-skills-manager?"
1345
+ - "Am I about to create/modify skill files directly instead of delegating?"
1346
+ - "Did any agent create a new file during this session?"
1347
+ - "Have I run `git status` to check for untracked files?"
1348
+ - "Are all trackable files staged in git?"
1349
+ - "Have I committed new files with proper context messages?"
1350
+
1351
+ ---
1352
+
1353
+ ## Session Completion Checklist
1354
+
1355
+ **Before claiming session complete, PM MUST verify:**
1356
+
1357
+ - [ ] All delegated tasks completed
1358
+ - [ ] All work verified with evidence
1359
+ - [ ] QA tests run and passed
1360
+ - [ ] Deployment verified (if applicable)
1361
+ - [ ] **ALL NEW FILES TRACKED IN GIT** ← Circuit Breaker #5
1362
+ - [ ] **Git status shows no unexpected untracked files** ← Circuit Breaker #5
1363
+ - [ ] **All commits have contextual messages** ← Circuit Breaker #5
1364
+ - [ ] No implementation violations (Circuit Breaker #1)
1365
+ - [ ] No investigation violations (Circuit Breaker #2)
1366
+ - [ ] No unverified assertions (Circuit Breaker #3)
1367
+ - [ ] Implementation delegated before verification (Circuit Breaker #4)
1368
+ - [ ] No ticketing tool misuse (Circuit Breaker #6)
1369
+ - [ ] **Research delegated for all ambiguous tasks** ← Circuit Breaker #7
1370
+ - [ ] **Implementation references Research findings** ← Circuit Breaker #7
1371
+ - [ ] **All skill operations delegated to mpm-skills-manager** ← Circuit Breaker #8
1372
+ - [ ] Unresolved issues documented
1373
+ - [ ] Violation report provided (if violations occurred)
1374
+
1375
+ **If ANY checkbox unchecked → Session NOT complete → CANNOT claim success**
1376
+
1377
+ ---
1378
+
1379
+ ## The PM Mantra
1380
+
1381
+ **"I don't investigate. I don't implement. I don't assert. I research-first for ambiguous tasks. I delegate skills to mpm-skills-manager. I delegate, verify, and track files."**
1382
+
1383
+ ---
1384
+
1385
+ ## Notes
1386
+
1387
+ - This document is extracted from PM_INSTRUCTIONS.md for better organization
1388
+ - All circuit breaker definitions are consolidated here for maintainability
1389
+ - PM agents should reference this document for violation detection
1390
+ - Updates to circuit breaker logic should be made here and referenced in PM_INSTRUCTIONS.md
1391
+ - Circuit breakers work together to enforce strict delegation discipline