#!/bin/bash # Validates that train_all_models_fixed.sh uses correct commands # Does NOT run full training (too expensive), just validates structure set -e echo "🔍 Validating train_all_models_fixed.sh..." echo "" SCRIPT_PATH="scripts/train_all_models_fixed.sh" # 1. Check script exists if [ ! -f "$SCRIPT_PATH" ]; then echo "❌ Script not found: $SCRIPT_PATH" exit 1 fi echo "✅ Script exists: $SCRIPT_PATH" # 2. Check script is executable or can be made executable if [ ! -x "$SCRIPT_PATH" ]; then chmod +x "$SCRIPT_PATH" echo "✅ Made script executable" else echo "✅ Script already executable" fi # 3. Check bash syntax if bash -n "$SCRIPT_PATH"; then echo "✅ Bash syntax valid" else echo "❌ Bash syntax errors found" exit 1 fi # 4. Verify it uses correct cargo commands if grep -q 'cargo run -p ml --example "train_${MODEL_TYPE}"' "$SCRIPT_PATH"; then echo "✅ Uses correct cargo run pattern" else echo "❌ Incorrect cargo command pattern" exit 1 fi # 5. Verify it passes correct arguments REQUIRED_ARGS=("epochs" "learning-rate" "batch-size" "output-dir" "verbose") for arg in "${REQUIRED_ARGS[@]}"; do if grep -q "\-\-$arg" "$SCRIPT_PATH"; then echo "✅ Passes argument: --$arg" else echo "❌ Missing argument: --$arg" exit 1 fi done # 6. Verify model types are correct MODELS=("dqn" "ppo" "mamba2" "tft") for model in "${MODELS[@]}"; do if grep -q "\"$model\"" "$SCRIPT_PATH"; then echo "✅ Includes model: $model" else echo "❌ Missing model: $model" exit 1 fi done # 7. Check GPU detection if grep -q "nvidia-smi" "$SCRIPT_PATH"; then echo "✅ Includes GPU detection" else echo "⚠️ No GPU detection (warning only)" fi # 8. Check output directory creation if grep -q "mkdir -p" "$SCRIPT_PATH"; then echo "✅ Creates output directory" else echo "❌ Missing output directory creation" exit 1 fi # 9. Verify uses --release and --features cuda if grep -q "\-\-release \-\-features cuda" "$SCRIPT_PATH"; then echo "✅ Uses release build with CUDA" else echo "⚠️ Missing --release or --features cuda (warning only)" fi # 10. Check logging if grep -q "tee.*training.log" "$SCRIPT_PATH"; then echo "✅ Logs training output" else echo "⚠️ No training log capture (warning only)" fi echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "✅ All Validation Checks Passed!" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "📋 Script Summary:" echo " • Location: $SCRIPT_PATH" echo " • Models: ${MODELS[*]}" echo " • Arguments: ${REQUIRED_ARGS[*]}" echo " • GPU: Required (nvidia-smi check)" echo " • Build: Release with CUDA features" echo "" echo "🚀 Ready to train! Run:" echo " bash $SCRIPT_PATH" echo ""