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.
This commit is contained in:
mindesbunister
2025-07-29 15:03:38 +02:00
parent 63a94d8b73
commit 9ba336cdc6

View File

@@ -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
## <EFBFBD> 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
## <20>🚨 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