From 9ba336cdc68adf6488c27092b203a938de71a1cb Mon Sep 17 00:00:00 2001 From: mindesbunister Date: Tue, 29 Jul 2025 15:03:38 +0200 Subject: [PATCH] docs: add automation interference patterns and debugging wisdom - Add new section on auto-restart loop detection and prevention - Include critical debugging commands for automation cycles - Document hardcoded recommendation anti-patterns that cause loops - Add prevention checklist for automation interference - Include order cancellation monitoring commands - Expand debugging strategies for complex automation systems Wisdom gained from resolving rapid order cancellation issue caused by auto-restart loops in position monitor system. --- .github/copilot-instructions.md | 78 ++++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index fa2505a..015e014 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -545,6 +545,21 @@ curl -s http://localhost:9001/api/automation/position-monitor | jq . node -e "const {getDB} = require('./lib/db'); getDB().then(() => console.log('DB OK'));" ``` +### Automation Loop Debugging: +```bash +# Track automation cycles and recommendations +docker logs trader_dev --since="5m" | grep -E "(AUTO-RESTART|recommendation|CYCLE)" | tail -10 + +# Monitor order behavior patterns +curl -s http://localhost:9001/api/drift/orders | jq '.orders | map(select(.status == "CANCELED")) | length' + +# Check if position detection is working +curl -s http://localhost:9001/api/drift/positions | jq '.positions | length' + +# Verify cleanup operations +curl -s http://localhost:9001/api/automation/position-monitor | jq '.monitor.orphanedOrderCleanup' +``` + ### Docker Volume Mount Debugging (Critical Learning) **Problem**: Code changes don't reflect in container, or container has different file content than host. @@ -588,7 +603,57 @@ docker compose -f docker-compose.dev.yml restart 4. **Clear compilation cache and restart** if source is correct but behavior wrong 5. **Use container logs to trace actual execution** vs expected code paths -## 🚨 Critical Anti-Patterns to Avoid +## � Automation Interference Patterns (Critical Learning) + +### Auto-Restart Loop Detection & Prevention +**Problem Pattern**: Position monitors with hardcoded "START_TRADING" recommendations create infinite restart loops when no positions are detected, causing rapid order cancellations. + +**Root Cause Symptoms**: +```bash +# Log patterns indicating auto-restart loops +docker logs trader_dev | grep "AUTO-RESTART.*START_TRADING" +docker logs trader_dev | grep "No position detected.*recommendation" +docker logs trader_dev | grep "triggering auto-restart" +``` + +**Detection Commands**: +```bash +# Check for restart loop patterns +docker logs trader_dev --since="10m" | grep -E "(CYCLE|recommendation|AUTOMATION)" | tail -15 + +# Monitor order cancellation frequency +curl -s http://localhost:9001/api/drift/orders | jq '.orders | map(select(.status == "CANCELED")) | length' + +# Check position monitor behavior +curl -s http://localhost:9001/api/automation/position-monitor | jq '.monitor.recommendation' +``` + +**Solution Pattern**: +```javascript +// ❌ WRONG: Hardcoded recommendation causes loops +const result = { + recommendation: 'START_TRADING', // Always triggers restart + hasPosition: false // When combined, creates infinite loop +}; + +// ✅ CORRECT: Context-aware recommendations +const result = { + recommendation: hasPosition ? 'MONITOR_POSITION' : 'MONITOR_ONLY', + hasPosition: false // Safe - no auto-restart trigger +}; + +// ✅ CORRECT: Disable auto-restart entirely for manual control +/* Auto-restart logic disabled to prevent interference with manual trading */ +``` + +**Prevention Checklist**: +- [ ] Position monitor recommendations are context-aware, not hardcoded +- [ ] Auto-restart logic includes manual override capabilities +- [ ] Order placement doesn't trigger immediate cleanup cycles +- [ ] System allows manual trading without automation interference +- [ ] Logs show clean monitoring without constant restart attempts + +## �🚨 Critical Anti-Patterns to Avoid ### ❌ Don't Do This: ```javascript @@ -598,6 +663,12 @@ const report = await this.learner.generateLearningReport(); // Will crash if fun // Redundant polling setInterval(checkOrders, 60000); // When position monitor already runs frequently +// Auto-restart loops that interfere with trading +recommendation: 'START_TRADING', // Hardcoded - causes constant restart triggers +if (!hasPosition && recommendation === 'START_TRADING') { + // Auto-restart logic that triggers rapid cleanup cycles +} + // Frontend/backend preset mismatch backend: ['5m', '15m', '1h'] frontend: ['5m', '15m', '30m'] // Will cause confusion @@ -620,6 +691,11 @@ if (typeof this.learner.generateLearningReport === 'function') { // Leverage existing infrastructure // Add cleanup to existing position monitor instead of new polling +// Smart recommendations that don't trigger loops +recommendation: hasPosition ? 'MONITOR_POSITION' : 'MONITOR_ONLY', // Context-aware +// Disable auto-restart for manual control +/* Auto-restart logic disabled to prevent interference */ + // Ensure consistency const PRESETS = { scalp: ['5m', '15m', '30m'] }; // Same in frontend and backend