You are preparing the Femundløpet, six days of racing. Until now, telling MushMate meant opening "Advanced settings" on the third step of the form, between top speed and the weekly growth cap, and typing a number into "Race days". Nine mushers out of ten never found it. And when the field stayed at zero, the plan said nothing: it counted the race as a single day and chained training blocks based on the distance, with nothing on screen announcing it. Here is what changes.
Duration is a property of the race, not a setting
In Plan › your objective › Configuration, the first step "My race or objective" now gathers everything a race is in a single block, "The race": the reference race first, then distance, duration, course and team sizes. Duration is answered in one gesture: "One day" or "Several days". The second reveals, together, the number of days, the distance per stage and the rest between stages, with a line stating what the engine will plan: "6 stages × 100 km = 600 km".
A new objective is "one day" by default. An objective you created before this question is not answered on your behalf: no branch is lit, a banner explains, and nothing changes until you choose. We come back to this below, because it is a decision taken against the obvious.
Picking a race fills in what follows
When you pick a reference race — Femundløpet, Finnmarksløpet, or a race you created — it lends its distance, duration, distance per stage, course and team sizes. Every lent value carries a small "↩ Femundløpet" mark next to its label. Type something else and the mark reads "typed · definition: 14" and offers "Take back" to return to the race's value. Your input always wins, including when you clear a field.
One value is never lent: the rest between stages. The catalogue does not know it, and showing "0" would have meant "no rest imposed" — a false prescription born of a missing column. That field stays yours, from the rules.
The plan stops guessing in silence
For an objective whose duration was never set, a banner appears on the Configuration tab, the Plan tab and in the form: "Race duration not set: the plan counts it as a single day and trains in consecutive 2-day blocks based on the distance. Set the duration." The number of block days is read from your plan, not recomputed. The plan itself does not move: nothing changes until you answer.
The Race tab finally shows the race
The Race tab used to say "the race itself (rules, team sizes) lives on its definition" — and showed that definition nowhere. Two cards now open the tab. "The race" shows the definition, read-only: its name, place, duration, distance and kilometres per stage, regulatory team sizes, course, the link to the rules, and "Change race". "What the plan keeps" shows this objective's configuration — what the engine actually reads — with the same lending marks. "My engagement" moves to third place, unchanged.
If your objective is attached to no race, the card stays and invites you to attach one, or create one.
Create a private race, without going through us
A local race missing from the catalogue? "+ Create a private race" sits next to the race list, in the objective form, in the Race tab and in a milestone's form. It is visible to your kennel only. From the Race tab, the created race is attached to the objective in the same gesture. An administrator may later promote it to the public catalogue; it then changes owner, and the screen tells you before.
Start, finish, loop
A staged race can be a loop or point to point. The "The race" block asks: "Loop" (one place, start and finish) or "Point to point" (a start, a finish). The course shows on the cards and on the sheets — "Røros · loop", "Alta → Kirkenes" — and the reference race lends it like the rest.
Your milestones have their sheet, next to the objective
A season is a sequence of races: milestones, then the target. The Race tab now opens on the season's race rail: the target marked ★, and your milestones numbered 1, 2, 3 — the same numbering as on the timeline. Every card has its printable sheet. Clicking a milestone opens its file: the same two cards, "On the plan" (its week in the plan, and "its 3 stages count as 3 days of fatigue, not one") and "On site".
A milestone's sheet prints its race, what the plan keeps and the season's dogs, and leaves four lines to fill in by hand: bib number, meeting point, briefing, start time. The target's sheet now lists the races of the season. Printed together, they make your season's logbook.
What it does not do
The phone does not enter duration, course or reference race. An objective created from the mobile app is a one-day race, or guessed as before. It reads correctly what the web entered. That lot is registered and described; it is not built.
There is no per-stage place. Røros → Tynset → Orkanger cannot be entered: a race has a start and a finish, not a list of stages. Nothing in the app would use it today.
A milestone carries no bib number or meeting point in the app. Those four facts have their lines on the printed sheet. If you write them every time, tell us: that is the signal to store them.
A new maintenance or leisure objective is now "one day". It used to stay at zero, and the plan chained training blocks beyond 200 km as for a race. Not anymore: this is the declared behaviour, not a side effect.
A decision taken against the obvious
The request said "mandatory, default one day". We applied it to new objectives. For existing objectives whose duration had stayed at zero, we refused to pre-select "one day". The reason is in the engine: "one day" means "a single push, never a chained block", while zero means "chain blocks based on the distance". Pre-answering would have written "one day" at the next save and removed the training blocks of a Femundløpet plan, with no screen saying so. Hence the third state: nothing lit, a banner, and your plan as it is until you choose.