Ship-ready scaffold with core infrastructure.
- Project scaffold (pyproject.toml, Makefile, CI/CD, pre-commit)
- Constants module (providers, datums, scenarios, error messages)
- Pydantic v2 response models with dual output (JSON + text)
- TideManager orchestrator with provider dispatch
- NOAA CO-OPS provider (stations, predictions, observations)
- Discovery tools (tides_status, tides_capabilities)
- Station discovery tools (list, describe, find_nearest)
- Prediction tools (tides_predict)
- Observation tools (tides_observations, tides_latest)
- Test suite (203 tests)
- README, ARCHITECTURE, SPEC documentation
Core analysis and flood risk assessment capabilities.
- Threshold exceedance analysis (tides_threshold_exceedance)
- Flood projection with SLR scenarios (tides_project_flooding)
- Flooding calendar generation (tides_flooding_calendar)
- NOAA flood outlook integration (tides_flood_outlook)
- Extreme levels lookup (tides_extreme_levels)
- Sea level trend analysis (tides_sea_level_trend)
Local harmonic predictions, UK data sources, artifact storage.
- utide integration for harmonic analysis (tides_harmonic_analysis)
- Local prediction engine (tides_predict_local)
- Constituent storage via chuk-artifacts (pluggable: memory, filesystem, S3)
- Residual computation (tides_residual)
- UK Environment Agency provider (86 tide gauges)
- UKHO Admiralty provider (Discovery tier)
- Cross-provider station search (find_nearest across all providers)
- Example scripts (quick_start, mersea_island_scenario, capabilities_demo)
- NOAA Derived Products API fixes (sea level trends, extremes, HTF)
Performance, reliability, deployment, and harmonic engine fixes.
- ResilientClient with connection pooling, retry, and exponential backoff
- Per-provider rate limiting (configurable requests/second)
- All providers migrated to shared HTTP client (NOAA, EA, UKHO)
- Response caching with configurable TTL (TideManager, 500-entry LRU)
- Two-tier reference cache (memory + chuk-artifacts SANDBOX scope)
- Station lists (24h), details (24h), trends (48h), extremes (48h), flood outlook (12h)
- New servers warm index from S3 — no redundant API downloads
- Sea level trends, extreme levels, flood outlook now cached (previously uncached)
- Dockerfile and docker-compose for containerised deployment
- Tidal current predictions (NOAA current stations, ~4,400 stations)
- tides_currents_stations — station discovery with location filtering
- tides_currents_predictions — velocity predictions (slack/flood/ebb, direction)
- tides_currents_latest — most recent current observation
- Auto-detect bin number from station metadata (bin numbers are station-specific)
- EA provider: start_date handling (YYYYMMDD → ISO since), auto-scaling limit for long date ranges
- Observation-based tide state inference for EA stations (rising/falling from recent readings)
- Harmonic engine fixes:
- utide time arrays now use np.datetime64 (date2num caused 0 constituents — periodogram dt=0)
- Coefficient storage serializes full utide Bunch (reconstruct needs subscript access to aux.opt)
- utide.reconstruct() no longer passed invalid lat parameter
- EA observations sorted ascending before harmonic analysis (EA returns descending)
- Mersea Island demo: self-contained EA workflow (discovery → observations → harmonic analysis → local predictions → flooding calendar)
- 245 tests across 17 test modules, 20 tools across 7 categories
Future enhancements beyond the core 20 tools.
- Datum conversions (tides_convert_datum — convert heights between datums at a station)
- Return period analysis (tides_return_periods — GEV/GPD extreme value analysis)
- Safe passage windows (tides_safe_passage — time windows above draft threshold)
- Surge probability (extreme value analysis, return periods)
- Multi-station interpolation (co-tidal charts)