Why this is derived at all
You did not come ashore to do data entry. What you have after a day is a continuous stream of telemetry from dock-out to dock-in, and somewhere inside it are two or three races. Something has to find them.
The something is the signals themselves. A race committee announces every start with a sequence, and that sequence is recorded — by navigation software, by the instrument, or by the crew running Race Control on the boat. Those signals are the closest thing to an authoritative record of what happened on the water, so the platform reads them rather than asking you to.
1 The signals it reads
Four kinds of event carry the shape of a racing day:
| Signal | What it means to the derivation |
|---|---|
| gun | The starting signal. The anchor everything else is measured from. |
| warning | The five-minute warning. Where the race begins for debrief purposes — you want the pre-start, not just the beat. |
| general recall | The whole fleet is called back. The start it follows did not happen. |
| finish | The navigator’s press as the boat crosses. Where the race actually ended. |
An individual recall is deliberately not in that list. A boat called back individually is a boat still racing, so an individual recall annotates a race rather than removing one.
2 Bracketing the races
Given a day’s signals, the platform brackets each race in four steps. Every threshold below is a named constant — one value, one place, the same on every boat.
Step one: one gun per start
The same start can be recorded twice — the navigation software logged it, and so did the tablet, thirty seconds apart. So guns are collapsed: walking through them in order, a gun is kept only if it is at least 120 seconds after the last gun that was kept.
The comparison is against the last kept gun, not the previous one, so a chain of near-duplicates collapses to one rather than surviving in a chain. Two minutes is chosen to be far longer than any recording delay and far shorter than any real gap between two starts.
Step two: a warning nobody answered
A warning is matched to a gun if a gun falls in the 10 minutes after it. A warning with no such gun gets one invented, at:
Read as a sentence: if the countdown was recorded but the start was not, assume the sequence ran and the gun fired where it should have.
This is a real shape, not a curiosity: it is the tablet whose battery died during the countdown. The race was almost certainly sailed, and losing it because one event went missing would be the wrong answer.
Step three: where the race starts
Each gun is paired with the latest warning in the ten minutes before it, and that warning is where the race begins:
Read as a sentence: the race starts at its warning signal, or ten minutes before the gun if nobody recorded one.
A start earlier than the day’s own beginning is pulled back to it. The pre-start is part of the race here on purpose — approach, line sight and timing are most of what a start is worth reviewing for.
Step four: where the race ends
Without a finish press, the end is a judgement about the day’s cadence rather than a measurement:
Read as a sentence: a race ends when the next one is about to begin — and the day’s last race gets half an hour.
The floor and the cap handle the days that crowd. When starts come quickly, backing off ten minutes from the next start could put a race’s end before its own gun; the floor stops that, and the cap stops the floor from pushing an end past the next race’s beginning. Every end is also held inside the day itself, and a window that comes out empty is dropped rather than served as a race of no duration.
A day with no usable signals at all is not thrown away. It becomes a single window called Full day, spanning everything that was recorded — the one race in the platform with no gun behind it, and an accurate label for a practice session or a delivery.
The constants, in one place
| Constant | Value | What it decides |
|---|---|---|
| Gun dedupe window | 120 s | Two guns closer than this are one start recorded twice. |
| Warning lookback | 10 min | How far back from a gun its warning may be. |
| Lead with no warning | 10 min | How much pre-start to keep when no warning was recorded. |
| Synthesized gun offset | +5 min | Where the gun is assumed to be for a lone warning. |
| Inter-race gap | 10 min | How long before the next start a race is cut off. |
| Minimum race after gun | 10 min | The floor on a race’s length — and on a finish press. |
| Last-race tail | 30 min | How long the day’s final race runs past its gun. |
3 A general recall voids the start
A general recall means the start did not happen. The fleet goes back and does it again, and a debrief that shows two races where one was sailed is worse than useless — the first is thirty seconds of aborted approach wearing a race number.
So recalls are handled before the bracketing above, by removing the signals of the start that died. A recall reaches backwards only, at most 10 minutes, and it does three things:
| Clause | What is removed |
|---|---|
| A gun it followed | A gun in the ten minutes before the recall is voided. Several recalls after one gun void it once; a recall with no start behind it voids nothing. |
| A warning left widowed | A warning that had a gun, and has now lost every gun it could pair with, goes too. Without this, that orphaned warning would invent its own gun in step two — re-deriving the very race the recall removed. |
| A start stopped before the gun | A warning that never had a gun at all is voided when a recall follows it within ten minutes. |
That third clause deserves a word, because it exists for a reason peculiar to how the tablet works. Race Control queues the warning at the start of the sequence, so that a tablet dying mid-countdown cannot lose the race. A start stopped before the gun therefore leaves a warning in the cloud and no gun at all — and without the clause, that warning would synthesize a gun five minutes later and a deliberately abandoned start would appear as a race that never happened.
The two warning clauses can never both apply: which one governs is decided by whether the warning ever had a gun. So the answer never depends on the order the rules are applied in. And a naked warning with no recall near it still gets its synthesized gun — that is the flat battery, and that race probably was sailed.
Ten minutes is the same number three times over, and not by accident: it is the longest start sequence the app runs, and it is also the closest two genuinely different starts can be bracketed. Every gun or warning inside a recall’s window therefore belongs to the one start that recall is about.
4 The finish press
Everything in section 2 is an estimate. The constants describe the cadence of a day — how starts follow one another — and a race’s end is inferred from that cadence rather than measured. An estimate of that shape is wrong in both directions:
- Too long. A race that finished well inside its window keeps the rest of the tail, so the sail back toward the harbour is folded into the race — a flat stretch on every chart that the crew scrubs past each time.
- Too short. A race that runs past its window is cut off while the boat is still racing.
The navigator knows where the race ended, so the navigator presses it. Where there is a press, the platform stops estimating and uses the crossing.
A press binds to the latest gun at or before it, and is honoured when it lands inside two bounds:
Read as a sentence: a finish must be at least ten minutes after its own gun, and must arrive before the next race has begun.
The lower bound is inclusive — a press exactly ten minutes after the gun is a very short race, not an error. The upper bound is strict, and it is the next race’s start — its warning — not its gun, because by then the crew is sailing a different race.
A press can shorten or extend the derived race. The extension is half the point, not a concession: a race cut off at the thirty-minute tail while the boat is still racing is exactly as wrong as one carrying the sail home on the end.
Two presses on one race — a nervous thumb, not two finishes — resolve to the earliest valid one. “Valid” is load-bearing there: a press below the floor never wins however early it is. And “earliest” is decided over the whole set of presses rather than by whichever arrives first, because a tablet that was offline drains its queue in whatever order it likes.
A press outside the bounds is inert: the race keeps the heuristic end. It is still stored and still shown on the timeline — an annotation the platform declined to act on is not the same as one that was thrown away.
That is the limit here. Where nobody pressed, the heuristics stand — they are the fallback, not a deprecated path, and no file format carries a finish press. A night race crossing local midnight keeps the heuristic end too, because the day boundary bounds it.
5 Days and regattas
Above the race sit two more derived things, and both come from calendar dates rather than clock arithmetic.
A day is a venue-local calendar date
A day runs from local midnight to local midnight at the venue — not UTC, and not your laptop’s time zone. This matters more than it sounds. An evening race in Palma that finishes at 23:45 local is 21:45 UTC, and a day cut on UTC would file it correctly; a race that finishes at 00:30 local would be filed under the following day, which is not what anybody at the club thinks happened.
Only dates that actually hold data become days. Lay days leave no row — there is no empty Wednesday to scroll past.
The venue’s time zone is settled by vote, in a fixed order of precedence: a regatta somebody has re-zoned by hand wins outright; then the most common time zone declared by the day’s event imports — one vote each, ties broken so the answer is always the same; and failing both, UTC. An unrecognised zone name degrades to UTC rather than failing the import.
A regatta is a run of days
Read as a sentence: a lay day or two does not end a regatta; a week off does.
Sailing on the 1st, 2nd, 5th and 9th of a month therefore gives two regattas: the 1st, 2nd and 5th together (the 3rd and 4th are two missing dates, which is tolerated), and the 9th on its own (three missing dates, which is not). The gap is counted in whole calendar dates at the venue, so a change of daylight saving in the middle cannot shift the answer.
A regatta names itself from its date range — 7 Aug 2026, 7–9 Aug 2026, 28 Aug – 2 Sep 2026, 30 Dec 2026 – 2 Jan 2027 — until you give it the name the event actually had.
What this means in practice
- Better evidence improves the answer. Import the events file after the telemetry and the day re-derives with real guns in it. Nothing has to be redone by hand.
- A derived race cannot simply be deleted. Removing the row would last until the next import re-created it, so the platform records the deletion durably instead — which is why the confirmation says it stays deleted rather than that it is deleted.
- The heuristics are a floor, not a ceiling. Every constant above exists to give a usable answer from signals alone. Each one is superseded the moment better evidence arrives: a real warning beats the ten-minute lead, a real gun beats the synthesized one, and a finish press beats the tail.