fix(ci): Fix GitLab CI YAML syntax and PPOConfig compilation errors

Two critical fixes for successful pipeline execution:

1. GitLab CI YAML Syntax Fix (.gitlab-ci.yml:84-86)
   - Wrapped echo commands containing colons in single quotes
   - Root cause: YAML parser interprets `"text: value"` as key-value pairs
   - Solution: Single quotes force literal string interpretation
   - Impact: Enables Docker build pipeline execution

2. Trading Service Compilation Fix (trading_service/src/services/enhanced_ml.rs:1328-1348)
   - Added missing early stopping fields to PPOConfig initialization
   - Fields: early_stopping_enabled, early_stopping_patience, early_stopping_min_delta, early_stopping_min_epochs
   - Values: Disabled by default for paper trading (early_stopping_enabled: false)
   - Impact: Resolves pre-push hook compilation error

Technical Details:
- YAML Issue: Colons followed by spaces trigger mapping syntax parsing
- Single quotes preserve shell variable expansion while forcing literal YAML strings
- Early stopping config matches PPOConfig struct updates from Wave D
- Default values: patience=5, min_delta=0.001, min_epochs=10

Validated:
-  YAML syntax validated with PyYAML
-  trading_service compilation successful (cargo check)
-  Ready for GitLab CI/CD pipeline execution

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
jgrusewski
2025-10-31 00:20:00 +01:00
parent ec9b8ffeec
commit 845e77a8b0
54 changed files with 11046 additions and 337 deletions

100
scripts/validate_ppo_adapter.sh Executable file
View File

@@ -0,0 +1,100 @@
#!/bin/bash
# PPO Adapter Validation Script
# Date: 2025-10-30
# Purpose: Verify PPO adapter meets production requirements
set -e
echo "========================================"
echo "PPO ADAPTER VALIDATION SCRIPT"
echo "========================================"
echo ""
PASS=0
FAIL=0
# Test 1: Check for synthetic data generation
echo "Test 1: Checking for synthetic data generation..."
if grep -q "generate_synthetic_trajectories" /home/jgrusewski/Work/foxhunt/ml/src/hyperopt/adapters/ppo.rs; then
echo "❌ FAIL: generate_synthetic_trajectories() found in ppo.rs"
FAIL=$((FAIL + 1))
else
echo "✅ PASS: No synthetic data generation found"
PASS=$((PASS + 1))
fi
echo ""
# Test 2: Check for data loading field
echo "Test 2: Checking for dbn_data_dir field..."
if grep -q "dbn_data_dir" /home/jgrusewski/Work/foxhunt/ml/src/hyperopt/adapters/ppo.rs; then
echo "✅ PASS: dbn_data_dir field found"
PASS=$((PASS + 1))
else
echo "❌ FAIL: dbn_data_dir field NOT found"
FAIL=$((FAIL + 1))
fi
echo ""
# Test 3: Check for early stopping config in PPOConfig
echo "Test 3: Checking for early stopping config..."
if grep -q "early_stopping_enabled" /home/jgrusewski/Work/foxhunt/ml/src/ppo/ppo.rs; then
echo "✅ PASS: early_stopping_enabled found in PPOConfig"
PASS=$((PASS + 1))
else
echo "❌ FAIL: early_stopping_enabled NOT found in PPOConfig"
FAIL=$((FAIL + 1))
fi
echo ""
# Test 4: Run unit tests
echo "Test 4: Running unit tests..."
if cargo test -p ml --lib hyperopt::adapters::ppo 2>&1 | grep -q "test result: ok"; then
echo "✅ PASS: Unit tests passed"
PASS=$((PASS + 1))
else
echo "❌ FAIL: Unit tests failed"
FAIL=$((FAIL + 1))
fi
echo ""
# Test 5: Check if integration tests compile
echo "Test 5: Checking integration test compilation..."
if cargo test -p ml --test hyperopt_ppo_real_data_test --no-run 2>&1 | grep -q "Finished"; then
echo "✅ PASS: Integration tests compile"
PASS=$((PASS + 1))
else
echo "❌ FAIL: Integration tests don't compile"
FAIL=$((FAIL + 1))
fi
echo ""
# Test 6: Check for EarlyStoppingObserver usage
echo "Test 6: Checking for EarlyStoppingObserver integration..."
if grep -q "EarlyStoppingObserver" /home/jgrusewski/Work/foxhunt/ml/src/hyperopt/adapters/ppo.rs; then
echo "✅ PASS: EarlyStoppingObserver used in adapter"
PASS=$((PASS + 1))
else
echo "❌ FAIL: EarlyStoppingObserver NOT used in adapter"
FAIL=$((FAIL + 1))
fi
echo ""
# Summary
echo "========================================"
echo "VALIDATION SUMMARY"
echo "========================================"
echo "Tests Passed: $PASS/6"
echo "Tests Failed: $FAIL/6"
echo ""
if [ $FAIL -eq 0 ]; then
echo "✅ ALL TESTS PASSED - PPO ADAPTER READY FOR DEPLOYMENT"
exit 0
else
echo "❌ VALIDATION FAILED - DO NOT DEPLOY PPO ADAPTER"
echo ""
echo "See reports for detailed fix instructions:"
echo " - PPO_ADAPTER_VALIDATION_REPORT.md"
echo " - PPO_ADAPTER_VALIDATION_SUMMARY.md"
exit 1
fi