ath:referenceDate can't express categories with two bounds (U20)

Hi all — Daniel Esterhuysen, joining from the UK. I build AEA (aea-uk.com), which brings UK fixtures, entries and results together for families following an athlete across track and field, cross country and road.

Working through the Competition Data Model and Vocabulary, I hit something in the Category model that I don’t think is a local quirk.

ath:referenceDate can only hold one date, and some categories need two

The spec defines reference Date as a single truncated month-day the published U23F example uses “–1231”.

But take U20 under UKA rules: an athlete is U20 if they are over 18 on 31 August within the competition year, and under 20 on 31 December in the calendar year of competition. Two dates, against two differently-defined years, for one category. The current model can express either bound but not both, so a consumer computing eligibility from it will admit athletes the rules exclude.

U20 is World Athletics’ own band, so this isn’t a UK invention, the UK case just makes the two-bound structure visible because the lower bound sits on a school-year boundary rather than a calendar one.

Two related things the model can’t currently say:

  • The competition year isn’t always the calendar year. UKA rule 107 defines it as 1 October to 30 September. “–0831” is meaningless without knowing which year it falls in, and the spec has nowhere to declare that.
  • Reference dates can vary by territory within one rulebook. UKA is adding a note so that in Scotland the qualifying date for all disciplines is 31 December after the competition year ends, mirroring an existing note for Northern Ireland. recognizing Authority gets us close, but there’s no way to attach a territory-scoped date override to a category.

This is a vocabulary gap, not a knowledge gap

Worth saying plainly: implementers have already solved this. OpenTrack’s documentation sets out the UK calculation in full — even-year bands computed on 31 August prior to the competition year, U20 on 31 December, masters on the day of competition. The logic is well understood and running in production. What’s missing is a way to express it in the vocabulary, so the knowledge stays locked in each implementation rather than travelling with the data.

That feels relevant to the credentials work — if a verifiable credential is going to assert someone’s competitive category, the model needs to pin down what that category is valid against and for how long.

What I’d offer

I’d be glad to write up a concrete proposal for the date model splitting referenceDate into its computation and effective bounds, and adding a way to declare a competition year that isn’t the calendar year. That’s narrow and it’s the part that generalises beyond the UK. I can also supply the current UKA band definitions (U14/U16/U18/U20 since 1 April 2026, with U10 and U12 recognised but outside the rulebook) since those are published.

I’d stop short of the event-level eligibility rules permitted distances, implement weights, hurdle heights. The model can’t express those either, but some of the UK detail is still being finalised, so I’d rather flag it than volunteer a spec against a moving target.

Happy to take this to a GitHub issue if that’s the better venue. Is any of it already in hand?