Course configuration settings used
- Excluded time ranges — Blocks times when no one should start (format HH:MM-HH:MM).
- First start — Earliest allowed time.
- Last start — Latest allowed time (defaults to event setting if blank).
- Allocation Rule Set — Choose BO normal or IOF WRE.
- Preferred gap (mins) — Minimum gap between any starters (unseeded placement).
- Seeded gap (mins) — Minimum gap between seeded starters (must be a multiple of preferred gap).
- Bib start number — Starting bib number for the course (if used).
1. Start slots are prepared Start times are created per course in 1-minute intervals (e.g. 10:00, 10:01, 10:02). Excluded time ranges are skipped. First and last start limits are respected. Each slot has:
- An exact time (in seconds from midnight).
- A block label: Very Early, Early, Middle, Late or Very Late.
- A link to the course.
- An empty assignment field at the beginning. Slots are listed in time order (earliest first). Only slots for the current course are considered.
2. Runners are sorted and grouped Runners are sorted by ranking (highest first). They are divided into three groups:
- Manual cases (helpers, open starts, parent/child splits) – flagged for manual assignment.
- Seeded runners (top ranked or elite).
- Unseeded runners (all others). Both seeded and unseeded lists are shuffled randomly before placement to avoid fixed patterns.
3. Seeded runners are placed Highest ranked first. Placed at fixed intervals (seeded gap minutes apart) in their requested block. If no suitable slot → fallback blocks tried in this order (closest first):
- Very Early → Early → Middle → Late → Very Late
- Early → Very Early → Middle → Late → Very Late
- Middle → Late → Early → Very Late → Very Early
- Late → Middle → Very Late → Early → Very Early
- Very Late → Late → Middle → Early → Very Early
Strict spacing kept. If no slot → marked “NO_SEEDED_SLOT” for manual assignment.
4. Unseeded runners are placed Grouped by requested block. Placed evenly across available slots in requested block (preferring preferred gap minutes). If requested block full → any remaining slot there. If nothing left → first free slot in fallback block (any interval). Marked “OVERFLOW” if outside requested block.
5. Family/group nudge (lowest priority) When slots are equal, small preference for times close to group members. Group = same session ID + same requested block. Checks times already assigned (this run or earlier on any course). Only for unseeded runners. Strongest within 10 min, weaker up to 30 min.
6. Parent split and helpers Entrants needing parent split start (with open start preference) get an open start. Helpers entered with them also get open start. Flagged as manual cases for review and confirmation.
7. Safety and fairness checks
- Existing assignments are never overwritten.
- Empty/invalid requested block → “MISSING_BLOCK” for manual fix.
- Respects excluded ranges, first/last times, gaps and British Orienteering rules (fair start lists, no unfair advantage).
After allocation – what to check
- Counts: entries, manual, seeded, unseeded, used slots.
- Errors: NO_SEEDED_SLOT, NO_UNSEEDED_SLOT, MISSING_BLOCK, OVERFLOW.
- Family groups & parent splits: related runners close where possible.
- Manual/flagged cases need your final times.
WRE elite start allocation (Method A) For elite classes in World Ranking Events:
- Ranked runners (with WRS position) sorted worst to best (lowest first, highest last).
- Unranked runners shuffled randomly and placed first.
- Ranked follow after.
- Slots filtered to every seeded gap seconds, sorted earliest to latest.
- Extra early slots dropped so highest-ranked starts last (classic reverse-order).
- Entries paired directly with remaining slots (first gets earliest, last gets latest).
- Strict IOF fairness: no block preferences, no family nudge.
- Not enough slots → error “SLOT SHORTAGE”.
This process follows British Orienteering and IOF guidelines for fair start lists. Test on a small course first. Review output carefully. Adjust manual times before publishing the start list.