v0.17.15

📅 September 29, 2025 👤 Alex Jokela 🔖 67e244d

Version 0.17.15 Release Notes

🎯 Wind Intelligence & Range Information System

Major Features

🌬️ ML-Based Wind Intelligence

  • 900+ Shooting Ranges: Comprehensive database covering USA and Canada
  • Per-Range Wind Models: Machine learning models trained on historical wind data for each range
  • Smart Predictions: Location-specific wind forecasts with MOA adjustments
  • Confidence Scoring: Model accuracy indicators for reliability

📍 Range Information API

  • New Endpoint: /v1/range-info for range queries
  • Location Search: Find ranges by latitude/longitude with radius search
  • Range Capabilities: Max distances, typical shooting distances, range types
  • Wind Integration: Automatic wind conditions for each range location

🏢 Indoor Range Support

  • Automatic Detection: System identifies indoor ranges from database
  • is_indoor Parameter: New query parameter for /v1/calculate endpoint
  • Wind Exclusion: Automatically disables wind calculations for indoor ranges
  • Smart Messaging: Appropriate advice for indoor vs outdoor shooting

Technical Improvements

🔧 CI/CD Enhancements

  • Fixed Git LFS issues in GitHub Actions
  • Manual LFS control for reliable file downloads
  • Verification steps to ensure files aren't pointers
  • Improved health check resilience

🕐 Deprecation Fixes

  • Replaced datetime.utcnow() with datetime.now(timezone.utc)
  • Using timezone-aware datetime objects throughout
  • Future-proofed for Python deprecation schedule

Data & Models

📊 New Data Files

  • range_capabilities_complete.json: 901 ranges with full details
  • range_wind_models.pkl: Trained ML models for wind prediction
  • unified_bullet_db.sqlite: Consolidated bullet database

🤖 ML Models

  • Gradient Boosting wind predictors
  • ~2.5 mph MAE accuracy
  • Hourly pattern recognition
  • Seasonal adjustments

API Enhancements

Wind Intelligence Response

{
  "wind_intelligence": {
    "local_pattern": "At DFW Gun Range (100 yard indoor range), conditions are calm.",
    "shooting_advice": "Indoor range - no wind compensation needed",
    "confidence": "high",
    "predicted_conditions": {
      "current_wind_mph": 0,
      "is_indoor": true
    }
  }
}

Range Information Response

{
  "closest_range": {
    "name": "DFW Gun Range and Academy",
    "distance_miles": 0.5,
    "type": "indoor_mixed",
    "max_distance_yards": 100,
    "typical_distances": [7, 15, 25, 50, 75, 100]
  },
  "wind_conditions": {
    "current_wind_mph": 0,
    "advice": "Indoor range - no wind compensation needed",
    "is_indoor": true
  }
}

Usage Examples

Indoor Range Calculation

curl "https://api.ballistics.7.62x51mm.sh/v1/calculate?bc_value=0.500&bc_type=G1&muzzle_velocity=2800&bullet_mass=175&target_distance=100&is_indoor=true"
curl "https://api.ballistics.7.62x51mm.sh/v1/range-info?latitude=32.8225&longitude=-96.8583&radius=20"

Statistics

  • 901 shooting ranges in database
  • 53 indoor ranges
  • 486 outdoor ranges
  • 362 ranges with unconfirmed type
  • 7,720 historical wind data points collected
  • $0.77 total cost for wind data collection

Bug Fixes

  • Health check now returns 200 with "degraded" status instead of 503
  • BC segments database failures no longer cause health check failures
  • Fixed datetime deprecation warnings throughout codebase
  • Improved Git LFS handling in CI/CD pipeline

Breaking Changes

None - All changes are backward compatible

Migration Notes

No migration required. The is_indoor parameter is optional and defaults to false.

Deployment Notes

  • Version 0.17.15 ready for production
  • All tests passing (2,294 tests)
  • Git LFS files properly handled in CI/CD

Contributors

This release includes comprehensive wind intelligence and range information features developed through extensive data collection and ML training.

Changes

✨ Features

  • ML-based wind intelligence for 900+ shooting ranges
  • Range information API endpoint at /v1/range-info
  • Indoor range detection and wind exclusion
  • is_indoor parameter for /v1/calculate endpoint

🐛 Fixes

  • Git LFS issues in CI/CD pipeline
  • Datetime deprecation warnings (utcnow -> now(timezone.utc))
  • Health check returning 200 with degraded status