Issue #1: Duplicate Telegram Notifications (Nov 23, 2025) Symptom: Manual closures sent 2x identical notifications Root Cause: Monitoring loop processes trades from array snapshot, trade removed during async processing but loop continues with stale reference Real Incident: - Trade cmibdii4k0004pe07nzfmturo (SHORT SOL) - Entry $128.85, Exit $128.79, P&L +$6.44 - Duplicate 'POSITION CLOSED' messages sent - Logs show 'Manual closure recorded' twice - Database saved correctly (only once) Fix (lib/trading/position-manager.ts): Added guard at start of checkTradeConditions(): ```typescript console.log(`⏭️ Skipping ${trade.symbol} - already removed`) return } ``` Why needed: handlePriceUpdate() collects trades into array BEFORE async processing Loop continues even after handleManualClosure() removes trade from Map Second iteration processes removed trade → duplicate notification Issue #2: Settings UI Changes Require Container Restart (Nov 23, 2025) Symptom: Quality threshold raised to 91 via settings UI, but trade with quality 90 still executed (should've been blocked) Timeline: - Nov 21 18:55: Threshold raised to 91 in code (commit08482b4) - Nov 22 15:08: Container restarted - Nov 22 16:15: Trade #9 quality 90 executed ❌ (should've blocked) - .env file had MIN_SIGNAL_QUALITY_SCORE=81 (old value) Root Cause: Settings API writes to .env but in-memory process.env update doesn't propagate to all modules. Container restart required for full effect. Fix (app/api/settings/route.ts): Added console warning: "⚠️ Container restart recommended" Changed comment from "immediate effect" to "temporary, may not persist" User Impact: - Settings changes via UI now show proper expectations - Manual .env edit + restart remains required for critical settings - Future: Add /api/restart call after settings save Trade #9 Analysis (quality 90, should've been blocked): - ADX: 17.8 (weak, below 18 minimum) - Price Position: 98.6% (extreme high, chasing top) - Loss: -$22.41 (-0.15%) - Result: Validates quality 91 threshold works correctly Commits:08482b4(threshold raise), this commit (duplicate fix + restart requirement)
76 KiB
76 KiB