Levels, traits and skills
The economy has two currencies, and they are kept apart on purpose: points buy levels, and traits unlock persona skills. Neither one inflates the other. Everything is recomputed from your journal every time; there is no wallet table that could drift out of step with what you logged.
Points
Each of the three habits (training, meals, steps) earns points for every day of its current, unbroken run:
| Day of the run | Points per day |
|---|---|
| Days 1–7 | 1 |
| Days 8–14 | 2 |
| Day 15 onward | 3 |
A 10-day training run is worth 7 × 1 + 3 × 2 = 13 points. Runs in different habits add together.
Expiry is structural. Only current runs back your balance. When a run breaks, the points it earned are no longer counted, and nothing has to run on a schedule to take them away.
Levels
Points buy Luna levels. Luna starts at level 0, the maximum is 10, and level L costs 10 × L points (level 1 costs 10, level 10 costs 100, and all ten together cost 550).
| Rule | Effect |
|---|---|
| Levels never revoke. | A broken streak can leave your balance at zero, but a bought level stays bought. Luna never gets worse because of a bad week. |
| Balance = points from current runs − cost of every level bought. | The balance never goes below zero. |
The level ring on the home screen is the economy. The number is the level
and the arc is progress to the next one. When you can afford a level, the ring
turns gold and reads “Level N is ready — tap to level up! (X pts)”. Tapping
it calls HabitService.LevelUp. At level 10 it reads “Luna is at the highest
level”.
If you tap without enough points, the server answers FAILED_PRECONDITION:
“level N costs C points — you have B. Keep the streaks alive.” At the
top it answers “luna is already at its highest level”.
A level unlocks forms, adds majesty to the creature, feeds the evolution stage, and helps unlock skills (below).
Compute tier
Each level also maps to a compute tier, reported as compute_tier by
GetScore:
| Level | Tier |
|---|---|
| 0–3 | baseline |
| 4–6 | standard |
| 7–10 | priority |
LUNA_ADMIT_MAX). It is off by default. Even when on, it reorders only
Luna’s own vision and photo-plan calls, and it can’t win model slots from
other apps on the shared inference plane. Don’t read “priority” as “faster
chat”.Traits: what the walking earns
Traits are permanent milestones over your accumulated steps. Like levels, they never revoke.
| Trait | Measures | Level thresholds |
|---|---|---|
| Wayfarer: “Shows up and walks the day out, day after day.” | Lifetime days that reached 80% of the step goal | 3 · 10 · 25 · 60 · 120 days |
| Strider: “Ground covered — every step ever counted.” | Lifetime steps, using each day’s maximum (never a sum of snapshots) | 100k · 300k · 1M · 3M · 10M steps |
Traits drive the creature’s evolution stage and the skill paths below.
Skills: one path per aspect
Every aspect has a skill path. A skill unlocks from a trait level, from Luna’s level, or both. A skill either changes what the server computes, or it is labelled “(advisory)”, which means it only adjusts the prompt.
| Aspect | Skill | Effect | Unlocks at |
|---|---|---|---|
| Trainer | Periodization | Training plans gain week-by-week progression and a deload week | Wayfarer 2 · level 4 |
| Trainer | Conditioning | Training days end with a conditioning finisher drawn from the catalog | Strider 2 |
| Nutritionist | Meal Timing | Daily targets split into per-meal portions instead of one day total | Wayfarer 2 · level 4 |
| Nutritionist | Fuel Cycling | Training days get an extra fuelling meal; rest days stay lean | Strider 3 · level 7 |
| Counsel | Long Memory | Recalls further back before advising (advisory) | level 4 |
| Keeper | Day Shape | Structures advice as a concrete day plan, not a list (advisory) | level 4 |
| Muse | Wilder Palette | Offers stranger, more divergent directions first (advisory) | level 4 |
| Naturalist | Field Notes | Adds behavioural context and comparisons between species (advisory) | level 4 |
There is a privacy rule here, enforced by tests: only the trainer and nutritionist, the two aspects allowed to read your health journal, may have step-trait requirements. The other four gate on level alone, because a level is economy data, not health data.
A locked coaching skill produces exactly the plan you’d get without the feature, not a worse one. Skills appear on the profile page’s persona cards. The Steps card lists the next few with what is still missing, in your own units (“6 good step days”, “40k steps”, “level 4”).
For operators: granting a level
A level can be granted without inventing habit history:
luna-server grant-level --account <email> --level 10 --reason "<why>"This writes a LEVEL_UP receipt into that account’s journal. --account is
required. Never backdate workout or meal events to mint points. That
writes false health history into the journal that grounds every piece of
coaching. See Access and sessions.