crackerjack 0.39.9__tar.gz → 0.39.11__tar.gz

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.

Potentially problematic release.


This version of crackerjack might be problematic. Click here for more details.

Files changed (481) hide show
  1. crackerjack-0.39.11/AI-FIX-IMPLEMENTATION-AND-TEST-PLAN.md +838 -0
  2. crackerjack-0.39.11/AI-FIX-QUICK-SUMMARY.md +167 -0
  3. crackerjack-0.39.11/AI-FIX-TEST-RESULTS.md +195 -0
  4. {crackerjack-0.39.9 → crackerjack-0.39.11}/CHANGELOG.md +58 -1
  5. {crackerjack-0.39.9 → crackerjack-0.39.11}/PKG-INFO +2 -2
  6. {crackerjack-0.39.9 → crackerjack-0.39.11}/README.md +1 -1
  7. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/__main__.py +7 -4
  8. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/workflow_orchestrator.py +38 -3
  9. crackerjack-0.39.11/docs/investigation/ai-fix-flag-bug-fix.md +320 -0
  10. crackerjack-0.39.11/docs/investigation/workflow-routing-fix.md +318 -0
  11. {crackerjack-0.39.9 → crackerjack-0.39.11}/pyproject.toml +1 -1
  12. crackerjack-0.39.11/tests/test_autofix_coordinator.py +95 -0
  13. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_container.py +1 -1
  14. crackerjack-0.39.11/tests/test_main.py +66 -0
  15. crackerjack-0.39.11/tests/test_phase_coordinator.py +47 -0
  16. crackerjack-0.39.11/tests/test_workflow_orchestrator_ai_routing.py +229 -0
  17. {crackerjack-0.39.9 → crackerjack-0.39.11}/uv.lock +1 -1
  18. crackerjack-0.39.9/tests/test_autofix_coordinator.py +0 -23
  19. {crackerjack-0.39.9 → crackerjack-0.39.11}/.codespell-ignore +0 -0
  20. {crackerjack-0.39.9 → crackerjack-0.39.11}/.codespellrc +0 -0
  21. {crackerjack-0.39.9 → crackerjack-0.39.11}/.github/FUNDING.yml +0 -0
  22. {crackerjack-0.39.9 → crackerjack-0.39.11}/.gitignore +0 -0
  23. {crackerjack-0.39.9 → crackerjack-0.39.11}/.pre-commit-config.yaml +0 -0
  24. {crackerjack-0.39.9 → crackerjack-0.39.11}/AGENTS.md +0 -0
  25. {crackerjack-0.39.9 → crackerjack-0.39.11}/CLAUDE.md +0 -0
  26. {crackerjack-0.39.9 → crackerjack-0.39.11}/GEMINI.md +0 -0
  27. {crackerjack-0.39.9 → crackerjack-0.39.11}/LICENSE +0 -0
  28. {crackerjack-0.39.9 → crackerjack-0.39.11}/QWEN.md +0 -0
  29. {crackerjack-0.39.9 → crackerjack-0.39.11}/RULES.md +0 -0
  30. {crackerjack-0.39.9 → crackerjack-0.39.11}/SECURITY.md +0 -0
  31. {crackerjack-0.39.9 → crackerjack-0.39.11}/ai/AGENT-CAPABILITIES.json +0 -0
  32. {crackerjack-0.39.9 → crackerjack-0.39.11}/ai/AGENT_SELECTION.md +0 -0
  33. {crackerjack-0.39.9 → crackerjack-0.39.11}/ai/AI-REFERENCE.md +0 -0
  34. {crackerjack-0.39.9 → crackerjack-0.39.11}/ai/ERROR-PATTERNS.yaml +0 -0
  35. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/__init__.py +0 -0
  36. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/adapters/__init__.py +0 -0
  37. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/adapters/lsp_client.py +0 -0
  38. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/adapters/rust_tool_adapter.py +0 -0
  39. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/adapters/rust_tool_manager.py +0 -0
  40. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/adapters/skylos_adapter.py +0 -0
  41. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/adapters/zuban_adapter.py +0 -0
  42. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/__init__.py +0 -0
  43. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/architect_agent.py +0 -0
  44. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/base.py +0 -0
  45. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/claude_code_bridge.py +0 -0
  46. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/coordinator.py +0 -0
  47. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/documentation_agent.py +0 -0
  48. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/dry_agent.py +0 -0
  49. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/enhanced_coordinator.py +0 -0
  50. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/enhanced_proactive_agent.py +0 -0
  51. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/formatting_agent.py +0 -0
  52. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/import_optimization_agent.py +0 -0
  53. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/performance_agent.py +0 -0
  54. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/performance_helpers.py +0 -0
  55. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/proactive_agent.py +0 -0
  56. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/refactoring_agent.py +0 -0
  57. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/refactoring_helpers.py +0 -0
  58. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/security_agent.py +0 -0
  59. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/semantic_agent.py +0 -0
  60. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/semantic_helpers.py +0 -0
  61. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/test_creation_agent.py +0 -0
  62. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/test_specialist_agent.py +0 -0
  63. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/agents/tracker.py +0 -0
  64. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/api.py +0 -0
  65. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/cli/__init__.py +0 -0
  66. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/cli/cache_handlers.py +0 -0
  67. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/cli/cache_handlers_enhanced.py +0 -0
  68. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/cli/facade.py +0 -0
  69. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/cli/handlers.py +0 -0
  70. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/cli/interactive.py +0 -0
  71. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/cli/options.py +0 -0
  72. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/cli/semantic_handlers.py +0 -0
  73. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/cli/utils.py +0 -0
  74. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/code_cleaner.py +0 -0
  75. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/config/__init__.py +0 -0
  76. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/config/global_lock_config.py +0 -0
  77. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/config/hooks.py +0 -0
  78. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/__init__.py +0 -0
  79. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/async_workflow_orchestrator.py +0 -0
  80. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/autofix_coordinator.py +0 -0
  81. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/container.py +0 -0
  82. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/enhanced_container.py +0 -0
  83. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/file_lifecycle.py +0 -0
  84. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/performance.py +0 -0
  85. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/performance_monitor.py +0 -0
  86. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/phase_coordinator.py +0 -0
  87. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/proactive_workflow.py +0 -0
  88. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/resource_manager.py +0 -0
  89. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/service_watchdog.py +0 -0
  90. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/session_coordinator.py +0 -0
  91. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/timeout_manager.py +0 -0
  92. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/core/websocket_lifecycle.py +0 -0
  93. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/docs/INDEX.md +0 -0
  94. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/docs/generated/api/API_REFERENCE.md +0 -0
  95. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/docs/generated/api/CLI_REFERENCE.md +0 -0
  96. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/docs/generated/api/CROSS_REFERENCES.md +0 -0
  97. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/docs/generated/api/PROTOCOLS.md +0 -0
  98. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/docs/generated/api/SERVICES.md +0 -0
  99. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/documentation/__init__.py +0 -0
  100. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/documentation/ai_templates.py +0 -0
  101. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/documentation/dual_output_generator.py +0 -0
  102. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/documentation/mkdocs_integration.py +0 -0
  103. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/documentation/reference_generator.py +0 -0
  104. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/dynamic_config.py +0 -0
  105. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/errors.py +0 -0
  106. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/executors/__init__.py +0 -0
  107. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/executors/async_hook_executor.py +0 -0
  108. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/executors/cached_hook_executor.py +0 -0
  109. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/executors/hook_executor.py +0 -0
  110. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/executors/hook_lock_manager.py +0 -0
  111. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/executors/individual_hook_executor.py +0 -0
  112. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/executors/lsp_aware_hook_executor.py +0 -0
  113. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/executors/tool_proxy.py +0 -0
  114. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/hooks/lsp_hook.py +0 -0
  115. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/intelligence/__init__.py +0 -0
  116. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/intelligence/adaptive_learning.py +0 -0
  117. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/intelligence/agent_orchestrator.py +0 -0
  118. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/intelligence/agent_registry.py +0 -0
  119. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/intelligence/agent_selector.py +0 -0
  120. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/intelligence/integration.py +0 -0
  121. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/interactive.py +0 -0
  122. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/managers/__init__.py +0 -0
  123. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/managers/async_hook_manager.py +0 -0
  124. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/managers/hook_manager.py +0 -0
  125. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/managers/publish_manager.py +0 -0
  126. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/managers/test_command_builder.py +0 -0
  127. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/managers/test_executor.py +0 -0
  128. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/managers/test_manager.py +0 -0
  129. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/managers/test_manager_backup.py +0 -0
  130. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/managers/test_progress.py +0 -0
  131. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/__init__.py +0 -0
  132. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/cache.py +0 -0
  133. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/client_runner.py +0 -0
  134. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/context.py +0 -0
  135. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/dashboard.py +0 -0
  136. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/enhanced_progress_monitor.py +0 -0
  137. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/enhanced_progress_monitor.tcss +0 -0
  138. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/file_monitor.py +0 -0
  139. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/progress_components.py +0 -0
  140. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/progress_monitor.py +0 -0
  141. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/progress_monitor.tcss +0 -0
  142. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/rate_limiter.py +0 -0
  143. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/server.py +0 -0
  144. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/server_core.py +0 -0
  145. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/service_watchdog.py +0 -0
  146. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/state.py +0 -0
  147. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/task_manager.py +0 -0
  148. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/__init__.py +0 -0
  149. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/core_tools.py +0 -0
  150. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/error_analyzer.py +0 -0
  151. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/execution_tools.py +0 -0
  152. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/execution_tools_backup.py +0 -0
  153. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/intelligence_tool_registry.py +0 -0
  154. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/intelligence_tools.py +0 -0
  155. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/monitoring_tools.py +0 -0
  156. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/monitoring_tools.py.backup +0 -0
  157. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/proactive_tools.py +0 -0
  158. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/progress_tools.py +0 -0
  159. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/semantic_tools.py +0 -0
  160. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/utility_tools.py +0 -0
  161. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/tools/workflow_executor.py +0 -0
  162. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/websocket/__init__.py +0 -0
  163. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/websocket/app.py +0 -0
  164. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/websocket/endpoints.py +0 -0
  165. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/websocket/jobs.py +0 -0
  166. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/websocket/monitoring_endpoints.py +0 -0
  167. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/websocket/server.py +0 -0
  168. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/websocket/websocket_handler.py +0 -0
  169. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mcp/websocket_server.py +0 -0
  170. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mixins/__init__.py +0 -0
  171. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/mixins/error_handling.py +0 -0
  172. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/models/__init__.py +0 -0
  173. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/models/config.py +0 -0
  174. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/models/config_adapter.py +0 -0
  175. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/models/protocols.py +0 -0
  176. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/models/resource_protocols.py +0 -0
  177. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/models/semantic_models.py +0 -0
  178. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/models/task.py +0 -0
  179. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/monitoring/__init__.py +0 -0
  180. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/monitoring/ai_agent_watchdog.py +0 -0
  181. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/monitoring/metrics_collector.py +0 -0
  182. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/monitoring/regression_prevention.py +0 -0
  183. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/monitoring/websocket_server.py +0 -0
  184. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/orchestration/__init__.py +0 -0
  185. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/orchestration/advanced_orchestrator.py +0 -0
  186. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/orchestration/coverage_improvement.py +0 -0
  187. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/orchestration/execution_strategies.py +0 -0
  188. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/orchestration/test_progress_streamer.py +0 -0
  189. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/plugins/__init__.py +0 -0
  190. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/plugins/base.py +0 -0
  191. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/plugins/hooks.py +0 -0
  192. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/plugins/loader.py +0 -0
  193. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/plugins/managers.py +0 -0
  194. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/py313.py +0 -0
  195. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/security/__init__.py +0 -0
  196. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/security/audit.py +0 -0
  197. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/__init__.py +0 -0
  198. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/anomaly_detector.py +0 -0
  199. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/api_extractor.py +0 -0
  200. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/backup_service.py +0 -0
  201. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/bounded_status_operations.py +0 -0
  202. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/cache.py +0 -0
  203. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/changelog_automation.py +0 -0
  204. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/config.py +0 -0
  205. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/config_integrity.py +0 -0
  206. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/config_merge.py +0 -0
  207. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/config_template.py +0 -0
  208. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/contextual_ai_assistant.py +0 -0
  209. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/coverage_badge_service.py +0 -0
  210. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/coverage_ratchet.py +0 -0
  211. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/debug.py +0 -0
  212. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/dependency_analyzer.py +0 -0
  213. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/dependency_monitor.py +0 -0
  214. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/documentation_generator.py +0 -0
  215. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/documentation_service.py +0 -0
  216. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/embeddings.py +0 -0
  217. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/enhanced_filesystem.py +0 -0
  218. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/enterprise_optimizer.py +0 -0
  219. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/error_pattern_analyzer.py +0 -0
  220. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/file_hasher.py +0 -0
  221. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/filesystem.py +0 -0
  222. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/git.py +0 -0
  223. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/health_metrics.py +0 -0
  224. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/heatmap_generator.py +0 -0
  225. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/initialization.py +0 -0
  226. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/input_validator.py +0 -0
  227. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/intelligent_commit.py +0 -0
  228. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/log_manager.py +0 -0
  229. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/logging.py +0 -0
  230. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/lsp_client.py +0 -0
  231. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/memory_optimizer.py +0 -0
  232. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/metrics.py +0 -0
  233. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/parallel_executor.py +0 -0
  234. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/pattern_cache.py +0 -0
  235. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/pattern_detector.py +0 -0
  236. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/performance_benchmarks.py +0 -0
  237. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/performance_cache.py +0 -0
  238. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/performance_monitor.py +0 -0
  239. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/predictive_analytics.py +0 -0
  240. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/quality_baseline.py +0 -0
  241. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/quality_baseline_enhanced.py +0 -0
  242. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/quality_intelligence.py +0 -0
  243. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/regex_patterns.py +0 -0
  244. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/regex_utils.py +0 -0
  245. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/secure_path_utils.py +0 -0
  246. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/secure_status_formatter.py +0 -0
  247. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/secure_subprocess.py +0 -0
  248. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/security.py +0 -0
  249. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/security_logger.py +0 -0
  250. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/server_manager.py +0 -0
  251. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/smart_scheduling.py +0 -0
  252. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/status_authentication.py +0 -0
  253. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/status_security_manager.py +0 -0
  254. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/terminal_utils.py +0 -0
  255. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/thread_safe_status_collector.py +0 -0
  256. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/tool_version_service.py +0 -0
  257. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/unified_config.py +0 -0
  258. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/validation_rate_limiter.py +0 -0
  259. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/vector_store.py +0 -0
  260. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/version_analyzer.py +0 -0
  261. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/version_checker.py +0 -0
  262. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/websocket_resource_limiter.py +0 -0
  263. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/services/zuban_lsp_service.py +0 -0
  264. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/slash_commands/__init__.py +0 -0
  265. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/slash_commands/init.md +0 -0
  266. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/slash_commands/run.md +0 -0
  267. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/slash_commands/status.md +0 -0
  268. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/tools/__init__.py +0 -0
  269. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/tools/fix_terminal.sh +0 -0
  270. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/tools/validate_input_validator_patterns.py +0 -0
  271. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/tools/validate_regex_patterns.py +0 -0
  272. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/ui/__init__.py +0 -0
  273. {crackerjack-0.39.9 → crackerjack-0.39.11}/crackerjack/ui/server_panels.py +0 -0
  274. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/ADVANCED-FEATURES.md +0 -0
  275. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/DOCUMENTATION_AUDIT_2025-10-03.md +0 -0
  276. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/FUTURE-ENHANCEMENTS.md +0 -0
  277. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/PHASE2-COMPLETION-SUMMARY.md +0 -0
  278. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/PHASE2-CROSS-REFERENCE-ANALYSIS.md +0 -0
  279. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/PHASE3-COMPLETION-REPORT.md +0 -0
  280. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/PHASE3-OPTIMIZATION-PLAN.md +0 -0
  281. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/PYTORCH-COMPATIBILITY-FIX.md +0 -0
  282. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/SEMANTIC-SEARCH-IMPLEMENTATION.md +0 -0
  283. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/architecture/API_REFERENCE.md +0 -0
  284. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/architecture/ARCHITECTURE.md +0 -0
  285. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/archive/CONFIG_MANAGEMENT_REPLACEMENT_PLAN.md +0 -0
  286. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/archive/CONFIG_MERGE_REMOVAL_PLAN.md +0 -0
  287. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/archive/DOCUMENTATION_REORGANIZATION_PLAN.md +0 -0
  288. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/complexipy-refactoring-summary.md +0 -0
  289. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/crackerjack-run-implementation-plan.md +0 -0
  290. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/crackerjack-run-workflow-audit.md +0 -0
  291. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/development/IDE-SETUP.md +0 -0
  292. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/development/RUST_TOOLING_FRAMEWORK.md +0 -0
  293. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/phase-1-completion-summary.md +0 -0
  294. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/phase-2-completion-summary.md +0 -0
  295. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/phase-3-completion-summary.md +0 -0
  296. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/phase-4-completion-summary.md +0 -0
  297. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/phase-5-completion-summary.md +0 -0
  298. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/phase-5-implementation-plan.md +0 -0
  299. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/phase-5-task-5.1-completion-summary.md +0 -0
  300. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/COMPLEXITY_REFACTORING_PLAN.md +0 -0
  301. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/COVERAGE_BADGE_IMPLEMENTATION_PLAN.md +0 -0
  302. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/CURRENT_IMPLEMENTATION_STATUS.md +0 -0
  303. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/DOCUMENTATION_SYSTEM_ARCHITECTURE.md +0 -0
  304. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/EXPERIMENTAL-EVALUATION.md +0 -0
  305. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/FEATURE_IMPLEMENTATION_PLAN.md +0 -0
  306. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/RESILIENT_HOOK_ARCHITECTURE_IMPLEMENTATION_SUMMARY.md +0 -0
  307. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/RESILIENT_HOOK_ARCHITECTURE_PLAN.md +0 -0
  308. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/STAGE_HEADERS_IMPLEMENTATION_PLAN.md +0 -0
  309. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/TIMEOUT_ARCHITECTURE_SOLUTION.md +0 -0
  310. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/TYPE_ANNOTATION_FIXING_PLAN.md +0 -0
  311. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/UVXUSAGE.md +0 -0
  312. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/ZUBAN_LSP_INTEGRATION_PLAN.md +0 -0
  313. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/planning/ZUBAN_TOML_PARSING_BUG_ANALYSIS.md +0 -0
  314. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/precommit-handling/CLEANUP_SUMMARY.md +0 -0
  315. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/precommit-handling/CRACKERJACK_PRECOMMIT_HANDLING_IMPLEMENTATION_SUMMARY.md +0 -0
  316. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/precommit-handling/FINAL_PRECOMMIT_HANDLING_VERIFICATION.md +0 -0
  317. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/precommit-handling/PRECOMMIT_HANDLING_SUMMARY.md +0 -0
  318. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/precommit-handling/README.md +0 -0
  319. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/security/INPUT_VALIDATOR_SECURITY_AUDIT.md +0 -0
  320. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/security/SECURITY-AUDIT.md +0 -0
  321. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/security/SECURITY_AUDIT_REPORT.md +0 -0
  322. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/security/SECURITY_AUDIT_STATUS_DISCLOSURE.md +0 -0
  323. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/security/SECURITY_HARDENING_REPORT.md +0 -0
  324. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/security/SECURITY_SUBPROCESS_HARDENING_REPORT.md +0 -0
  325. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/systems/BACKUP_SYSTEM.md +0 -0
  326. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/systems/CACHING_SYSTEM.md +0 -0
  327. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/systems/DASHBOARD_ARCHITECTURE.md +0 -0
  328. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/systems/MCP_INTEGRATION.md +0 -0
  329. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/systems/MONITORING_INTEGRATION.md +0 -0
  330. {crackerjack-0.39.9 → crackerjack-0.39.11}/docs/systems/UNIFIED_MONITORING_ARCHITECTURE.md +0 -0
  331. {crackerjack-0.39.9 → crackerjack-0.39.11}/example.mcp.json +0 -0
  332. {crackerjack-0.39.9 → crackerjack-0.39.11}/mypy.ini +0 -0
  333. {crackerjack-0.39.9 → crackerjack-0.39.11}/scripts/__init__.py +0 -0
  334. {crackerjack-0.39.9 → crackerjack-0.39.11}/scripts/integrate_resource_management.py +0 -0
  335. {crackerjack-0.39.9 → crackerjack-0.39.11}/scripts/performance_benchmark.py +0 -0
  336. {crackerjack-0.39.9 → crackerjack-0.39.11}/templates/api_reference.md.template +0 -0
  337. {crackerjack-0.39.9 → crackerjack-0.39.11}/templates/changelog_entry.md.template +0 -0
  338. {crackerjack-0.39.9 → crackerjack-0.39.11}/templates/user_guide.md.template +0 -0
  339. {crackerjack-0.39.9 → crackerjack-0.39.11}/test_docs_site/site/docs/api-reference.md +0 -0
  340. {crackerjack-0.39.9 → crackerjack-0.39.11}/test_docs_site/site/docs/getting-started.md +0 -0
  341. {crackerjack-0.39.9 → crackerjack-0.39.11}/test_docs_site/site/docs/index.md +0 -0
  342. {crackerjack-0.39.9 → crackerjack-0.39.11}/test_docs_site/site/docs/stylesheets/extra.css +0 -0
  343. {crackerjack-0.39.9 → crackerjack-0.39.11}/test_docs_site/site/mkdocs.yml +0 -0
  344. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/__init__.py +0 -0
  345. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/base_test.py +0 -0
  346. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/conftest.py +0 -0
  347. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/coverage.json +0 -0
  348. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/data/__init__.py +0 -0
  349. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/data/comments_sample.txt +0 -0
  350. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/data/docstrings_sample.txt +0 -0
  351. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/data/expected_comments_sample.txt +0 -0
  352. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/data/init.py +0 -0
  353. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/docs/HEALTH_METRICS_TESTING_SUMMARY.md +0 -0
  354. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/docs/TEST_COVERAGE_PLAN.md +0 -0
  355. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/docs/TEST_IMPLEMENTATION_PLAN.md +0 -0
  356. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/run_tests.py +0 -0
  357. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/scripts/__init__.py +0 -0
  358. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/scripts/agent_audit_report.py +0 -0
  359. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/scripts/run_test_suite.py +0 -0
  360. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test___main__.py +0 -0
  361. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_ai_agent_workflow.py +0 -0
  362. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_ai_optimized_documentation.py +0 -0
  363. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_ai_templates.py +0 -0
  364. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_anomaly_detector_service.py +0 -0
  365. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_api.py +0 -0
  366. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_api_comprehensive.py +0 -0
  367. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_async_hook_executor.py +0 -0
  368. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_async_hook_executor_comprehensive.py +0 -0
  369. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_async_workflow_orchestrator.py +0 -0
  370. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_changelog_generation.py +0 -0
  371. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_cli/__init__.py +0 -0
  372. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_cli/test_global_lock_options.py +0 -0
  373. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_cli_semantic_naming.py +0 -0
  374. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_code_cleaner.py +0 -0
  375. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_code_cleaner_comprehensive.py +0 -0
  376. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_coordinator_performance.py +0 -0
  377. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_core_autofix_coordinator.py +0 -0
  378. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_core_comprehensive.py +0 -0
  379. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_core_coverage.py +0 -0
  380. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_core_enhanced_container.py +0 -0
  381. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_core_modules.py +0 -0
  382. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_core_performance.py +0 -0
  383. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_documentation_agent (1).py +0 -0
  384. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_documentation_agent_simple.py +0 -0
  385. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_dual_output_generator.py +0 -0
  386. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_dynamic_config.py +0 -0
  387. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_dynamic_config_coverage.py +0 -0
  388. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_end_to_end_integration.py +0 -0
  389. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_enhanced_container.py +0 -0
  390. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_enhanced_filesystem.py +0 -0
  391. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_enhanced_filesystem_comprehensive.py +0 -0
  392. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_enhanced_filesystem_coverage.py +0 -0
  393. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_errors.py +0 -0
  394. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_execution_speed_optimization.py +0 -0
  395. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_executors/__init__.py +0 -0
  396. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_executors/test_lock_integration.py +0 -0
  397. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_fast_hooks_behavior.py +0 -0
  398. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_filesystem_coverage.py +0 -0
  399. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_final_validation.py +0 -0
  400. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_global_lock_config.py +0 -0
  401. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_hook_executor_comprehensive.py +0 -0
  402. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_hook_lock_manager.py +0 -0
  403. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_hook_manager_comprehensive.py +0 -0
  404. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_hook_manager_simple.py +0 -0
  405. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_import_coverage_consolidated.py +0 -0
  406. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_initialization_precommit_integration.py +0 -0
  407. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_initialization_service.py +0 -0
  408. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_input_validation.py +0 -0
  409. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_intelligence_system.py +0 -0
  410. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_interactive.py +0 -0
  411. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_large_modules_coverage.py +0 -0
  412. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_main_entry_coverage.py +0 -0
  413. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_main_module.py +0 -0
  414. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_managers_consolidated.py +0 -0
  415. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_mcp_progress_monitor.py +0 -0
  416. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_mcp_server.py +0 -0
  417. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_mkdocs_integration.py +0 -0
  418. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_models_comprehensive.py +0 -0
  419. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_models_config_adapter_coverage.py +0 -0
  420. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_models_focused.py +0 -0
  421. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_models_task_coverage.py +0 -0
  422. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_modernized_code.py +0 -0
  423. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_performance_agent (1).py +0 -0
  424. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_performance_agent.py +0 -0
  425. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_performance_agent_enhanced.py +0 -0
  426. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_performance_agent_simple.py +0 -0
  427. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_performance_benchmarks_focused.py.bak +0 -0
  428. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_performance_helpers.py +0 -0
  429. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_performance_monitor.py +0 -0
  430. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_phase_coordinator_simple.py +0 -0
  431. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_plugins_coverage.py +0 -0
  432. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_proactive_agent.py +0 -0
  433. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_proactive_agent_system.py +0 -0
  434. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_proactive_workflow.py +0 -0
  435. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_protocol_compliance.py +0 -0
  436. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_publish_manager_coverage.py +0 -0
  437. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_py313.py +0 -0
  438. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_pytest_features.py +0 -0
  439. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_refactoring_agent.py +0 -0
  440. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_reference_generator.py +0 -0
  441. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_regex_patterns.py +0 -0
  442. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_resource_cleanup_integration.py +0 -0
  443. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_resource_manager.py +0 -0
  444. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_secure_path_utils.py +0 -0
  445. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_secure_status_formatter.py +0 -0
  446. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_security_audit.py +0 -0
  447. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_security_hardening.py +0 -0
  448. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_security_integration.py +0 -0
  449. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_server_panels.py +0 -0
  450. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_service_watchdog.py +0 -0
  451. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_services_coverage.py +0 -0
  452. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_session_coordinator.py +0 -0
  453. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_session_coordinator_comprehensive.py +0 -0
  454. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_session_coordinator_coverage.py +0 -0
  455. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_simple_tool_version_service.py +0 -0
  456. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_simple_workflow.py +0 -0
  457. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_skip_hooks_functionality.py +0 -0
  458. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_skip_hooks_simple.py +0 -0
  459. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_stage_workflow_execution_order.py +0 -0
  460. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_structured_errors.py +0 -0
  461. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_structured_logging.py +0 -0
  462. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_syntax_validation.py +0 -0
  463. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_terminal_restoration.py +0 -0
  464. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_terminal_state.py +0 -0
  465. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_timeout_manager.py +0 -0
  466. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_timeout_system.py +0 -0
  467. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_unified_api.py +0 -0
  468. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_unified_config.py +0 -0
  469. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_unified_monitoring_dashboard.py +0 -0
  470. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_validate_input_validator_patterns.py +0 -0
  471. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_validate_regex_patterns.py +0 -0
  472. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_validate_regex_patterns_tool.py +0 -0
  473. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_version_analyzer.py +0 -0
  474. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_version_bump_analyzer.py +0 -0
  475. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_websocket_endpoints.py +0 -0
  476. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_websocket_lifecycle.py +0 -0
  477. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_workflow_fast_hooks.py +0 -0
  478. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_workflow_integration.py +0 -0
  479. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_workflow_orchestrator.py +0 -0
  480. {crackerjack-0.39.9 → crackerjack-0.39.11}/tests/test_workflow_pipeline.py +0 -0
  481. {crackerjack-0.39.9 → crackerjack-0.39.11}/tools/validate_regex_patterns_standalone.py +0 -0
@@ -0,0 +1,838 @@
1
+ # Crackerjack AI Auto-Fix: Comprehensive Implementation & Test Plan
2
+
3
+ **Date:** 2025-10-03
4
+ **Status:** 🔧 Implementation Complete - Testing Required
5
+ **Priority:** CRITICAL
6
+
7
+ ______________________________________________________________________
8
+
9
+ ## Executive Summary
10
+
11
+ The `--ai-fix` flag was completely broken due to **TWO separate bugs**:
12
+
13
+ 1. **Parameter Passing Bug**: `_setup_debug_and_verbose_flags()` in `__main__.py` wasn't accepting the `ai_fix` parameter
14
+ 1. **Workflow Routing Bug**: THREE workflow functions in `workflow_orchestrator.py` weren't checking for AI agent
15
+
16
+ **Both bugs have been fixed.** This document provides a comprehensive testing plan to verify the fixes work correctly before publishing.
17
+
18
+ ______________________________________________________________________
19
+
20
+ ## Bugs Fixed (Implementation Complete ✅)
21
+
22
+ ### Bug #1: Parameter Passing (FIXED)
23
+
24
+ **File:** `crackerjack/__main__.py`
25
+ **Function:** `_setup_debug_and_verbose_flags()` (lines 476-495)
26
+
27
+ **Issue:**
28
+
29
+ - Function didn't accept `ai_fix` as parameter
30
+ - Hardcoded `ai_fix = False` on every call
31
+ - Call site didn't pass user's `--ai-fix` value
32
+
33
+ **Fix Applied:**
34
+
35
+ ```python
36
+ # Before
37
+ def _setup_debug_and_verbose_flags(
38
+ ai_debug: bool, debug: bool, verbose: bool, options: t.Any
39
+ ) -> tuple[bool, bool]:
40
+ ai_fix = False # BUG!
41
+ # ...
42
+
43
+
44
+ # After
45
+ def _setup_debug_and_verbose_flags(
46
+ ai_fix: bool, ai_debug: bool, debug: bool, verbose: bool, options: t.Any
47
+ ) -> tuple[bool, bool]:
48
+ # Preserve user's ai_fix flag
49
+ if ai_debug:
50
+ ai_fix = True # ai_debug implies ai_fix
51
+ # ...
52
+ ```
53
+
54
+ **Call Site Fix (Line 1466):**
55
+
56
+ ```python
57
+ # Before
58
+ ai_fix, verbose = _setup_debug_and_verbose_flags(ai_debug, debug, verbose, options)
59
+
60
+ # After
61
+ ai_fix, verbose = _setup_debug_and_verbose_flags(
62
+ ai_fix, ai_debug, debug, verbose, options
63
+ )
64
+ ```
65
+
66
+ ______________________________________________________________________
67
+
68
+ ### Bug #2: Workflow Routing (FIXED)
69
+
70
+ **File:** `crackerjack/core/workflow_orchestrator.py`
71
+
72
+ **THREE functions weren't checking for AI agent:**
73
+
74
+ #### 2a. Default Workflow (FIXED)
75
+
76
+ **Function:** `_execute_standard_hooks_workflow_monitored()` (lines 1933-1967)
77
+ **Used when:** No flags specified (most common usage)
78
+
79
+ **Fix Applied:**
80
+
81
+ - Added `iteration = self._start_iteration_tracking(options)`
82
+ - Early AI agent check when fast hooks fail
83
+ - Always delegate to `_handle_ai_workflow_completion()` at the end
84
+
85
+ #### 2b. Fast Hooks Workflow (FIXED)
86
+
87
+ **Function:** `_run_fast_hooks_phase_monitored()` (lines 1860-1875)
88
+ **Used when:** `--fast` flag specified
89
+
90
+ **Fix Applied:**
91
+
92
+ - Added `iteration = self._start_iteration_tracking(options)`
93
+ - Check `options.ai_agent` and delegate to `_handle_ai_workflow_completion()` if True
94
+
95
+ #### 2c. Comprehensive Hooks Workflow (FIXED)
96
+
97
+ **Function:** `_run_comprehensive_hooks_phase_monitored()` (lines 1877-1892)
98
+ **Used when:** `--comp` flag specified
99
+
100
+ **Fix Applied:**
101
+
102
+ - Added `iteration = self._start_iteration_tracking(options)`
103
+ - Check `options.ai_agent` and delegate to `_handle_ai_workflow_completion()` if True
104
+
105
+ **Note:** `_execute_test_workflow()` already had proper AI agent checking ✅
106
+
107
+ ______________________________________________________________________
108
+
109
+ ## Testing Strategy
110
+
111
+ ### Phase 1: Unit Tests (Isolated Function Behavior)
112
+
113
+ **Goal:** Verify each fixed function works correctly in isolation
114
+
115
+ #### Test 1.1: `_setup_debug_and_verbose_flags()` Unit Test
116
+
117
+ **File:** `tests/test_main.py` (create if doesn't exist)
118
+
119
+ ```python
120
+ import pytest
121
+ from crackerjack.__main__ import _setup_debug_and_verbose_flags
122
+
123
+
124
+ class MockOptions:
125
+ verbose = False
126
+
127
+
128
+ def test_setup_debug_flags_preserves_ai_fix_true():
129
+ """Test that ai_fix=True is preserved when passed."""
130
+ options = MockOptions()
131
+
132
+ # ai_fix=True should be preserved
133
+ ai_fix, verbose = _setup_debug_and_verbose_flags(
134
+ ai_fix=True, ai_debug=False, debug=False, verbose=False, options=options
135
+ )
136
+
137
+ assert ai_fix is True, "ai_fix=True should be preserved"
138
+
139
+
140
+ def test_setup_debug_flags_preserves_ai_fix_false():
141
+ """Test that ai_fix=False is preserved when passed."""
142
+ options = MockOptions()
143
+
144
+ # ai_fix=False should be preserved
145
+ ai_fix, verbose = _setup_debug_and_verbose_flags(
146
+ ai_fix=False, ai_debug=False, debug=False, verbose=False, options=options
147
+ )
148
+
149
+ assert ai_fix is False, "ai_fix=False should be preserved"
150
+
151
+
152
+ def test_setup_debug_flags_ai_debug_implies_ai_fix():
153
+ """Test that ai_debug=True forces ai_fix=True."""
154
+ options = MockOptions()
155
+
156
+ # ai_debug=True should override ai_fix to True
157
+ ai_fix, verbose = _setup_debug_and_verbose_flags(
158
+ ai_fix=False, # Even if False
159
+ ai_debug=True, # This should force it to True
160
+ debug=False,
161
+ verbose=False,
162
+ options=options,
163
+ )
164
+
165
+ assert ai_fix is True, "ai_debug=True should force ai_fix=True"
166
+ assert verbose is True, "ai_debug=True should set verbose=True"
167
+ assert options.verbose is True, "ai_debug=True should set options.verbose=True"
168
+
169
+
170
+ def test_setup_debug_flags_debug_sets_verbose():
171
+ """Test that debug=True sets verbose=True."""
172
+ options = MockOptions()
173
+
174
+ ai_fix, verbose = _setup_debug_and_verbose_flags(
175
+ ai_fix=False, ai_debug=False, debug=True, verbose=False, options=options
176
+ )
177
+
178
+ assert verbose is True, "debug=True should set verbose=True"
179
+ assert options.verbose is True, "debug=True should set options.verbose=True"
180
+ ```
181
+
182
+ #### Test 1.2: Workflow Routing Unit Tests
183
+
184
+ **File:** `tests/test_workflow_orchestrator_ai_routing.py` (create new)
185
+
186
+ ```python
187
+ import pytest
188
+ from unittest.mock import Mock, AsyncMock, patch
189
+ from crackerjack.core.workflow_orchestrator import WorkflowOrchestrator
190
+ from crackerjack.cli.options import Options
191
+
192
+
193
+ @pytest.fixture
194
+ def mock_options_with_ai_agent():
195
+ """Options with AI agent enabled."""
196
+ options = Mock(spec=Options)
197
+ options.ai_agent = True
198
+ options.ai_fix = True
199
+ options.test = False
200
+ options.fast = False
201
+ options.comp = False
202
+ options.clean = False
203
+ return options
204
+
205
+
206
+ @pytest.fixture
207
+ def mock_options_without_ai_agent():
208
+ """Options with AI agent disabled."""
209
+ options = Mock(spec=Options)
210
+ options.ai_agent = False
211
+ options.ai_fix = False
212
+ options.test = False
213
+ options.fast = False
214
+ options.comp = False
215
+ options.clean = False
216
+ return options
217
+
218
+
219
+ @pytest.fixture
220
+ def orchestrator():
221
+ """Create WorkflowOrchestrator instance with minimal dependencies."""
222
+ with patch("crackerjack.core.workflow_orchestrator.Config"):
223
+ with patch("crackerjack.core.workflow_orchestrator.Console"):
224
+ orch = WorkflowOrchestrator()
225
+ orch.logger = Mock()
226
+ orch.console = Mock()
227
+ orch._quality_intelligence = None
228
+ return orch
229
+
230
+
231
+ class TestStandardWorkflowAIRouting:
232
+ """Test that standard workflow checks for AI agent."""
233
+
234
+ @pytest.mark.asyncio
235
+ async def test_standard_workflow_calls_ai_completion_when_ai_agent_enabled(
236
+ self, orchestrator, mock_options_with_ai_agent
237
+ ):
238
+ """Standard workflow should delegate to AI completion handler when ai_agent=True."""
239
+ workflow_id = "test_workflow"
240
+
241
+ # Mock the workflow components
242
+ with patch.object(orchestrator, "_start_iteration_tracking", return_value=1):
243
+ with patch.object(orchestrator, "_update_hooks_status_running"):
244
+ with patch.object(
245
+ orchestrator,
246
+ "_execute_monitored_fast_hooks_phase",
247
+ return_value=False,
248
+ ):
249
+ with patch.object(orchestrator, "_handle_hooks_completion"):
250
+ with patch.object(
251
+ orchestrator,
252
+ "_handle_ai_workflow_completion",
253
+ new_callable=AsyncMock,
254
+ ) as mock_ai_completion:
255
+ mock_ai_completion.return_value = True
256
+
257
+ # Execute standard workflow
258
+ result = await orchestrator._execute_standard_hooks_workflow_monitored(
259
+ mock_options_with_ai_agent, workflow_id
260
+ )
261
+
262
+ # Verify AI completion handler was called
263
+ mock_ai_completion.assert_called_once()
264
+ call_args = mock_ai_completion.call_args
265
+ assert call_args[0][0] == mock_options_with_ai_agent
266
+ assert call_args[0][1] == 1 # iteration
267
+ assert result is True
268
+
269
+ @pytest.mark.asyncio
270
+ async def test_standard_workflow_returns_directly_when_ai_agent_disabled(
271
+ self, orchestrator, mock_options_without_ai_agent
272
+ ):
273
+ """Standard workflow should return directly when ai_agent=False and hooks fail."""
274
+ workflow_id = "test_workflow"
275
+
276
+ # Mock the workflow components
277
+ with patch.object(orchestrator, "_start_iteration_tracking", return_value=1):
278
+ with patch.object(orchestrator, "_update_hooks_status_running"):
279
+ with patch.object(
280
+ orchestrator,
281
+ "_execute_monitored_fast_hooks_phase",
282
+ return_value=False,
283
+ ):
284
+ with patch.object(orchestrator, "_handle_hooks_completion"):
285
+ with patch.object(
286
+ orchestrator,
287
+ "_handle_ai_workflow_completion",
288
+ new_callable=AsyncMock,
289
+ ) as mock_ai_completion:
290
+ # Execute standard workflow
291
+ result = await orchestrator._execute_standard_hooks_workflow_monitored(
292
+ mock_options_without_ai_agent, workflow_id
293
+ )
294
+
295
+ # Should return False without calling AI completion
296
+ # (because ai_agent=False and fast hooks failed)
297
+ assert result is False
298
+ mock_ai_completion.assert_not_called()
299
+
300
+
301
+ class TestFastWorkflowAIRouting:
302
+ """Test that fast workflow checks for AI agent."""
303
+
304
+ @pytest.mark.asyncio
305
+ async def test_fast_workflow_delegates_to_ai_completion_when_enabled(
306
+ self, orchestrator, mock_options_with_ai_agent
307
+ ):
308
+ """Fast workflow should delegate to AI completion when ai_agent=True."""
309
+ workflow_id = "test_workflow"
310
+
311
+ with patch.object(orchestrator, "_start_iteration_tracking", return_value=1):
312
+ with patch.object(
313
+ orchestrator, "_run_fast_hooks_phase", return_value=False
314
+ ):
315
+ with patch.object(
316
+ orchestrator,
317
+ "_handle_ai_workflow_completion",
318
+ new_callable=AsyncMock,
319
+ ) as mock_ai_completion:
320
+ mock_ai_completion.return_value = True
321
+
322
+ result = await orchestrator._run_fast_hooks_phase_monitored(
323
+ mock_options_with_ai_agent, workflow_id
324
+ )
325
+
326
+ mock_ai_completion.assert_called_once()
327
+ call_args = mock_ai_completion.call_args
328
+ assert call_args[0][0] == mock_options_with_ai_agent
329
+ assert result is True
330
+
331
+
332
+ class TestComprehensiveWorkflowAIRouting:
333
+ """Test that comprehensive workflow checks for AI agent."""
334
+
335
+ @pytest.mark.asyncio
336
+ async def test_comp_workflow_delegates_to_ai_completion_when_enabled(
337
+ self, orchestrator, mock_options_with_ai_agent
338
+ ):
339
+ """Comprehensive workflow should delegate to AI completion when ai_agent=True."""
340
+ workflow_id = "test_workflow"
341
+
342
+ with patch.object(orchestrator, "_start_iteration_tracking", return_value=1):
343
+ with patch.object(
344
+ orchestrator, "_run_comprehensive_hooks_phase", return_value=False
345
+ ):
346
+ with patch.object(
347
+ orchestrator,
348
+ "_handle_ai_workflow_completion",
349
+ new_callable=AsyncMock,
350
+ ) as mock_ai_completion:
351
+ mock_ai_completion.return_value = True
352
+
353
+ result = (
354
+ await orchestrator._run_comprehensive_hooks_phase_monitored(
355
+ mock_options_with_ai_agent, workflow_id
356
+ )
357
+ )
358
+
359
+ mock_ai_completion.assert_called_once()
360
+ call_args = mock_ai_completion.call_args
361
+ assert call_args[0][0] == mock_options_with_ai_agent
362
+ assert result is True
363
+ ```
364
+
365
+ ______________________________________________________________________
366
+
367
+ ### Phase 2: Integration Tests (End-to-End Workflow)
368
+
369
+ **Goal:** Verify complete `--ai-fix` workflow works from CLI to AI fixing
370
+
371
+ #### Test 2.1: CLI Flag Parsing Integration Test
372
+
373
+ **File:** `tests/integration/test_ai_fix_flag_integration.py` (create new)
374
+
375
+ ```python
376
+ import pytest
377
+ from typer.testing import CliRunner
378
+ from crackerjack.__main__ import app
379
+
380
+
381
+ runner = CliRunner()
382
+
383
+
384
+ def test_ai_fix_flag_is_parsed_correctly():
385
+ """Test that --ai-fix flag is correctly parsed by Typer."""
386
+ # This test will fail initially if hooks actually run
387
+ # We need to mock the workflow to just capture options
388
+
389
+ # TODO: Add test implementation
390
+ # This requires mocking WorkflowOrchestrator.run_complete_workflow
391
+ # to capture the options object and verify ai_fix=True
392
+ pass
393
+
394
+
395
+ def test_ai_debug_flag_implies_ai_fix():
396
+ """Test that --ai-debug flag sets both ai_debug and ai_fix."""
397
+ # TODO: Add test implementation
398
+ pass
399
+
400
+
401
+ def test_ai_fix_with_verbose_flag():
402
+ """Test that --ai-fix -v works correctly."""
403
+ # TODO: Add test implementation
404
+ pass
405
+ ```
406
+
407
+ #### Test 2.2: Environment Variable Integration Test
408
+
409
+ **File:** `tests/integration/test_ai_agent_env_setup.py` (create new)
410
+
411
+ ```python
412
+ import os
413
+ import pytest
414
+ from crackerjack.cli.handlers import setup_ai_agent_env
415
+
416
+
417
+ def test_setup_ai_agent_env_sets_ai_agent_variable():
418
+ """Test that setup_ai_agent_env sets AI_AGENT environment variable."""
419
+ # Clear environment
420
+ if "AI_AGENT" in os.environ:
421
+ del os.environ["AI_AGENT"]
422
+
423
+ # Setup with ai_agent=True
424
+ setup_ai_agent_env(ai_agent=True, debug_mode=False)
425
+
426
+ assert os.environ.get("AI_AGENT") == "1", "AI_AGENT should be set to '1'"
427
+
428
+ # Cleanup
429
+ del os.environ["AI_AGENT"]
430
+
431
+
432
+ def test_setup_ai_agent_env_with_debug():
433
+ """Test that setup_ai_agent_env sets debug variables."""
434
+ # Clear environment
435
+ for var in ["AI_AGENT", "AI_AGENT_DEBUG", "AI_AGENT_VERBOSE", "CRACKERJACK_DEBUG"]:
436
+ if var in os.environ:
437
+ del os.environ[var]
438
+
439
+ # Setup with ai_agent=True and debug_mode=True
440
+ setup_ai_agent_env(ai_agent=True, debug_mode=True)
441
+
442
+ assert os.environ.get("AI_AGENT") == "1"
443
+ assert os.environ.get("AI_AGENT_DEBUG") == "1"
444
+ assert os.environ.get("AI_AGENT_VERBOSE") == "1"
445
+ assert os.environ.get("CRACKERJACK_DEBUG") == "1"
446
+
447
+ # Cleanup
448
+ for var in ["AI_AGENT", "AI_AGENT_DEBUG", "AI_AGENT_VERBOSE", "CRACKERJACK_DEBUG"]:
449
+ if var in os.environ:
450
+ del os.environ[var]
451
+ ```
452
+
453
+ #### Test 2.3: Complete Workflow Integration Test
454
+
455
+ **File:** `tests/integration/test_ai_fix_complete_workflow.py` (create new)
456
+
457
+ ```python
458
+ import pytest
459
+ from unittest.mock import Mock, AsyncMock, patch, MagicMock
460
+ from crackerjack.core.workflow_orchestrator import WorkflowOrchestrator
461
+ from crackerjack.cli.options import Options
462
+
463
+
464
+ @pytest.mark.asyncio
465
+ async def test_ai_fix_triggers_ai_agent_workflow_on_hook_failure():
466
+ """
467
+ Integration test: When hooks fail and --ai-fix is enabled,
468
+ the workflow should trigger AI fixing iterations.
469
+ """
470
+ # Create options with AI agent enabled
471
+ options = Mock(spec=Options)
472
+ options.ai_agent = True
473
+ options.ai_fix = True
474
+ options.test = False
475
+ options.fast = False
476
+ options.comp = False
477
+ options.clean = False
478
+ options.verbose = True
479
+
480
+ # Create orchestrator
481
+ with patch("crackerjack.core.workflow_orchestrator.Config"):
482
+ with patch("crackerjack.core.workflow_orchestrator.Console"):
483
+ orchestrator = WorkflowOrchestrator()
484
+ orchestrator.logger = Mock()
485
+ orchestrator.console = Mock()
486
+ orchestrator._quality_intelligence = None
487
+
488
+ # Mock hook execution to fail
489
+ orchestrator._run_fast_hooks_phase = Mock(return_value=False)
490
+ orchestrator._run_comprehensive_hooks_phase = Mock(return_value=False)
491
+
492
+ # Mock AI fixing workflow to succeed
493
+ orchestrator._handle_ai_agent_workflow = AsyncMock(return_value=True)
494
+
495
+ # Mock other required methods
496
+ orchestrator._start_iteration_tracking = Mock(return_value=1)
497
+ orchestrator._update_hooks_status_running = Mock()
498
+ orchestrator._handle_hooks_completion = Mock()
499
+
500
+ # Execute standard workflow with AI agent enabled
501
+ workflow_id = "test_workflow"
502
+
503
+ with patch("crackerjack.core.workflow_orchestrator.phase_monitor"):
504
+ result = await orchestrator._execute_standard_hooks_workflow_monitored(
505
+ options, workflow_id
506
+ )
507
+
508
+ # Verify AI agent workflow was triggered
509
+ orchestrator._handle_ai_agent_workflow.assert_called_once()
510
+
511
+ # Verify it was called with correct parameters
512
+ call_args = orchestrator._handle_ai_agent_workflow.call_args
513
+ assert call_args[0][0] == options
514
+ assert call_args[0][1] == 1 # iteration
515
+ assert call_args[0][2] is False # testing_passed (fast hooks failed)
516
+
517
+
518
+ @pytest.mark.asyncio
519
+ async def test_ai_fix_not_triggered_when_hooks_pass():
520
+ """
521
+ Integration test: When hooks pass, AI fixing should not be triggered
522
+ even if --ai-fix is enabled.
523
+ """
524
+ # Create options with AI agent enabled
525
+ options = Mock(spec=Options)
526
+ options.ai_agent = True
527
+ options.ai_fix = True
528
+ options.test = False
529
+ options.fast = False
530
+ options.comp = False
531
+ options.clean = False
532
+ options.verbose = True
533
+
534
+ # Create orchestrator
535
+ with patch("crackerjack.core.workflow_orchestrator.Config"):
536
+ with patch("crackerjack.core.workflow_orchestrator.Console"):
537
+ orchestrator = WorkflowOrchestrator()
538
+ orchestrator.logger = Mock()
539
+ orchestrator.console = Mock()
540
+ orchestrator._quality_intelligence = None
541
+
542
+ # Mock hook execution to SUCCEED
543
+ orchestrator._run_fast_hooks_phase = Mock(return_value=True)
544
+ orchestrator._run_comprehensive_hooks_phase = Mock(return_value=True)
545
+ orchestrator._execute_monitored_cleaning_phase = Mock(return_value=True)
546
+
547
+ # Mock standard workflow to succeed
548
+ orchestrator._handle_standard_workflow = AsyncMock(return_value=True)
549
+
550
+ # Mock other required methods
551
+ orchestrator._start_iteration_tracking = Mock(return_value=1)
552
+ orchestrator._update_hooks_status_running = Mock()
553
+ orchestrator._handle_hooks_completion = Mock()
554
+ orchestrator._execute_monitored_fast_hooks_phase = Mock(return_value=True)
555
+ orchestrator._execute_monitored_comprehensive_phase = Mock(
556
+ return_value=True
557
+ )
558
+
559
+ # Execute standard workflow
560
+ workflow_id = "test_workflow"
561
+
562
+ with patch("crackerjack.core.workflow_orchestrator.phase_monitor"):
563
+ result = await orchestrator._execute_standard_hooks_workflow_monitored(
564
+ options, workflow_id
565
+ )
566
+
567
+ # Since hooks passed, it should route to standard workflow, not AI workflow
568
+ # The _handle_ai_workflow_completion would still be called, but it would
569
+ # route to _handle_standard_workflow because hooks passed
570
+
571
+ # This is a complex integration test - we need to verify the complete flow
572
+ assert result is True or isinstance(result, bool)
573
+ ```
574
+
575
+ ______________________________________________________________________
576
+
577
+ ### Phase 3: Manual Testing (Real-World Verification)
578
+
579
+ **Goal:** Verify fixes work in actual usage scenarios
580
+
581
+ #### Test 3.1: Default Workflow (`--ai-fix` only)
582
+
583
+ ```bash
584
+ cd /Users/les/Projects/crackerjack
585
+
586
+ # Introduce a deliberate quality issue
587
+ echo "def bad_function():" >> crackerjack/test_ai_fix.py
588
+ echo " x = 1" >> crackerjack/test_ai_fix.py
589
+ echo " return x + y # Undefined variable" >> crackerjack/test_ai_fix.py
590
+
591
+ # Run with --ai-fix (should trigger AI fixing)
592
+ python -m crackerjack --ai-fix -v
593
+
594
+ # Expected behavior:
595
+ # ✅ Runs hooks
596
+ # ✅ Detects errors (refurb, complexity, undefined variable)
597
+ # ✅ Prints "🤖 AI Agent workflow activated"
598
+ # ✅ Attempts to fix issues
599
+ # ✅ Re-runs hooks
600
+ # ✅ Iterates up to max iterations
601
+
602
+ # Cleanup
603
+ rm crackerjack/test_ai_fix.py
604
+ ```
605
+
606
+ #### Test 3.2: Fast Workflow (`--ai-fix --fast`)
607
+
608
+ ```bash
609
+ cd /Users/les/Projects/crackerjack
610
+
611
+ # Introduce a formatting issue
612
+ echo "def badly_formatted():" >> crackerjack/test_ai_fix.py
613
+ echo " return 'too many spaces'" >> crackerjack/test_ai_fix.py
614
+
615
+ # Run with --ai-fix --fast
616
+ python -m crackerjack --ai-fix --fast -v
617
+
618
+ # Expected behavior:
619
+ # ✅ Runs fast hooks only
620
+ # ✅ Detects formatting issues
621
+ # ✅ Triggers AI fixing for fast hooks
622
+ # ✅ Fixes formatting
623
+ # ✅ Re-runs fast hooks
624
+
625
+ # Cleanup
626
+ rm crackerjack/test_ai_fix.py
627
+ ```
628
+
629
+ #### Test 3.3: Comprehensive Workflow (`--ai-fix --comp`)
630
+
631
+ ```bash
632
+ cd /Users/les/Projects/crackerjack
633
+
634
+ # Introduce a complexity issue
635
+ cat > crackerjack/test_ai_fix.py << 'EOF'
636
+ def complex_function(a, b, c, d, e):
637
+ if a:
638
+ if b:
639
+ if c:
640
+ if d:
641
+ if e:
642
+ return a + b + c + d + e
643
+ else:
644
+ return 0
645
+ else:
646
+ return 0
647
+ else:
648
+ return 0
649
+ else:
650
+ return 0
651
+ else:
652
+ return 0
653
+ EOF
654
+
655
+ # Run with --ai-fix --comp
656
+ python -m crackerjack --ai-fix --comp -v
657
+
658
+ # Expected behavior:
659
+ # ✅ Runs comprehensive hooks
660
+ # ✅ Detects complexity issues
661
+ # ✅ Triggers AI fixing
662
+ # ✅ Attempts to reduce complexity
663
+
664
+ # Cleanup
665
+ rm crackerjack/test_ai_fix.py
666
+ ```
667
+
668
+ #### Test 3.4: MCP Integration Test
669
+
670
+ ```bash
671
+ cd /Users/les/Projects/acb
672
+
673
+ # Test via MCP (from Claude Code conversation)
674
+ # User should invoke:
675
+ mcp__crackerjack__execute_crackerjack(
676
+ args="--verbose",
677
+ kwargs={"ai_fix": true, "execution_timeout": 1800}
678
+ )
679
+
680
+ # Expected behavior:
681
+ # ✅ MCP server receives request
682
+ # ✅ Runs hooks
683
+ # ✅ Detects issues
684
+ # ✅ Returns job_id
685
+ # ✅ AI fixing iterations execute
686
+ # ✅ Progress tracked via job_id
687
+ ```
688
+
689
+ ______________________________________________________________________
690
+
691
+ ## Test Execution Checklist
692
+
693
+ ### Pre-Testing Setup
694
+
695
+ - [ ] Ensure you're in crackerjack project directory: `cd /Users/les/Projects/crackerjack`
696
+ - [ ] Install test dependencies: `uv sync --group dev`
697
+ - [ ] Verify pytest is installed: `python -m pytest --version`
698
+
699
+ ### Phase 1: Unit Tests
700
+
701
+ - [ ] Create `tests/test_main.py` with `_setup_debug_and_verbose_flags()` tests
702
+ - [ ] Create `tests/test_workflow_orchestrator_ai_routing.py` with workflow routing tests
703
+ - [ ] Run unit tests: `python -m pytest tests/test_main.py -v`
704
+ - [ ] Run workflow tests: `python -m pytest tests/test_workflow_orchestrator_ai_routing.py -v`
705
+ - [ ] Verify all unit tests pass
706
+
707
+ ### Phase 2: Integration Tests
708
+
709
+ - [ ] Create `tests/integration/` directory
710
+ - [ ] Create `tests/integration/test_ai_fix_flag_integration.py`
711
+ - [ ] Create `tests/integration/test_ai_agent_env_setup.py`
712
+ - [ ] Create `tests/integration/test_ai_fix_complete_workflow.py`
713
+ - [ ] Run integration tests: `python -m pytest tests/integration/ -v`
714
+ - [ ] Verify all integration tests pass
715
+
716
+ ### Phase 3: Manual Testing
717
+
718
+ - [ ] Test default workflow: `python -m crackerjack --ai-fix -v`
719
+ - [ ] Test fast workflow: `python -m crackerjack --ai-fix --fast -v`
720
+ - [ ] Test comprehensive workflow: `python -m crackerjack --ai-fix --comp -v`
721
+ - [ ] Test MCP integration from acb project
722
+ - [ ] Verify AI agent actually executes fixing iterations in all cases
723
+ - [ ] Verify progress tracking works
724
+
725
+ ### Post-Testing
726
+
727
+ - [ ] Review test results and fix any failures
728
+ - [ ] Document any additional issues discovered
729
+ - [ ] Update CHANGELOG.md with fixes
730
+ - [ ] Bump version: `python -m crackerjack --bump patch`
731
+ - [ ] Commit all changes: `git add . && git commit -m "fix: AI auto-fix workflow routing and parameter passing"`
732
+ - [ ] Publish to PyPI: `python -m crackerjack --publish`
733
+ - [ ] Test in acb project with new version
734
+
735
+ ______________________________________________________________________
736
+
737
+ ## Success Criteria
738
+
739
+ **All tests must pass before publishing:**
740
+
741
+ 1. ✅ All unit tests pass (100% coverage of fixed functions)
742
+ 1. ✅ All integration tests pass
743
+ 1. ✅ Manual testing confirms AI agent executes when `--ai-fix` is used
744
+ 1. ✅ Manual testing confirms AI fixing works with all workflow paths:
745
+ - Default (no flags)
746
+ - `--fast`
747
+ - `--comp`
748
+ - `--test`
749
+ 1. ✅ MCP integration test succeeds from acb project
750
+ 1. ✅ No regressions in existing functionality
751
+
752
+ **If ANY test fails:**
753
+
754
+ - DO NOT publish to PyPI
755
+ - Document the failure
756
+ - Fix the issue
757
+ - Re-run all tests
758
+
759
+ ______________________________________________________________________
760
+
761
+ ## Known Limitations and Future Work
762
+
763
+ ### Current Limitations
764
+
765
+ 1. **ClaudeCodeBridge is a simulation**: The standalone CLI mode (`python -m crackerjack --ai-fix`) uses a simulated bridge that provides recommendations but doesn't actually invoke Claude Code agents via the Task tool.
766
+
767
+ 1. **MCP Mode is Required for Full AI Fixing**: The complete AI fixing workflow requires MCP integration where Claude Code (the MCP client) applies the fixes.
768
+
769
+ ### Future Enhancements
770
+
771
+ 1. **Enhance ClaudeCodeBridge**: Update to actually invoke Task tool for standalone CLI mode
772
+ 1. **Add More Test Coverage**: Test coverage improvements, especially for AI agent coordinator
773
+ 1. **Integration Test for MCP**: Automated integration test for MCP workflow
774
+ 1. **Performance Testing**: Measure AI fixing iteration performance
775
+ 1. **Error Recovery Testing**: Test error handling in AI fixing workflow
776
+
777
+ ______________________________________________________________________
778
+
779
+ ## Documentation Updates Required
780
+
781
+ After testing completes successfully:
782
+
783
+ 1. **Update investigation reports**:
784
+
785
+ - Mark both bugs as fixed and tested
786
+ - Add test results summary
787
+
788
+ 1. **Update CHANGELOG.md**:
789
+
790
+ - Document both bug fixes
791
+ - List new tests added
792
+ - Mention improved AI auto-fix reliability
793
+
794
+ 1. **Update README.md** (if needed):
795
+
796
+ - Document `--ai-fix` flag usage
797
+ - Add examples of AI auto-fix workflow
798
+
799
+ 1. **Update user guide** (if exists):
800
+
801
+ - Explain AI agent workflow
802
+ - Document when to use `--ai-fix`
803
+
804
+ ______________________________________________________________________
805
+
806
+ ## Quick Test Commands
807
+
808
+ ```bash
809
+ # Run all tests
810
+ python -m pytest tests/ -v
811
+
812
+ # Run only unit tests
813
+ python -m pytest tests/test_main.py tests/test_workflow_orchestrator_ai_routing.py -v
814
+
815
+ # Run only integration tests
816
+ python -m pytest tests/integration/ -v
817
+
818
+ # Run with coverage
819
+ python -m pytest tests/ --cov=crackerjack --cov-report=term -v
820
+
821
+ # Run specific test
822
+ python -m pytest tests/test_workflow_orchestrator_ai_routing.py::TestStandardWorkflowAIRouting::test_standard_workflow_calls_ai_completion_when_ai_agent_enabled -v
823
+ ```
824
+
825
+ ______________________________________________________________________
826
+
827
+ **Next Steps:**
828
+
829
+ 1. Review this plan
830
+ 1. Create test files as specified
831
+ 1. Run tests and document results
832
+ 1. Fix any failures
833
+ 1. Publish new version only after all tests pass
834
+ 1. Test in acb project with new version
835
+
836
+ **Questions? Issues?**
837
+
838
+ Document any problems encountered during testing in this file or in a new `AI-FIX-TEST-RESULTS.md` file.