docs: Add multi-fix deployment verification to VERIFICATION MANDATE

- Extended verification checklist for sessions with multiple related fixes
- Added requirement to verify container newer than ALL commits
- Included example from Nov 16 session (3 fixes deployed together)
- Added bash commands for complete deployment verification
- Emphasized that ALL fixes must be deployed, not just latest commit
- Updated Common Pitfall #47 with deployment verification commands
- Prevents declaring fixes 'working' when only some are deployed
This commit is contained in:
mindesbunister
2025-11-16 10:33:58 +01:00
parent 84f40f3e15
commit 54815a0daa

View File

@@ -84,6 +84,7 @@
3. Comparing calculated values to source data
4. Testing with real trades when applicable
5. **CONFIRMING CODE IS DEPLOYED** - Check container start time vs commit time
6. **VERIFYING ALL RELATED FIXES DEPLOYED** - Multi-fix sessions require complete deployment verification
**CODE COMMITTED ≠ CODE DEPLOYED**
- Git commit at 15:56 means NOTHING if container started at 15:06
@@ -92,6 +93,42 @@
- If container older than commit: **CODE NOT DEPLOYED, FIX NOT ACTIVE**
- Never say "fixed" or "protected" until deployment verified
**MULTI-FIX DEPLOYMENT VERIFICATION**
When multiple related fixes are developed in same session:
```bash
# 1. Check container start time
docker inspect trading-bot-v4 --format='{{.State.StartedAt}}'
# Example: 2025-11-16T09:28:20.757451138Z
# 2. Check all commit timestamps
git log --oneline --format='%h %ai %s' -5
# Example output:
# b23dde0 2025-11-16 09:25:10 fix: Add needsVerification field
# c607a66 2025-11-16 09:00:42 critical: Fix close verification
# 673a493 2025-11-16 08:45:21 critical: Fix breakeven SL
# 3. Verify container newer than ALL commits
# Container 09:28:20 > Latest commit 09:25:10 ✅ ALL FIXES DEPLOYED
# 4. Test-specific verification for each fix
docker logs -f trading-bot-v4 | grep "expected log message from fix"
```
**DEPLOYMENT CHECKLIST FOR MULTI-FIX SESSIONS:**
- [ ] All commits pushed to git
- [ ] Container rebuilt successfully (no TypeScript errors)
- [ ] Container restarted with `--force-recreate`
- [ ] Container start time > ALL commit timestamps
- [ ] Specific log messages from each fix observed (if testable)
- [ ] Database state reflects changes (if applicable)
**Example: Nov 16, 2025 Session (Breakeven SL + Close Verification)**
- Fix 1: Breakeven SL (commit 673a493, 08:45:21)
- Fix 2: Close verification (commit c607a66, 09:00:42)
- Fix 3: TypeScript interface (commit b23dde0, 09:25:10)
- Container restart: 09:28:20 ✅ All three fixes deployed
- Verification: Log messages include "Using original entry price" and "Waiting 5s for Drift state"
### Critical Path Verification Requirements
**Position Manager Changes:**
@@ -2013,7 +2050,19 @@ trade.realizedPnL += actualRealizedPnL // NOT: result.realizedPnL from SDK
- **TypeScript interface:** Added `needsVerification?: boolean` to ClosePositionResult interface
- **Git commits:** c607a66 (verification logic), b23dde0 (TypeScript interface fix)
- **Deployed:** Nov 16, 2025 09:28:20 CET
- **Lesson:** In DEX trading, always verify state changes actually propagated before updating local state
- **Verification Required:**
```bash
# MANDATORY: Verify fixes are actually deployed before declaring working
docker logs trading-bot-v4 | grep "Server starting" | head -1
# Expected: 2025-11-16T09:28:20 or later
# Verify close verification logs on next trade close:
docker logs -f trading-bot-v4 | grep -E "(Waiting 5s for Drift|Position verified closed|needsVerification)"
# Verify breakeven SL uses database entry:
docker logs -f trading-bot-v4 | grep "Breakeven SL: Using original entry price"
```
- **Lesson:** In DEX trading, always verify state changes actually propagated before updating local state. ALWAYS verify container restart timestamp matches or exceeds commit timestamps before declaring fixes deployed.
46. **100% position sizing causes InsufficientCollateral (Fixed Nov 16, 2025):**
- **Symptom:** Bot configured for 100% position size gets InsufficientCollateral errors, but Drift UI can open same size position