DR01 — Grand Isle wind versus tide, version 1.0.0 — local review, 2026-10-21 QUESTION AND CONCLUSION Can observed station wind improve a fixed estimate of observed-minus-predicted water height on a later time period? This model did not beat the unadjusted tide prediction on October–December 2025. The wind increment against season+pressure was small, with a 72-hour resampling range spanning zero. Do not infer that wind has no physical effect or that all possible weather models fail. SOURCE FILES (same directory as this file) wind.json and air_pressure.json — NOAA CO-OPS on-the-hour six-minute observations, interval=h, station 8761724, knots and millibars, UTC; not hourly averages. observations.json and predictions.json — unchanged retained 2025 verified hourly heights and hourly predictions, feet MLLW, UTC. sensors.json and station.json — October 2026 metadata snapshots, not proof of unchanged 2025 instrumentation. Wind elevation 21.499344 ft above site elevation; no height normalization applied. provenance.json — exact URLs, original retrieval timestamps and SHA256 for all six source files. Water-level sources keep their original acquisition dates. Public NOAA material credited to NOAA CO-OPS; no NOAA endorsement. Site calculations separately identified. See https://tidesandcurrents.noaa.gov/disclaimers.html . protocol.json — model design fixed before fitting, not a registered scientific experiment. OFFLINE REPRODUCTION Download reproduce.py, protocol.json, provenance.json and all six source JSON files above into one folder. Use Python 3.11+ with numpy==2.5.4 in an isolated environment. No website dependencies or live NOAA calls are used by the calculation. python -m venv .venv .venv/bin/python -m pip install numpy==2.5.4 .venv/bin/python reproduce.py --input . --output reproduced The script verifies source hashes, screens flags, writes analysis.json and all 8760 hourly rows to hourly-model-records.csv. Coefficients and numeric results use full floating-point precision, rendered to 3 decimal places in the page; output precision is not instrument accuracy. Minute floating-point differences across numerical libraries may occur. In this repository the equivalent command is: python site/scripts/analyze-wind-tide.py --input research/noaa/grand-isle-wind-2025 --output site/public/data/grand-isle-wind-2025 Original plots: site/scripts/plot-wind-tide.py, matplotlib==3.11.2 and NumPy 2.5.4. Plots read saved estimates and do not refit models. No third-party figure reused. QUALITY, FEATURES AND SPLITS Exact UTC hourly grid, 8760 hours; no gap filling. Water flags must equal 0,0; wind flags 0,0; pressure flags 0,0,0. Numeric checks reject blanks/nonfinite values, negative speed, direction outside 0..360, nonpositive pressure. Calm speed zero permits missing direction with zero components. Raw flags remain in the CSV, including excluded rows. All comparisons use one sample requiring eligible target, current pressure, wind at ALL candidate lags 0/3/6/12/24h, and previous-hour target. Exclusions overlap; 67 unique exclusions leave 8693 common hours. 143 otherwise eligible hours are in the two 72h boundary gaps and not used in fit/selection/test. OLS features: intercept; sin(2*pi*h/8760); cos(2*pi*h/8760), with h since 2025-01-01T00Z. Pressure feature (mb-1013.25)/10. Wind features east=-speed*sin(direction), north=-speed*cos(direction), direction from true north in radians, at one candidate lag. Fit only January 1–June 27 (4232/4272 hours). Select lag by combined-model MAE July 1–September 27 (2110/2136 hours). Three-day gaps before validation and test. Test October 1–December 31 (2208/2208 hours). No refit after training. Ties choose first listed lag. Selected wind lag 12h, specific to this design, not a measured physical time constant. Model families: tide_only estimates residual zero; training_mean uses admitted training target mean; season uses intercept and sine/cosine; season_pressure adds pressure; season_wind adds two wind components; season_pressure_wind adds both. persistence_1h uses previous measured residual without fitting and has extra observation information. Coefficient array follows the feature order stated here. MAE=mean(abs(estimate-target)); RMSE=sqrt(mean((estimate-target)^2)); bias=mean(estimate-target). Applying estimated residual to predicted height has identical error. Current pressure is retrospective observed weather, not a forecast input. UNCERTAINTY AND CASE SELECTION Paired error improvement=abs(season_pressure-target)-abs(season_pressure_wind-target). Test-grid circular moving blocks preserve missing rows (none in this test). Fixed RNG seed 8761724, 2000 draws, 72h blocks; sensitivity 24h. Percentile 2.5/97.5 bounds describe within-period resampling with model/lag held fixed. They exclude fitting and selection uncertainty and are not population/climate guarantees. Both intervals reported. Cases: highest and lowest test daily mean residual among UTC days with >=20 common hours; selected Oct 5 and Nov 11, 24h each, with +/-48h context. Selected on observed extremes, not fit; no claim of typicality, causal identification or named-storm attribution. Day weather means use concurrent measurements, not lagged model features; vector mean not compass-bearing arithmetic mean. LIMITATIONS AND MAINTENANCE One station/year; simple seasonal harmonic trained on less than full seasonal cycle; pressure/season covariation; no regional wind, river, full sensor maintenance or catch/effort data. Retrieved predictions are not archived issue vintages. Training improvement did not generalize; do not tune against the reserved test and call it a new independent test. A multiyear extension needs a new version, protocol and fresh test period. Retain original snapshots on correction. Independent scientific review not performed. Do not use as navigation, safe depth, current, access or catch advice.