Skip to content
Finding

San Blas: a swell window that could never fire

A research finding from the AYON Wave spot catalogue: the two San Blas records carried swell windows that a year of archive hours shows firing 0.4% and 3.3% of the time, so the dominant swell never sat inside either window and carried a penalty in nearly every hour. The correction — 210–225°, where the model archive places the swell — is committed and reaches the app with the next update, and it exposes a second problem that direction alone cannot fix.

Two windows that fired 0.4% and 3.3% of the year

This research note documents a data error found in the two San Blas records in AYON Wave, and what it took to see it. San Blas sits on the Pacific coast of Nayarit, Mexico, in a south-facing bay. One record claimed a swell window of 170–205°, the other 170–210° — the sector the guidebooks give for a south swell.

Counted against a full year of modeled hourly swell from the Open-Meteo archive at the records' model cell, swell arrived inside the 170–205° window 0.4% of the time (33 hours) and inside the 170–210° window 3.3% (286 hours), at most 12.6% in any month (April). The exact twelve-month range was not logged in the commit. Those are not weak windows. They are windows the modeled swell at this cell rarely enters, and the dominant swell never did.

The records were added on 2026-09-07 (commit 07c3100) and carried the windows for six days in the repository. The correction was committed on 2026-09-13 (commit 940457d). The rest of this note covers what the numbers meant in the engine, how the replacement was chosen, and what it leaves unsolved.

What the wrong window did inside the engine

The AYON Wave engine does not switch a spot off when the swell sits outside its window. Since the graded taper was committed on 2026-08-26 (commit 7f0c5fe), a swell inside the window scores +12 as aligned; up to about 20° outside it takes a near-window penalty of −4 and no caution reason; beyond that it is scored as misaligned, −14 to −23. A hard cap that holds the score at 70, under the GO line of 75, applies only 30° or more outside the window. The engine's docstring records the earlier binary scoring — +12 inside, a flat −14 and a caution anywhere outside — as the bug the taper replaced.

With the old windows the dominant 215–225° swell sat 5–15° outside the 170–210° record and 10–20° outside the 170–205° record, which is mostly the −4 band; at 225° on the 170–205° record the penalty was −14. The 170–205° record earned the +12 aligned credit in 33 hours of the year and the 170–210° record in 286, never from the dominant swell. Against a 75-point GO line the gap between +12 and −4 is a 16-point handicap in almost every hour of the year. The hard cap was reached only by the 235–255° windsea, not by the groundswell.

What the handicap cost in recommendations has not been counted. The commit message describes the breaks as "effectively dead in the app"; a read of the engine at the same commit shows the actual effect was a −4 to −14 handicap on the dominant swell, not a shut-off, and that correction is part of this finding. No engine run over the year with the old windows exists, so this note does not claim the breaks were never recommended; it claims that the swell which carries the surf at San Blas never earned the credit for doing so on either record.

The commit does not record how the error was noticed. A spot that rarely earns its direction credit is hard to tell, from inside the app, from a spot that is rarely good — the open problem taken up at the end of this note.

Where the model archive puts the swell

The same year of archive hours shows where the swell at this cell arrives in the archive. The mass of it sits in a narrow band just west of south, and the mean period drops sharply as the direction swings further west.

  • 215–225°: 4632 of the year's hours, mean period 11.9 s — groundswell, the sector that carries the surf.
  • 225–235°: mean period 9.7 s — the period is already collapsing.
  • 235–255°: mean period 8.3 s — local windsea, not groundswell, and onshore in a south-facing bay.

Why the corrected window is 210–225°

The window was set to 210–225° on both records in the repository; the correction reaches the app with the next update. The lower edge keeps the south end of the arriving sector; the upper edge stops before the period evidence says the swell has turned into wind chop.

Three other windows were researched before this one: 200–230°, 205–235° and 230–255°. Two independent reviews rejected the first two as too wide.

The third, 230–255°, was never reviewed and contradicts the period evidence directly: it begins where the mean period has already fallen to 9.7 s and runs across the 8.3 s ground. It was set aside on that basis. Of the four candidates researched, 210–225° is the one that stops before the period evidence collapses and was not rejected. Its 210–215° slice has no separate period figure in the archive statistics.

What the fix does not solve

The new window is consistent with the archive, and it is barely discriminating. It fires 63.8% of all hours in the year, and 100% of hours in June. Direction carries little information at this cell for a plain reason: the swell comes from 215–225° in more than half of all hours (4632 of them), so a direction test that passes tells the engine very little.

What actually gates these breaks is size. Mean swell height at the cell is 0.55–0.80 m, against the roughly 1.5 m at which these points are said to start working. That figure comes from the written descriptions of the break, and AYON has not checked it. San Blas is small most of the year, not mis-aimed.

The consequence for the engine is specific. Any real selectivity here has to come from the height and period terms. Narrowing the direction window further would only recreate the original problem in a smaller form.

  • Swell arrives inside the records' windowMiss
    Record
    170–205° / 170–210°
    Modeled (one year at the cell)
    0.4% / 3.3% of hours
  • Swell arrives inside the corrected window (fitted to this same archive)Not scored
    Record
    210–225°
    Modeled (one year at the cell)
    63.8% of hours — a consistency check against the fitting data, not a test
  • The corrected window discriminates between hoursMiss
    Record
    210–225°
    Modeled (one year at the cell)
    63.8% of hours; 100% in June

Verified stays false

Both records keep verified = false. In AYON's evidence vocabulary a MODEL is a computed estimate, a FIELD OBSERVATION is a timestamped human report, and VERIFIED means a record reviewed against its source and a repeat observation. A year of archive statistics at a model cell is the first of those, not the last.

The corrected window is consistent with the model archive. Whether the break at 210–225° and 1.5 m does what the guidebooks say it does is a question only someone in the water at San Blas can answer, and no AYON field observation exists for San Blas.

The open problem: windows that silently handicap a spot

The generalisable finding is not about San Blas. A direction window written from guidebook lore can be wrong in a way that breaks nothing visibly: inside 30° of error it taxes the spot's score in every hour the swell runs outside it, and past 30° it caps the spot under the GO line outright — quietly, for as long as the window goes unchecked.

The check that caught it is cheap: one year of hourly swell at the record's cell, binned by direction, compared with the window. Every record should pass it before it ships. The results of that check for the rest of the catalogue are not part of this note; they will be published here whichever way they fall.

Evidence discipline

This is research. Estimates are models, not guarantees; a model is never an observation, and a machine estimate is never “confirmed” — only a human reviewing it in the field makes it verified. Nothing on this page is an operational-capability claim, a safety promise, or a prediction of a specific event at a specific place.

References & data

  1. 1.Open-Meteo Marine API — historical hourly swell The archive source: one year of hourly swell height, period and direction at the San Blas records' model cell, binned by direction sector to produce the hour counts and mean periods above. Both records resolve to the same cell. The exact twelve-month range was not logged in the commit. A MODEL archive, not an observation.
  2. 2.AYON Wave spots.ts — San Blas records (commit 940457d) The two break records whose swell window was changed from 170–205° / 170–210° to 210–225° on 2026-09-13, with verified left false on both.
  3. 3.AYON Wave src/domain/direction.ts and src/domain/signal-engine.ts (at commit 940457d) The engine's swell-direction scoring as it stood when the window was changed: a half-cosine taper over the 30° outside a window (directionMatchScore), +12 inside, −4 in the near-window band, −14 to −23 from about 20° outside, GO at a score of 75 or more, and a cap at 70 for swells 30° or more outside. Graded scoring since commit 7f0c5fe, 2026-08-26. The 16-point handicap in this note is the gap between +12 and −4.