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-infofor 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_indoorParameter: New query parameter for/v1/calculateendpoint- 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()withdatetime.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 detailsrange_wind_models.pkl: Trained ML models for wind predictionunified_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"
Range Search
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.