claude-mpm 4.20.3__py3-none-any.whl → 5.1.8__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.
Potentially problematic release.
This version of claude-mpm might be problematic. Click here for more details.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/BASE_PM.md +35 -6
- claude_mpm/agents/OUTPUT_STYLE.md +3 -48
- claude_mpm/agents/PM_INSTRUCTIONS.md +1241 -667
- claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
- claude_mpm/agents/WORKFLOW.md +75 -2
- claude_mpm/agents/__init__.py +6 -0
- claude_mpm/agents/agent_loader.py +1 -4
- claude_mpm/agents/base_agent.json +6 -3
- claude_mpm/agents/base_agent_loader.py +10 -35
- claude_mpm/agents/frontmatter_validator.py +1 -1
- claude_mpm/agents/templates/circuit-breakers.md +1254 -0
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +89 -19
- claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
- claude_mpm/agents/templates/research-gate-examples.md +669 -0
- claude_mpm/agents/templates/structured-questions-examples.md +615 -0
- claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
- claude_mpm/agents/templates/ticketing-examples.md +277 -0
- claude_mpm/cli/__init__.py +37 -2
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/agent_source.py +774 -0
- claude_mpm/cli/commands/agent_state_manager.py +188 -30
- claude_mpm/cli/commands/agents.py +959 -36
- claude_mpm/cli/commands/agents_cleanup.py +210 -0
- claude_mpm/cli/commands/agents_discover.py +338 -0
- claude_mpm/cli/commands/aggregate.py +1 -1
- claude_mpm/cli/commands/analyze.py +3 -3
- claude_mpm/cli/commands/auto_configure.py +537 -239
- claude_mpm/cli/commands/cleanup.py +1 -1
- claude_mpm/cli/commands/config.py +7 -4
- claude_mpm/cli/commands/configure.py +924 -45
- claude_mpm/cli/commands/configure_agent_display.py +4 -4
- claude_mpm/cli/commands/configure_navigation.py +63 -46
- claude_mpm/cli/commands/debug.py +12 -12
- claude_mpm/cli/commands/doctor.py +10 -2
- claude_mpm/cli/commands/hook_errors.py +277 -0
- claude_mpm/cli/commands/local_deploy.py +1 -4
- claude_mpm/cli/commands/mcp_install_commands.py +1 -1
- claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
- claude_mpm/cli/commands/mpm_init/core.py +573 -0
- claude_mpm/cli/commands/mpm_init/display.py +341 -0
- claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
- claude_mpm/cli/commands/mpm_init/modes.py +397 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
- claude_mpm/cli/commands/mpm_init_cli.py +396 -0
- claude_mpm/cli/commands/mpm_init_handler.py +67 -1
- claude_mpm/cli/commands/postmortem.py +401 -0
- claude_mpm/cli/commands/run.py +125 -167
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +835 -44
- claude_mpm/cli/executor.py +78 -3
- claude_mpm/cli/interactive/agent_wizard.py +1032 -47
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +256 -4
- claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
- claude_mpm/cli/parsers/base_parser.py +53 -0
- claude_mpm/cli/parsers/config_parser.py +96 -43
- claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
- claude_mpm/cli/parsers/skill_source_parser.py +169 -0
- claude_mpm/cli/parsers/skills_parser.py +145 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/startup.py +564 -108
- claude_mpm/cli/startup_display.py +480 -0
- claude_mpm/cli/utils.py +1 -1
- claude_mpm/cli_module/commands.py +1 -1
- claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
- claude_mpm/commands/mpm-agents-detect.md +9 -0
- claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
- claude_mpm/commands/mpm-agents-recommend.md +9 -0
- claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
- claude_mpm/commands/mpm-doctor.md +9 -0
- claude_mpm/commands/mpm-help.md +17 -2
- claude_mpm/commands/mpm-init.md +28 -3
- claude_mpm/commands/mpm-monitor.md +9 -0
- claude_mpm/commands/mpm-postmortem.md +123 -0
- claude_mpm/commands/mpm-session-resume.md +381 -0
- claude_mpm/commands/mpm-status.md +9 -0
- claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
- claude_mpm/commands/mpm-ticket-view.md +552 -0
- claude_mpm/commands/mpm-version.md +9 -0
- claude_mpm/commands/mpm.md +11 -0
- claude_mpm/config/agent_presets.py +488 -0
- claude_mpm/config/agent_sources.py +325 -0
- claude_mpm/config/skill_presets.py +392 -0
- claude_mpm/config/skill_sources.py +590 -0
- claude_mpm/constants.py +13 -0
- claude_mpm/core/api_validator.py +1 -1
- claude_mpm/core/claude_runner.py +19 -35
- claude_mpm/core/config.py +24 -0
- claude_mpm/core/constants.py +1 -1
- claude_mpm/core/framework/__init__.py +3 -16
- claude_mpm/core/framework/loaders/file_loader.py +54 -101
- claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
- claude_mpm/core/framework/processors/metadata_processor.py +1 -1
- claude_mpm/core/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +41 -2
- claude_mpm/core/interactive_session.py +131 -10
- claude_mpm/core/interfaces.py +56 -1
- claude_mpm/core/logger.py +3 -1
- claude_mpm/core/oneshot_session.py +110 -8
- claude_mpm/core/protocols/__init__.py +23 -0
- claude_mpm/core/protocols/runner_protocol.py +103 -0
- claude_mpm/core/protocols/session_protocol.py +131 -0
- claude_mpm/core/shared/singleton_manager.py +11 -4
- claude_mpm/core/system_context.py +38 -0
- claude_mpm/core/unified_config.py +22 -0
- claude_mpm/dashboard/static/css/activity.css +69 -69
- claude_mpm/dashboard/static/css/connection-status.css +10 -10
- claude_mpm/dashboard/static/css/dashboard.css +15 -15
- claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
- claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
- claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
- claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
- claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
- claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
- claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
- claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
- claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
- claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
- claude_mpm/dashboard/static/js/connection-manager.js +76 -76
- claude_mpm/dashboard/static/js/dashboard.js +76 -58
- claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/js/socket-client.js +138 -121
- claude_mpm/dashboard/templates/code_simple.html +23 -23
- claude_mpm/dashboard/templates/index.html +18 -18
- claude_mpm/experimental/cli_enhancements.py +1 -5
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
- claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
- claude_mpm/hooks/claude_hooks/installer.py +45 -0
- claude_mpm/hooks/claude_hooks/memory_integration.py +12 -1
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
- claude_mpm/hooks/failure_learning/__init__.py +2 -8
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
- claude_mpm/hooks/kuzu_response_hook.py +1 -5
- claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
- claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
- claude_mpm/models/git_repository.py +198 -0
- claude_mpm/scripts/claude-hook-handler.sh +3 -3
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/agents/agent_builder.py +45 -9
- claude_mpm/services/agents/agent_preset_service.py +238 -0
- claude_mpm/services/agents/agent_selection_service.py +484 -0
- claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
- claude_mpm/services/agents/cache_git_manager.py +621 -0
- claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
- claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
- claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
- claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
- claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +115 -15
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
- claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
- claude_mpm/services/agents/git_source_manager.py +629 -0
- claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
- claude_mpm/services/agents/local_template_manager.py +50 -10
- claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
- claude_mpm/services/agents/sources/__init__.py +13 -0
- claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
- claude_mpm/services/agents/startup_sync.py +239 -0
- claude_mpm/services/agents/toolchain_detector.py +474 -0
- claude_mpm/services/analysis/__init__.py +25 -0
- claude_mpm/services/analysis/postmortem_reporter.py +474 -0
- claude_mpm/services/analysis/postmortem_service.py +765 -0
- claude_mpm/services/cli/session_pause_manager.py +504 -0
- claude_mpm/services/cli/session_resume_helper.py +36 -16
- claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
- claude_mpm/services/command_deployment_service.py +200 -6
- claude_mpm/services/core/base.py +31 -11
- claude_mpm/services/core/interfaces/__init__.py +1 -3
- claude_mpm/services/core/interfaces/health.py +1 -4
- claude_mpm/services/core/interfaces.py +56 -1
- claude_mpm/services/core/models/__init__.py +2 -11
- claude_mpm/services/core/models/agent_config.py +3 -0
- claude_mpm/services/core/models/process.py +4 -0
- claude_mpm/services/diagnostics/checks/__init__.py +4 -0
- claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
- claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
- claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
- claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
- claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
- claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
- claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
- claude_mpm/services/diagnostics/models.py +21 -0
- claude_mpm/services/event_bus/direct_relay.py +3 -3
- claude_mpm/services/event_bus/event_bus.py +36 -3
- claude_mpm/services/event_bus/relay.py +23 -7
- claude_mpm/services/events/consumers/logging.py +1 -2
- claude_mpm/services/git/__init__.py +21 -0
- claude_mpm/services/git/git_operations_service.py +494 -0
- claude_mpm/services/github/__init__.py +21 -0
- claude_mpm/services/github/github_cli_service.py +397 -0
- claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
- claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
- claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
- claude_mpm/services/instructions/__init__.py +9 -0
- claude_mpm/services/instructions/instruction_cache_service.py +374 -0
- claude_mpm/services/local_ops/__init__.py +5 -13
- claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
- claude_mpm/services/local_ops/health_manager.py +1 -4
- claude_mpm/services/local_ops/process_manager.py +1 -1
- claude_mpm/services/local_ops/resource_monitor.py +2 -2
- claude_mpm/services/mcp_config_manager.py +75 -145
- claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
- claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
- claude_mpm/services/mcp_gateway/core/process_pool.py +41 -26
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
- claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +26 -21
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
- claude_mpm/services/mcp_service_verifier.py +6 -3
- claude_mpm/services/memory/failure_tracker.py +19 -4
- claude_mpm/services/memory/optimizer.py +1 -1
- claude_mpm/services/model/model_router.py +8 -9
- claude_mpm/services/monitor/daemon.py +29 -9
- claude_mpm/services/monitor/daemon_manager.py +96 -19
- claude_mpm/services/monitor/server.py +2 -2
- claude_mpm/services/native_agent_converter.py +356 -0
- claude_mpm/services/port_manager.py +1 -1
- claude_mpm/services/pr/__init__.py +14 -0
- claude_mpm/services/pr/pr_template_service.py +329 -0
- claude_mpm/services/project/documentation_manager.py +2 -1
- claude_mpm/services/project/project_organizer.py +4 -0
- claude_mpm/services/project/toolchain_analyzer.py +3 -1
- claude_mpm/services/runner_configuration_service.py +17 -3
- claude_mpm/services/self_upgrade_service.py +165 -7
- claude_mpm/services/session_management_service.py +16 -4
- claude_mpm/services/skills/__init__.py +18 -0
- claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
- claude_mpm/services/skills/skill_discovery_service.py +568 -0
- claude_mpm/services/skills_config.py +547 -0
- claude_mpm/services/skills_deployer.py +955 -0
- claude_mpm/services/socketio/handlers/connection.py +1 -1
- claude_mpm/services/socketio/handlers/git.py +2 -2
- claude_mpm/services/socketio/server/core.py +1 -4
- claude_mpm/services/socketio/server/main.py +1 -3
- claude_mpm/services/system_instructions_service.py +1 -3
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
- claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
- claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
- claude_mpm/services/unified/unified_deployment.py +1 -5
- claude_mpm/services/version_control/conflict_resolution.py +6 -4
- claude_mpm/services/visualization/__init__.py +1 -5
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/__init__.py +3 -3
- claude_mpm/skills/agent_skills_injector.py +42 -49
- claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +17 -10
- claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +92 -39
- claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +13 -12
- claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +5 -3
- claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +19 -12
- claude_mpm/skills/bundled/performance-profiling.md +6 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +6 -6
- claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +13 -9
- claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +8 -8
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +37 -15
- claude_mpm/skills/skills_registry.py +44 -48
- claude_mpm/skills/skills_service.py +117 -108
- claude_mpm/templates/questions/__init__.py +38 -0
- claude_mpm/templates/questions/base.py +193 -0
- claude_mpm/templates/questions/pr_strategy.py +311 -0
- claude_mpm/templates/questions/project_init.py +385 -0
- claude_mpm/templates/questions/ticket_mgmt.py +394 -0
- claude_mpm/tools/__main__.py +8 -8
- claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
- claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
- claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
- claude_mpm/tools/code_tree_analyzer/core.py +380 -0
- claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
- claude_mpm/tools/code_tree_analyzer/events.py +168 -0
- claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
- claude_mpm/tools/code_tree_analyzer/models.py +39 -0
- claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
- claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
- claude_mpm/utils/agent_dependency_loader.py +80 -13
- claude_mpm/utils/agent_filters.py +288 -0
- claude_mpm/utils/dependency_cache.py +3 -1
- claude_mpm/utils/gitignore.py +244 -0
- claude_mpm/utils/log_cleanup.py +3 -3
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/progress.py +387 -0
- claude_mpm/utils/robust_installer.py +3 -5
- claude_mpm/utils/structured_questions.py +619 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/METADATA +496 -65
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/RECORD +328 -416
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
- claude_mpm/agents/templates/agent-manager.json +0 -273
- claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
- claude_mpm/agents/templates/api_qa.json +0 -180
- claude_mpm/agents/templates/circuit_breakers.md +0 -638
- claude_mpm/agents/templates/clerk-ops.json +0 -235
- claude_mpm/agents/templates/code_analyzer.json +0 -101
- claude_mpm/agents/templates/content-agent.json +0 -358
- claude_mpm/agents/templates/dart_engineer.json +0 -307
- claude_mpm/agents/templates/data_engineer.json +0 -225
- claude_mpm/agents/templates/documentation.json +0 -211
- claude_mpm/agents/templates/engineer.json +0 -210
- claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
- claude_mpm/agents/templates/golang_engineer.json +0 -270
- claude_mpm/agents/templates/imagemagick.json +0 -264
- claude_mpm/agents/templates/java_engineer.json +0 -346
- claude_mpm/agents/templates/local_ops_agent.json +0 -1840
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
- claude_mpm/agents/templates/memory_manager.json +0 -158
- claude_mpm/agents/templates/nextjs_engineer.json +0 -285
- claude_mpm/agents/templates/ops.json +0 -185
- claude_mpm/agents/templates/php-engineer.json +0 -281
- claude_mpm/agents/templates/product_owner.json +0 -338
- claude_mpm/agents/templates/project_organizer.json +0 -140
- claude_mpm/agents/templates/prompt-engineer.json +0 -737
- claude_mpm/agents/templates/python_engineer.json +0 -387
- claude_mpm/agents/templates/qa.json +0 -242
- claude_mpm/agents/templates/react_engineer.json +0 -238
- claude_mpm/agents/templates/refactoring_engineer.json +0 -276
- claude_mpm/agents/templates/research.json +0 -188
- claude_mpm/agents/templates/ruby-engineer.json +0 -280
- claude_mpm/agents/templates/rust_engineer.json +0 -275
- claude_mpm/agents/templates/security.json +0 -202
- claude_mpm/agents/templates/svelte-engineer.json +0 -225
- claude_mpm/agents/templates/ticketing.json +0 -177
- claude_mpm/agents/templates/typescript_engineer.json +0 -285
- claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
- claude_mpm/agents/templates/version_control.json +0 -157
- claude_mpm/agents/templates/web_qa.json +0 -399
- claude_mpm/agents/templates/web_ui.json +0 -189
- claude_mpm/cli/commands/mpm_init.py +0 -2093
- claude_mpm/commands/mpm-tickets.md +0 -102
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
- claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
- claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
- claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
- claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
- claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
- claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
- claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
- claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
- claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
- claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
- claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
- claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
- claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
- claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
- claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
- claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
- claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
- claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
- claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
- claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
- claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
- claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
- claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
- claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
- claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
- claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
- claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
- claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
- claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/built/connection-manager.js +0 -536
- claude_mpm/dashboard/static/built/dashboard.js +0 -2
- claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
- claude_mpm/dashboard/static/built/react/events.js +0 -30
- claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
- claude_mpm/dashboard/static/built/shared/logger.js +0 -385
- claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
- claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/built/socket-client.js +0 -2
- claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
- claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/dist/dashboard.js +0 -2
- claude_mpm/dashboard/static/dist/react/events.js +0 -30
- claude_mpm/dashboard/static/dist/socket-client.js +0 -2
- claude_mpm/dashboard/static/events.html +0 -607
- claude_mpm/dashboard/static/index.html +0 -635
- claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/js/shared/logger.js +0 -385
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
- claude_mpm/dashboard/static/legacy/activity.html +0 -736
- claude_mpm/dashboard/static/legacy/agents.html +0 -786
- claude_mpm/dashboard/static/legacy/files.html +0 -747
- claude_mpm/dashboard/static/legacy/tools.html +0 -831
- claude_mpm/dashboard/static/monitors.html +0 -431
- claude_mpm/dashboard/static/production/events.html +0 -659
- claude_mpm/dashboard/static/production/main.html +0 -698
- claude_mpm/dashboard/static/production/monitors.html +0 -483
- claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
- claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
- claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
- claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
- claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -75
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -184
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -107
- claude_mpm/skills/bundled/collaboration/requesting-code-review/code-reviewer.md +0 -146
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -118
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -177
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -175
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/common-failures.md +0 -213
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -314
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -227
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -74
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -32
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -328
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -209
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -123
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -304
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -96
- claude_mpm/tools/code_tree_analyzer.py +0 -1825
- /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
- /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
- /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
- /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/WHEEL +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/top_level.txt +0 -0
|
@@ -1,452 +0,0 @@
|
|
|
1
|
-
# Real-World Debugging Examples
|
|
2
|
-
|
|
3
|
-
> **Part of**: [Systematic Debugging](../SKILL.md)
|
|
4
|
-
> **Category**: debugging
|
|
5
|
-
> **Reading Level**: Intermediate
|
|
6
|
-
|
|
7
|
-
## Purpose
|
|
8
|
-
|
|
9
|
-
Real-world scenarios demonstrating systematic debugging in action, with step-by-step walkthroughs showing how to apply the four-phase process.
|
|
10
|
-
|
|
11
|
-
## Example 1: API Integration Failure
|
|
12
|
-
|
|
13
|
-
### Symptom
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
Error: API request failed with status 401
|
|
17
|
-
Tests pass locally but fail in CI
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
### Phase 1: Root Cause Investigation
|
|
21
|
-
|
|
22
|
-
**Read Error:**
|
|
23
|
-
```
|
|
24
|
-
HTTP 401 Unauthorized
|
|
25
|
-
Response: {"error": "Invalid API key"}
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
**Reproduce:**
|
|
29
|
-
- ✓ Runs successfully locally
|
|
30
|
-
- ✗ Fails in CI every time
|
|
31
|
-
- Difference: Local has `.env` file, CI uses environment variables
|
|
32
|
-
|
|
33
|
-
**Check Changes:**
|
|
34
|
-
```bash
|
|
35
|
-
git log --oneline --since="3 days ago"
|
|
36
|
-
# Found: "Add API key authentication" 2 days ago
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
**Gather Evidence:**
|
|
40
|
-
```bash
|
|
41
|
-
# In CI config
|
|
42
|
-
echo "API_KEY present: ${API_KEY:+YES}${API_KEY:-NO}"
|
|
43
|
-
# Output: API_KEY present: NO
|
|
44
|
-
|
|
45
|
-
# In local env
|
|
46
|
-
echo $API_KEY
|
|
47
|
-
# Output: sk-abc123...
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**Root cause identified**: API_KEY environment variable not set in CI
|
|
51
|
-
|
|
52
|
-
### Phase 2: Pattern Analysis
|
|
53
|
-
|
|
54
|
-
**Find working examples:**
|
|
55
|
-
```yaml
|
|
56
|
-
# Other workflows using secrets
|
|
57
|
-
env:
|
|
58
|
-
DATABASE_URL: ${{ secrets.DATABASE_URL }} # Works
|
|
59
|
-
API_KEY: ${{ secrets.API_KEY }} # Missing!
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
**Identify difference**: DATABASE_URL configured in GitHub secrets, API_KEY is not
|
|
63
|
-
|
|
64
|
-
### Phase 3: Hypothesis and Testing
|
|
65
|
-
|
|
66
|
-
**Hypothesis**: "API_KEY secret not configured in GitHub repository settings"
|
|
67
|
-
|
|
68
|
-
**Test**: Check repository settings → Secrets → API_KEY not found
|
|
69
|
-
|
|
70
|
-
**Confirmed**: Secret needs to be added
|
|
71
|
-
|
|
72
|
-
### Phase 4: Implementation
|
|
73
|
-
|
|
74
|
-
**Test case** (manual verification):
|
|
75
|
-
```bash
|
|
76
|
-
# After adding secret, check in CI
|
|
77
|
-
echo "API_KEY set: ${API_KEY:+YES}"
|
|
78
|
-
# Expected: YES
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
**Fix**: Add API_KEY to GitHub repository secrets
|
|
82
|
-
|
|
83
|
-
**Verify**: CI build passes, API calls succeed
|
|
84
|
-
|
|
85
|
-
**Time**: 15 minutes with systematic approach vs 2+ hours guessing
|
|
86
|
-
|
|
87
|
-
## Example 2: Intermittent Test Failure
|
|
88
|
-
|
|
89
|
-
### Symptom
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
Test 'processes user data' fails randomly
|
|
93
|
-
Passes 80% of the time, fails 20%
|
|
94
|
-
No clear pattern to failures
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Phase 1: Root Cause Investigation
|
|
98
|
-
|
|
99
|
-
**Read Error:**
|
|
100
|
-
```
|
|
101
|
-
Expected: { id: 1, name: 'Alice', role: 'admin' }
|
|
102
|
-
Received: { id: 1, name: 'Alice', role: 'user' }
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
**Reproduce:**
|
|
106
|
-
- Run test 10 times → fails 2-3 times
|
|
107
|
-
- Failure seems random
|
|
108
|
-
- Not time-dependent
|
|
109
|
-
|
|
110
|
-
**Check Recent Changes:**
|
|
111
|
-
```bash
|
|
112
|
-
git diff HEAD~1 -- tests/user.test.ts
|
|
113
|
-
# No changes to test
|
|
114
|
-
# But role assignment logic changed
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
**Gather Evidence:**
|
|
118
|
-
```typescript
|
|
119
|
-
// Add logging
|
|
120
|
-
test('processes user data', async () => {
|
|
121
|
-
console.log('Test start:', new Date().toISOString());
|
|
122
|
-
const user = await createUser({ name: 'Alice', role: 'admin' });
|
|
123
|
-
console.log('User created:', user);
|
|
124
|
-
console.log('Role at creation:', user.role);
|
|
125
|
-
// ...
|
|
126
|
-
});
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
**Pattern found**: Role correct at creation, changes later
|
|
130
|
-
|
|
131
|
-
**Trace Data Flow:**
|
|
132
|
-
```typescript
|
|
133
|
-
// Step through code
|
|
134
|
-
createUser() → saveToDatabase() → applyDefaults() → role changes!
|
|
135
|
-
|
|
136
|
-
// applyDefaults has bug:
|
|
137
|
-
function applyDefaults(user) {
|
|
138
|
-
return {
|
|
139
|
-
...user,
|
|
140
|
-
role: user.role || 'user' // BUG: 'user' overwrites existing role
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
### Phase 2: Pattern Analysis
|
|
146
|
-
|
|
147
|
-
**Find working examples:**
|
|
148
|
-
```typescript
|
|
149
|
-
// Correct default handling
|
|
150
|
-
function applyDefaults(user) {
|
|
151
|
-
return {
|
|
152
|
-
role: 'user', // Default first
|
|
153
|
-
...user, // Then overrides
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
**Identify difference**: Order of spread operator matters
|
|
159
|
-
|
|
160
|
-
### Phase 3: Hypothesis and Testing
|
|
161
|
-
|
|
162
|
-
**Hypothesis**: "Spread operator order causes role to be overwritten with default"
|
|
163
|
-
|
|
164
|
-
**Test**:
|
|
165
|
-
```typescript
|
|
166
|
-
// Minimal test
|
|
167
|
-
const result = { ...{ name: 'Alice', role: 'admin' }, role: 'user' };
|
|
168
|
-
console.log(result.role); // 'user' - overwrites!
|
|
169
|
-
|
|
170
|
-
const correct = { role: 'user', ...{ name: 'Alice', role: 'admin' } };
|
|
171
|
-
console.log(correct.role); // 'admin' - correct!
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
**Confirmed**: Spread order is the issue
|
|
175
|
-
|
|
176
|
-
### Phase 4: Implementation
|
|
177
|
-
|
|
178
|
-
**Test case**:
|
|
179
|
-
```typescript
|
|
180
|
-
test('preserves existing role when applying defaults', () => {
|
|
181
|
-
const user = { name: 'Alice', role: 'admin' };
|
|
182
|
-
const result = applyDefaults(user);
|
|
183
|
-
expect(result.role).toBe('admin');
|
|
184
|
-
});
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
**Fix**:
|
|
188
|
-
```typescript
|
|
189
|
-
function applyDefaults(user) {
|
|
190
|
-
return {
|
|
191
|
-
role: 'user', // Default first
|
|
192
|
-
status: 'active',
|
|
193
|
-
...user, // User values override
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
**Verify**: Test passes 100 consecutive times, no more intermittent failures
|
|
199
|
-
|
|
200
|
-
## Example 3: Performance Degradation
|
|
201
|
-
|
|
202
|
-
### Symptom
|
|
203
|
-
|
|
204
|
-
```
|
|
205
|
-
Dashboard loads in 5+ seconds (was <1 second)
|
|
206
|
-
Users complaining about slowness
|
|
207
|
-
No recent deploys
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### Phase 1: Root Cause Investigation
|
|
211
|
-
|
|
212
|
-
**Read Error**: No explicit error, just slow performance
|
|
213
|
-
|
|
214
|
-
**Reproduce**:
|
|
215
|
-
```bash
|
|
216
|
-
# Measure consistently
|
|
217
|
-
time curl http://localhost:3000/dashboard
|
|
218
|
-
# ~5.2 seconds consistently
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
**Check Recent Changes**:
|
|
222
|
-
```bash
|
|
223
|
-
git log --oneline --since="1 week ago" -- src/dashboard/
|
|
224
|
-
# No code changes to dashboard
|
|
225
|
-
|
|
226
|
-
git log --oneline --since="1 week ago" -- database/
|
|
227
|
-
# Found: "Add index to improve user queries" 3 days ago
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
**Gather Evidence**:
|
|
231
|
-
```sql
|
|
232
|
-
-- Enable query logging
|
|
233
|
-
SET log_min_duration_statement = 100;
|
|
234
|
-
|
|
235
|
-
-- Analyze slow queries
|
|
236
|
-
EXPLAIN ANALYZE SELECT * FROM user_activity
|
|
237
|
-
WHERE user_id = 123
|
|
238
|
-
ORDER BY created_at DESC;
|
|
239
|
-
|
|
240
|
-
-- Output shows: Seq Scan on user_activity (cost=0.00..45678.23 rows=500000)
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
**Pattern found**: Query doing sequential scan despite new index
|
|
244
|
-
|
|
245
|
-
### Phase 2: Pattern Analysis
|
|
246
|
-
|
|
247
|
-
**Check index**:
|
|
248
|
-
```sql
|
|
249
|
-
\d user_activity
|
|
250
|
-
-- Indexes:
|
|
251
|
-
-- "user_activity_user_created_idx" btree (user_id, created_at)
|
|
252
|
-
|
|
253
|
-
-- But query doesn't use it!
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
**Find working examples**:
|
|
257
|
-
```sql
|
|
258
|
-
-- This query uses index
|
|
259
|
-
SELECT * FROM user_sessions WHERE user_id = 123;
|
|
260
|
-
|
|
261
|
-
-- Our query doesn't - why?
|
|
262
|
-
SELECT * FROM user_activity WHERE user_id = 123 ORDER BY created_at DESC;
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
**Identify difference**: ORDER BY direction (DESC) doesn't match index (ASC)
|
|
266
|
-
|
|
267
|
-
### Phase 3: Hypothesis and Testing
|
|
268
|
-
|
|
269
|
-
**Hypothesis**: "Index not used because ORDER BY DESC doesn't match index order ASC"
|
|
270
|
-
|
|
271
|
-
**Test**:
|
|
272
|
-
```sql
|
|
273
|
-
-- Drop and recreate with DESC
|
|
274
|
-
DROP INDEX user_activity_user_created_idx;
|
|
275
|
-
CREATE INDEX user_activity_user_created_idx
|
|
276
|
-
ON user_activity (user_id, created_at DESC);
|
|
277
|
-
|
|
278
|
-
-- Test query performance
|
|
279
|
-
EXPLAIN ANALYZE SELECT * FROM user_activity
|
|
280
|
-
WHERE user_id = 123
|
|
281
|
-
ORDER BY created_at DESC;
|
|
282
|
-
|
|
283
|
-
-- Output: Index Scan using user_activity_user_created_idx (cost=0.43..123.45)
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
**Confirmed**: Index now used, performance improved
|
|
287
|
-
|
|
288
|
-
### Phase 4: Implementation
|
|
289
|
-
|
|
290
|
-
**Test case**:
|
|
291
|
-
```typescript
|
|
292
|
-
test('dashboard loads in under 1 second', async () => {
|
|
293
|
-
const start = Date.now();
|
|
294
|
-
await fetch('/dashboard');
|
|
295
|
-
const duration = Date.now() - start;
|
|
296
|
-
expect(duration).toBeLessThan(1000);
|
|
297
|
-
});
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
**Fix**: Update index definition to match query pattern
|
|
301
|
-
|
|
302
|
-
**Verify**:
|
|
303
|
-
- Dashboard loads in 0.4 seconds
|
|
304
|
-
- All other queries still work
|
|
305
|
-
- No performance regressions
|
|
306
|
-
|
|
307
|
-
## Example 4: Multi-Component System Failure
|
|
308
|
-
|
|
309
|
-
### Symptom
|
|
310
|
-
|
|
311
|
-
```
|
|
312
|
-
iOS app code signing fails in CI
|
|
313
|
-
Error: "No identity found"
|
|
314
|
-
Works on developer machines
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
### Phase 1: Root Cause Investigation
|
|
318
|
-
|
|
319
|
-
**Read Error**:
|
|
320
|
-
```
|
|
321
|
-
error: No signing certificate "iOS Distribution" found
|
|
322
|
-
codesign failed with exit code 1
|
|
323
|
-
```
|
|
324
|
-
|
|
325
|
-
**Reproduce**:
|
|
326
|
-
- ✓ Works locally with Xcode
|
|
327
|
-
- ✗ Fails in CI every time
|
|
328
|
-
- Multi-layer system: CI → build → keychain → signing
|
|
329
|
-
|
|
330
|
-
**Gather Evidence at Each Layer**:
|
|
331
|
-
```bash
|
|
332
|
-
# Layer 1: CI environment
|
|
333
|
-
echo "=== Secrets available ==="
|
|
334
|
-
echo "CERT_P12: ${CERT_P12:+SET}${CERT_P12:-UNSET}"
|
|
335
|
-
echo "CERT_PASSWORD: ${CERT_PASSWORD:+SET}${CERT_PASSWORD:-UNSET}"
|
|
336
|
-
# Output: Both SET
|
|
337
|
-
|
|
338
|
-
# Layer 2: Keychain setup
|
|
339
|
-
echo "=== Keychain state ==="
|
|
340
|
-
security list-keychains
|
|
341
|
-
security find-identity -v -p codesigning
|
|
342
|
-
# Output: No identities found
|
|
343
|
-
|
|
344
|
-
# Layer 3: Certificate import
|
|
345
|
-
security import cert.p12 -k ~/Library/Keychains/build.keychain -P "$CERT_PASSWORD" -T /usr/bin/codesign
|
|
346
|
-
echo "Import exit code: $?"
|
|
347
|
-
# Output: Exit code 0 (success)
|
|
348
|
-
|
|
349
|
-
# But still no identity!
|
|
350
|
-
security find-identity -v -p codesigning
|
|
351
|
-
# Output: Still no identities
|
|
352
|
-
```
|
|
353
|
-
|
|
354
|
-
**Pattern found**: Import succeeds but identity not available
|
|
355
|
-
|
|
356
|
-
### Phase 2: Pattern Analysis
|
|
357
|
-
|
|
358
|
-
**Find working examples**:
|
|
359
|
-
```bash
|
|
360
|
-
# Local machine
|
|
361
|
-
security find-identity -v
|
|
362
|
-
# Shows many identities in login keychain
|
|
363
|
-
|
|
364
|
-
# CI (after import)
|
|
365
|
-
security find-identity -v
|
|
366
|
-
# Shows nothing
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
**Compare keychain paths**:
|
|
370
|
-
```bash
|
|
371
|
-
# Local
|
|
372
|
-
security list-keychains
|
|
373
|
-
# "~/Library/Keychains/login.keychain-db"
|
|
374
|
-
|
|
375
|
-
# CI
|
|
376
|
-
security list-keychains
|
|
377
|
-
# Custom build.keychain not in search list!
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
**Identify difference**: Keychain created but not added to search list
|
|
381
|
-
|
|
382
|
-
### Phase 3: Hypothesis and Testing
|
|
383
|
-
|
|
384
|
-
**Hypothesis**: "Identity imported but keychain not in search list, so codesign can't find it"
|
|
385
|
-
|
|
386
|
-
**Test**:
|
|
387
|
-
```bash
|
|
388
|
-
# Add keychain to search list
|
|
389
|
-
security list-keychains -s ~/Library/Keychains/build.keychain-db
|
|
390
|
-
|
|
391
|
-
# Check if identity now visible
|
|
392
|
-
security find-identity -v -p codesigning
|
|
393
|
-
# Output: Shows imported identity!
|
|
394
|
-
```
|
|
395
|
-
|
|
396
|
-
**Confirmed**: Keychain search list was the issue
|
|
397
|
-
|
|
398
|
-
### Phase 4: Implementation
|
|
399
|
-
|
|
400
|
-
**Test case** (integration test in CI):
|
|
401
|
-
```bash
|
|
402
|
-
# After fix, verify identity available
|
|
403
|
-
security find-identity -v -p codesigning | grep "iOS Distribution" || exit 1
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
**Fix**:
|
|
407
|
-
```bash
|
|
408
|
-
# Complete keychain setup
|
|
409
|
-
security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
|
|
410
|
-
security list-keychains -s ~/Library/Keychains/build.keychain-db # Add to search
|
|
411
|
-
security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
|
|
412
|
-
security import cert.p12 -k build.keychain -P "$CERT_PASSWORD" -T /usr/bin/codesign
|
|
413
|
-
security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASSWORD" build.keychain
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
**Verify**: Code signing succeeds in CI
|
|
417
|
-
|
|
418
|
-
**Time**: 45 minutes systematic vs 4+ hours of random attempts
|
|
419
|
-
|
|
420
|
-
## Key Patterns Across Examples
|
|
421
|
-
|
|
422
|
-
### Common Root Causes
|
|
423
|
-
1. **Configuration differences** (Example 1): Local vs CI environment
|
|
424
|
-
2. **Timing/order issues** (Example 2): Race conditions, initialization order
|
|
425
|
-
3. **Hidden assumptions** (Example 3): Index order matching query
|
|
426
|
-
4. **Multi-layer problems** (Example 4): Issue at component boundaries
|
|
427
|
-
|
|
428
|
-
### Systematic Approach Benefits
|
|
429
|
-
- **Faster resolution**: 15-45 minutes vs 2-4 hours
|
|
430
|
-
- **First-time fix**: 95%+ success rate
|
|
431
|
-
- **No new bugs**: Targeted fixes don't break other things
|
|
432
|
-
- **Knowledge gained**: Understanding root cause prevents recurrence
|
|
433
|
-
|
|
434
|
-
### Red Flags That Would Have Failed
|
|
435
|
-
- "Just try adding the secret" (skips investigation)
|
|
436
|
-
- "Add try-catch around failing code" (masks problem)
|
|
437
|
-
- "Increase timeout" (hides real issue)
|
|
438
|
-
- "Maybe clear cache?" (random guess)
|
|
439
|
-
|
|
440
|
-
## Summary
|
|
441
|
-
|
|
442
|
-
Systematic debugging:
|
|
443
|
-
1. Saves time (15-45 min vs 2-4 hours)
|
|
444
|
-
2. Fixes correctly first time (95% vs 40%)
|
|
445
|
-
3. Prevents new bugs (targeted vs random changes)
|
|
446
|
-
4. Builds understanding (root cause vs symptom)
|
|
447
|
-
|
|
448
|
-
## Related References
|
|
449
|
-
|
|
450
|
-
- [Workflow](workflow.md): Complete four-phase process
|
|
451
|
-
- [Troubleshooting](troubleshooting.md): When debugging gets stuck
|
|
452
|
-
- [Anti-patterns](anti-patterns.md): Common mistakes to avoid
|