stravinsky 0.4.18__py3-none-any.whl → 0.4.66__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 stravinsky might be problematic. Click here for more details.
- mcp_bridge/__init__.py +1 -1
- mcp_bridge/auth/__init__.py +16 -6
- mcp_bridge/auth/cli.py +202 -11
- mcp_bridge/auth/oauth.py +1 -2
- mcp_bridge/auth/openai_oauth.py +4 -7
- mcp_bridge/auth/token_store.py +0 -1
- mcp_bridge/cli/__init__.py +1 -1
- mcp_bridge/cli/install_hooks.py +503 -107
- mcp_bridge/cli/session_report.py +0 -3
- mcp_bridge/config/__init__.py +2 -2
- mcp_bridge/config/hook_config.py +3 -5
- mcp_bridge/config/rate_limits.py +108 -13
- mcp_bridge/hooks/HOOKS_SETTINGS.json +17 -4
- mcp_bridge/hooks/__init__.py +14 -4
- mcp_bridge/hooks/agent_reminder.py +4 -4
- mcp_bridge/hooks/auto_slash_command.py +5 -5
- mcp_bridge/hooks/budget_optimizer.py +2 -2
- mcp_bridge/hooks/claude_limits_hook.py +114 -0
- mcp_bridge/hooks/comment_checker.py +3 -4
- mcp_bridge/hooks/compaction.py +2 -2
- mcp_bridge/hooks/context.py +2 -1
- mcp_bridge/hooks/context_monitor.py +2 -2
- mcp_bridge/hooks/delegation_policy.py +85 -0
- mcp_bridge/hooks/directory_context.py +3 -3
- mcp_bridge/hooks/edit_recovery.py +3 -2
- mcp_bridge/hooks/edit_recovery_policy.py +49 -0
- mcp_bridge/hooks/empty_message_sanitizer.py +2 -2
- mcp_bridge/hooks/events.py +160 -0
- mcp_bridge/hooks/git_noninteractive.py +4 -4
- mcp_bridge/hooks/keyword_detector.py +8 -10
- mcp_bridge/hooks/manager.py +35 -22
- mcp_bridge/hooks/notification_hook.py +13 -6
- mcp_bridge/hooks/parallel_enforcement_policy.py +67 -0
- mcp_bridge/hooks/parallel_enforcer.py +5 -5
- mcp_bridge/hooks/parallel_execution.py +22 -10
- mcp_bridge/hooks/post_tool/parallel_validation.py +103 -0
- mcp_bridge/hooks/pre_compact.py +8 -9
- mcp_bridge/hooks/pre_tool/agent_spawn_validator.py +115 -0
- mcp_bridge/hooks/preemptive_compaction.py +2 -3
- mcp_bridge/hooks/routing_notifications.py +80 -0
- mcp_bridge/hooks/rules_injector.py +11 -19
- mcp_bridge/hooks/session_idle.py +4 -4
- mcp_bridge/hooks/session_notifier.py +4 -4
- mcp_bridge/hooks/session_recovery.py +4 -5
- mcp_bridge/hooks/stravinsky_mode.py +1 -1
- mcp_bridge/hooks/subagent_stop.py +1 -3
- mcp_bridge/hooks/task_validator.py +2 -2
- mcp_bridge/hooks/tmux_manager.py +7 -8
- mcp_bridge/hooks/todo_delegation.py +4 -1
- mcp_bridge/hooks/todo_enforcer.py +180 -10
- mcp_bridge/hooks/truncation_policy.py +37 -0
- mcp_bridge/hooks/truncator.py +1 -2
- mcp_bridge/metrics/cost_tracker.py +115 -0
- mcp_bridge/native_search.py +93 -0
- mcp_bridge/native_watcher.py +118 -0
- mcp_bridge/notifications.py +3 -4
- mcp_bridge/orchestrator/enums.py +11 -0
- mcp_bridge/orchestrator/router.py +165 -0
- mcp_bridge/orchestrator/state.py +32 -0
- mcp_bridge/orchestrator/visualization.py +14 -0
- mcp_bridge/orchestrator/wisdom.py +34 -0
- mcp_bridge/prompts/__init__.py +1 -8
- mcp_bridge/prompts/dewey.py +1 -1
- mcp_bridge/prompts/planner.py +2 -4
- mcp_bridge/prompts/stravinsky.py +53 -31
- mcp_bridge/proxy/__init__.py +0 -0
- mcp_bridge/proxy/client.py +70 -0
- mcp_bridge/proxy/model_server.py +157 -0
- mcp_bridge/routing/__init__.py +43 -0
- mcp_bridge/routing/config.py +250 -0
- mcp_bridge/routing/model_tiers.py +135 -0
- mcp_bridge/routing/provider_state.py +261 -0
- mcp_bridge/routing/task_classifier.py +190 -0
- mcp_bridge/server.py +363 -34
- mcp_bridge/server_tools.py +298 -6
- mcp_bridge/tools/__init__.py +19 -8
- mcp_bridge/tools/agent_manager.py +549 -799
- mcp_bridge/tools/background_tasks.py +13 -17
- mcp_bridge/tools/code_search.py +54 -51
- mcp_bridge/tools/continuous_loop.py +0 -1
- mcp_bridge/tools/dashboard.py +19 -0
- mcp_bridge/tools/find_code.py +296 -0
- mcp_bridge/tools/init.py +1 -0
- mcp_bridge/tools/list_directory.py +42 -0
- mcp_bridge/tools/lsp/__init__.py +8 -8
- mcp_bridge/tools/lsp/manager.py +51 -28
- mcp_bridge/tools/lsp/tools.py +98 -65
- mcp_bridge/tools/model_invoke.py +1047 -152
- mcp_bridge/tools/mux_client.py +75 -0
- mcp_bridge/tools/project_context.py +1 -2
- mcp_bridge/tools/query_classifier.py +132 -49
- mcp_bridge/tools/read_file.py +84 -0
- mcp_bridge/tools/replace.py +45 -0
- mcp_bridge/tools/run_shell_command.py +38 -0
- mcp_bridge/tools/search_enhancements.py +347 -0
- mcp_bridge/tools/semantic_search.py +677 -92
- mcp_bridge/tools/session_manager.py +0 -2
- mcp_bridge/tools/skill_loader.py +0 -1
- mcp_bridge/tools/task_runner.py +5 -7
- mcp_bridge/tools/templates.py +3 -3
- mcp_bridge/tools/tool_search.py +331 -0
- mcp_bridge/tools/write_file.py +29 -0
- mcp_bridge/update_manager.py +33 -37
- mcp_bridge/update_manager_pypi.py +6 -8
- mcp_bridge/utils/cache.py +82 -0
- mcp_bridge/utils/process.py +71 -0
- mcp_bridge/utils/session_state.py +51 -0
- mcp_bridge/utils/truncation.py +76 -0
- {stravinsky-0.4.18.dist-info → stravinsky-0.4.66.dist-info}/METADATA +84 -35
- stravinsky-0.4.66.dist-info/RECORD +198 -0
- {stravinsky-0.4.18.dist-info → stravinsky-0.4.66.dist-info}/entry_points.txt +1 -0
- stravinsky_claude_assets/HOOKS_INTEGRATION.md +316 -0
- stravinsky_claude_assets/agents/HOOKS.md +437 -0
- stravinsky_claude_assets/agents/code-reviewer.md +210 -0
- stravinsky_claude_assets/agents/comment_checker.md +580 -0
- stravinsky_claude_assets/agents/debugger.md +254 -0
- stravinsky_claude_assets/agents/delphi.md +495 -0
- stravinsky_claude_assets/agents/dewey.md +248 -0
- stravinsky_claude_assets/agents/explore.md +1198 -0
- stravinsky_claude_assets/agents/frontend.md +472 -0
- stravinsky_claude_assets/agents/implementation-lead.md +164 -0
- stravinsky_claude_assets/agents/momus.md +464 -0
- stravinsky_claude_assets/agents/research-lead.md +141 -0
- stravinsky_claude_assets/agents/stravinsky.md +730 -0
- stravinsky_claude_assets/commands/delphi.md +9 -0
- stravinsky_claude_assets/commands/dewey.md +54 -0
- stravinsky_claude_assets/commands/git-master.md +112 -0
- stravinsky_claude_assets/commands/index.md +49 -0
- stravinsky_claude_assets/commands/publish.md +86 -0
- stravinsky_claude_assets/commands/review.md +73 -0
- stravinsky_claude_assets/commands/str/agent_cancel.md +70 -0
- stravinsky_claude_assets/commands/str/agent_list.md +56 -0
- stravinsky_claude_assets/commands/str/agent_output.md +92 -0
- stravinsky_claude_assets/commands/str/agent_progress.md +74 -0
- stravinsky_claude_assets/commands/str/agent_retry.md +94 -0
- stravinsky_claude_assets/commands/str/cancel.md +51 -0
- stravinsky_claude_assets/commands/str/clean.md +97 -0
- stravinsky_claude_assets/commands/str/continue.md +38 -0
- stravinsky_claude_assets/commands/str/index.md +199 -0
- stravinsky_claude_assets/commands/str/list_watchers.md +96 -0
- stravinsky_claude_assets/commands/str/search.md +205 -0
- stravinsky_claude_assets/commands/str/start_filewatch.md +136 -0
- stravinsky_claude_assets/commands/str/stats.md +71 -0
- stravinsky_claude_assets/commands/str/stop_filewatch.md +89 -0
- stravinsky_claude_assets/commands/str/unwatch.md +42 -0
- stravinsky_claude_assets/commands/str/watch.md +45 -0
- stravinsky_claude_assets/commands/strav.md +53 -0
- stravinsky_claude_assets/commands/stravinsky.md +292 -0
- stravinsky_claude_assets/commands/verify.md +60 -0
- stravinsky_claude_assets/commands/version.md +5 -0
- stravinsky_claude_assets/hooks/README.md +248 -0
- stravinsky_claude_assets/hooks/comment_checker.py +193 -0
- stravinsky_claude_assets/hooks/context.py +38 -0
- stravinsky_claude_assets/hooks/context_monitor.py +153 -0
- stravinsky_claude_assets/hooks/dependency_tracker.py +73 -0
- stravinsky_claude_assets/hooks/edit_recovery.py +46 -0
- stravinsky_claude_assets/hooks/execution_state_tracker.py +68 -0
- stravinsky_claude_assets/hooks/notification_hook.py +103 -0
- stravinsky_claude_assets/hooks/notification_hook_v2.py +96 -0
- stravinsky_claude_assets/hooks/parallel_execution.py +241 -0
- stravinsky_claude_assets/hooks/parallel_reinforcement.py +106 -0
- stravinsky_claude_assets/hooks/parallel_reinforcement_v2.py +112 -0
- stravinsky_claude_assets/hooks/pre_compact.py +123 -0
- stravinsky_claude_assets/hooks/ralph_loop.py +173 -0
- stravinsky_claude_assets/hooks/session_recovery.py +263 -0
- stravinsky_claude_assets/hooks/stop_hook.py +89 -0
- stravinsky_claude_assets/hooks/stravinsky_metrics.py +164 -0
- stravinsky_claude_assets/hooks/stravinsky_mode.py +146 -0
- stravinsky_claude_assets/hooks/subagent_stop.py +98 -0
- stravinsky_claude_assets/hooks/todo_continuation.py +111 -0
- stravinsky_claude_assets/hooks/todo_delegation.py +96 -0
- stravinsky_claude_assets/hooks/tool_messaging.py +281 -0
- stravinsky_claude_assets/hooks/truncator.py +23 -0
- stravinsky_claude_assets/rules/deployment_safety.md +51 -0
- stravinsky_claude_assets/rules/integration_wiring.md +89 -0
- stravinsky_claude_assets/rules/pypi_deployment.md +220 -0
- stravinsky_claude_assets/rules/stravinsky_orchestrator.md +32 -0
- stravinsky_claude_assets/settings.json +152 -0
- stravinsky_claude_assets/skills/chrome-devtools/SKILL.md +81 -0
- stravinsky_claude_assets/skills/sqlite/SKILL.md +77 -0
- stravinsky_claude_assets/skills/supabase/SKILL.md +74 -0
- stravinsky_claude_assets/task_dependencies.json +34 -0
- stravinsky-0.4.18.dist-info/RECORD +0 -88
- {stravinsky-0.4.18.dist-info → stravinsky-0.4.66.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debugger
|
|
3
|
+
description: |
|
|
4
|
+
Debugging and root cause analysis specialist. Use for:
|
|
5
|
+
- Analyzing errors and stack traces
|
|
6
|
+
- Root cause investigation
|
|
7
|
+
- Fix strategy recommendations
|
|
8
|
+
- After 2+ failed fix attempts
|
|
9
|
+
tools: Read, Grep, Glob, Bash, mcp__stravinsky__lsp_diagnostics, mcp__stravinsky__lsp_hover, mcp__stravinsky__lsp_goto_definition, mcp__stravinsky__lsp_find_references, mcp__stravinsky__ast_grep_search, mcp__stravinsky__grep_search
|
|
10
|
+
model: sonnet
|
|
11
|
+
cost_tier: medium # $3/1M input tokens (Claude Sonnet 4.5)
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
You are the **Debugger** specialist - focused on systematic root cause analysis and fix strategies.
|
|
15
|
+
|
|
16
|
+
## Core Capabilities
|
|
17
|
+
|
|
18
|
+
- **Error Analysis**: Parse stack traces, error messages, logs
|
|
19
|
+
- **File Reading**: Read tool for analyzing implementation
|
|
20
|
+
- **Code Search**: grep_search, ast_grep_search for finding related code
|
|
21
|
+
- **LSP Integration**: lsp_diagnostics, lsp_find_references
|
|
22
|
+
- **Claude Sonnet**: Native model for reasoning about failures
|
|
23
|
+
|
|
24
|
+
## When You're Called
|
|
25
|
+
|
|
26
|
+
You are delegated by the Stravinsky orchestrator when:
|
|
27
|
+
- An error or failure has occurred
|
|
28
|
+
- 2+ fix attempts have failed
|
|
29
|
+
- Root cause is unclear
|
|
30
|
+
- Complex debugging required
|
|
31
|
+
- Need systematic investigation
|
|
32
|
+
|
|
33
|
+
## Debugging Process
|
|
34
|
+
|
|
35
|
+
### Step 1: Gather Evidence
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
1. Read error message and stack trace
|
|
39
|
+
2. Identify failing file and line number
|
|
40
|
+
3. Check lsp_diagnostics for related errors
|
|
41
|
+
4. Review recent changes (if available)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Step 2: Reproduce Context
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
1. Read the failing function/method
|
|
48
|
+
2. Understand input data and state
|
|
49
|
+
3. Trace execution path
|
|
50
|
+
4. Identify assumptions that might be violated
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Step 3: Hypothesis Generation
|
|
54
|
+
|
|
55
|
+
Generate 2-4 hypotheses ranked by likelihood:
|
|
56
|
+
- What could cause this specific error?
|
|
57
|
+
- What changed recently?
|
|
58
|
+
- What assumptions are invalid?
|
|
59
|
+
- What edge cases weren't handled?
|
|
60
|
+
|
|
61
|
+
### Step 4: Systematic Investigation
|
|
62
|
+
|
|
63
|
+
For each hypothesis:
|
|
64
|
+
```
|
|
65
|
+
1. Identify verification method
|
|
66
|
+
2. Execute checks (read code, search for patterns)
|
|
67
|
+
3. Confirm or reject hypothesis
|
|
68
|
+
4. Move to next if rejected
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Step 5: Root Cause Identification
|
|
72
|
+
|
|
73
|
+
Once root cause found:
|
|
74
|
+
```
|
|
75
|
+
1. Explain WHY the error occurs
|
|
76
|
+
2. Identify contributing factors
|
|
77
|
+
3. Assess impact (local vs systemic)
|
|
78
|
+
4. Recommend fix strategy
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Output Format
|
|
82
|
+
|
|
83
|
+
Always return structured analysis:
|
|
84
|
+
|
|
85
|
+
```markdown
|
|
86
|
+
## Debugging Analysis
|
|
87
|
+
|
|
88
|
+
**Error**: [Error type and message]
|
|
89
|
+
**Location**: [File:line]
|
|
90
|
+
**Context**: [What operation was being performed]
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Evidence Gathered
|
|
95
|
+
|
|
96
|
+
1. **Stack Trace**:
|
|
97
|
+
```
|
|
98
|
+
[Relevant portion of stack trace]
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
2. **Failing Code**:
|
|
102
|
+
```python
|
|
103
|
+
# File: src/api/handler.py:45-52
|
|
104
|
+
def process_request(data):
|
|
105
|
+
user_id = data['user_id'] # ← KeyError here
|
|
106
|
+
return get_user(user_id)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
3. **Related Diagnostics**:
|
|
110
|
+
- Type error in handler.py:67: "Expected Dict[str, Any]"
|
|
111
|
+
- Warning in handler.py:12: "Missing return type annotation"
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Hypotheses Tested
|
|
116
|
+
|
|
117
|
+
### Hypothesis 1: Missing key in input data ✅ CONFIRMED
|
|
118
|
+
**Reasoning**: KeyError indicates 'user_id' not in dict
|
|
119
|
+
**Verification**: Traced caller, found optional field not validated
|
|
120
|
+
**Evidence**: Caller can send {} when user not authenticated
|
|
121
|
+
|
|
122
|
+
### Hypothesis 2: Wrong data type ❌ REJECTED
|
|
123
|
+
**Reasoning**: Could be receiving list instead of dict
|
|
124
|
+
**Verification**: Checked caller, always sends dict
|
|
125
|
+
**Evidence**: Type annotation shows Dict[str, Any]
|
|
126
|
+
|
|
127
|
+
### Hypothesis 3: Typo in key name ❌ REJECTED
|
|
128
|
+
**Reasoning**: Could be 'userId' vs 'user_id'
|
|
129
|
+
**Verification**: Checked API contract, 'user_id' is correct
|
|
130
|
+
**Evidence**: Works in other endpoints
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Root Cause
|
|
135
|
+
|
|
136
|
+
**Issue**: Unauthenticated requests don't include 'user_id' in data dict.
|
|
137
|
+
|
|
138
|
+
**Why It Happens**:
|
|
139
|
+
1. Middleware strips 'user_id' for invalid tokens
|
|
140
|
+
2. Handler assumes 'user_id' always present
|
|
141
|
+
3. No validation before dict access
|
|
142
|
+
|
|
143
|
+
**Contributing Factors**:
|
|
144
|
+
- No input validation in handler
|
|
145
|
+
- Missing Optional type hint
|
|
146
|
+
- No error handling for missing keys
|
|
147
|
+
|
|
148
|
+
**Impact**:
|
|
149
|
+
- Severity: HIGH (crashes on unauthenticated requests)
|
|
150
|
+
- Scope: Affects all endpoints using this handler
|
|
151
|
+
- User Impact: 500 errors instead of 401 Unauthorized
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Recommended Fix Strategy
|
|
156
|
+
|
|
157
|
+
### Option 1: Defensive Dict Access (RECOMMENDED)
|
|
158
|
+
```python
|
|
159
|
+
def process_request(data):
|
|
160
|
+
user_id = data.get('user_id')
|
|
161
|
+
if user_id is None:
|
|
162
|
+
raise Unauthorized("Authentication required")
|
|
163
|
+
return get_user(user_id)
|
|
164
|
+
```
|
|
165
|
+
**Pros**: Simple, explicit error
|
|
166
|
+
**Cons**: None
|
|
167
|
+
|
|
168
|
+
### Option 2: Middleware Validation
|
|
169
|
+
```python
|
|
170
|
+
# In middleware
|
|
171
|
+
if not validate_token(request):
|
|
172
|
+
return Response("Unauthorized", status=401)
|
|
173
|
+
# Handler assumes user_id present
|
|
174
|
+
```
|
|
175
|
+
**Pros**: Centralized validation
|
|
176
|
+
**Cons**: Requires middleware changes
|
|
177
|
+
|
|
178
|
+
### Recommended Approach:
|
|
179
|
+
**Use Option 1** - Fail fast with clear error message at handler level.
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Prevention Strategies
|
|
184
|
+
|
|
185
|
+
1. **Input Validation**: Always validate dict keys before access
|
|
186
|
+
2. **Type Hints**: Use `Optional[str]` for fields that might be missing
|
|
187
|
+
3. **Error Messages**: Return 401 not 500 for auth failures
|
|
188
|
+
4. **Tests**: Add test case for unauthenticated request
|
|
189
|
+
|
|
190
|
+
## Additional Checks Needed
|
|
191
|
+
|
|
192
|
+
After implementing fix:
|
|
193
|
+
- [ ] Run lsp_diagnostics on modified file
|
|
194
|
+
- [ ] Add unit test for unauthenticated case
|
|
195
|
+
- [ ] Verify other endpoints using same pattern
|
|
196
|
+
- [ ] Update API documentation (auth requirements)
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Debugging Techniques
|
|
201
|
+
|
|
202
|
+
### For Type Errors
|
|
203
|
+
1. Check lsp_hover for actual vs expected types
|
|
204
|
+
2. Trace data flow to find type mismatch source
|
|
205
|
+
3. Look for implicit type coercion
|
|
206
|
+
|
|
207
|
+
### For Logic Errors
|
|
208
|
+
1. Walk through execution path step-by-step
|
|
209
|
+
2. Identify branch conditions and edge cases
|
|
210
|
+
3. Check off-by-one errors, boundary conditions
|
|
211
|
+
|
|
212
|
+
### For Race Conditions
|
|
213
|
+
1. Look for shared state without synchronization
|
|
214
|
+
2. Check async/await usage
|
|
215
|
+
3. Identify timing-dependent behavior
|
|
216
|
+
|
|
217
|
+
### For Performance Issues
|
|
218
|
+
1. Profile hot code paths
|
|
219
|
+
2. Look for N+1 queries, nested loops
|
|
220
|
+
3. Check for resource leaks
|
|
221
|
+
|
|
222
|
+
## Hypothesis Testing Framework
|
|
223
|
+
|
|
224
|
+
| Hypothesis | How to Verify | Typical Evidence |
|
|
225
|
+
|------------|---------------|------------------|
|
|
226
|
+
| **Missing data** | Check input validation | Dict access without .get() |
|
|
227
|
+
| **Wrong type** | Check lsp_hover | Type mismatch error |
|
|
228
|
+
| **Logic error** | Trace execution path | Wrong branch taken |
|
|
229
|
+
| **State issue** | Check variable scope | Global/class var mutation |
|
|
230
|
+
| **Timing** | Check async/threading | Race condition, deadlock |
|
|
231
|
+
| **External** | Check API/DB calls | Timeout, connection error |
|
|
232
|
+
|
|
233
|
+
## Fix Strategy Decision Matrix
|
|
234
|
+
|
|
235
|
+
| If Root Cause Is... | Recommended Fix | Priority |
|
|
236
|
+
|-------------------|----------------|----------|
|
|
237
|
+
| **Missing validation** | Add checks at entry point | HIGH |
|
|
238
|
+
| **Wrong assumption** | Update logic to handle case | HIGH |
|
|
239
|
+
| **Type mismatch** | Add type conversion or validation | MEDIUM |
|
|
240
|
+
| **Edge case** | Add conditional handling | MEDIUM |
|
|
241
|
+
| **Configuration** | Update config, add validation | MEDIUM |
|
|
242
|
+
| **External dependency** | Add error handling, retry logic | LOW |
|
|
243
|
+
|
|
244
|
+
## Constraints
|
|
245
|
+
|
|
246
|
+
- **Systematic approach**: Don't guess, test hypotheses methodically
|
|
247
|
+
- **Evidence-based**: Every conclusion must have supporting evidence
|
|
248
|
+
- **Clear explanation**: Explain WHY, not just WHAT
|
|
249
|
+
- **Actionable fixes**: Provide code examples, not just descriptions
|
|
250
|
+
- **Fast analysis**: Aim for <10 minutes per issue
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
**Remember**: You are a debugging specialist. Gather evidence systematically, test hypotheses methodically, identify root causes clearly, and provide actionable fix strategies to the orchestrator.
|