Most fitness apps count consecutive days. That works for a language app, where the prescribed behaviour is "practise every day". It works badly for training, where the prescribed behaviour regularly includes not training. A rest day is not a lapse — it is the day your plan asked for, and it is where adaptation happens. A daily streak makes that day feel like a loss, which is the opposite of what a coach should do.
So the streak counts weeks. A week is kept when you meet your own commitment, and how you spread the sessions inside it is your business.
The number of sessions a week needs to count comes from the most specific thing we know about you:
A plan week with nothing scheduled is a rest week. It neither keeps nor breaks the streak, and it earns nothing.
That is the whole rule. One condition breaks a streak, because a rule you cannot hold in your head is a rule you cannot train against.
The reserve is a buffer that absorbs a missed week. It builds while you train: every kept week adds to it, a week above commitment adds double, and streak milestones at 4, 8, 12, 26 and 52 weeks add more. An athlete you invite who starts training adds to it too, twice over the life of your account.
It stops at four covered weeks. A bigger buffer would mean months away from training cost nothing, which would make the whole thing meaningless for exactly the athletes who have been here longest.
It is spent automatically. You are told the Monday after it happens, not asked for permission on a morning when you already know you missed something.
The number does not drop to zero on your screen. The run that ended stays visible for a week beside the new count, because the length you reached is a real thing you did and a bare zero is a reason to close the app. Injuries happen, life happens, and starting again at one is not a failure state.
Cities and countries are ranked on the average hours their athletes trained that week, never the total. A total is a contest of population: the largest city would win every week forever and a small one could never enter. On the average, a small city with a few committed athletes can finish first, which is the only version where your own week actually moves the number.
A city needs five athletes and a country needs ten before it gets a rank. Below that, one person's unusual week decides the whole standing and the result reads as a glitch. Places under that floor are still named, so you can see yours is there and waiting on numbers rather than wondering whether it is broken.
Boards rank on hours, and say hours. Hours are not a measure of how hard you trained — an easy week can be a long one — and nothing on a board claims otherwise. For how hard your own weeks were relative to each other, your week ranking uses training load instead, because that comparison is only honest against yourself.
Your own place in a city or country is shown without a denominator. Where you sit among the people in your city is worth knowing; how many people that is, is not a number about you.
A standing is frozen when the week ends. If you upload a ride three days late, those hours count toward the week you are in now, never the one that already closed. Without that rule a placement could silently rewrite itself days after you saw it, and a record we showed you would stop being true.