The character sheet is a game — and a game you can't audit is just a badge. This page is the rulebook: every number below is generated from the exact config and constants the engine runs (engine v1.6.1 · config v1.5.0), never hand-typed, and a drift check fails the build if the rules change without this page regenerating.
The seven pillars
Every night the engine scores seven pillars, each 0–100, from weighted components. Each component is either a behavior (something that is done or not done — logging food, training, journaling) or a sensor (something a device measures). The distinction is load-bearing: when a behavior has no data, the behavior didn't happen and it scores 0 at full weight; when a sensor has no data, the engine has no evidence either way, so the component drops out of the weight sum instead (ADR-104). The pillar weights below sum to 100% of the headline character level.
Sleep
20% of the headline · smoothing λ 0.85 · owner Dr. Lisa Park
component
weight
kind
parameters
duration vs target
25%
sensor
target hours 7.5
efficiency
20%
sensor
—
deep sleep pct
20%
sensor
target pct 0.15
rem pct
15%
sensor
target pct 0.2
onset consistency
20%
sensor
window days 14
0% of this pillar's weight is behavior — below the atrophy threshold; a quiet stretch here reads as a sensor gap, not detraining.
Movement
18% of the headline · smoothing λ 0.9 · owner Dr. Sarah Chen
component
weight
kind
parameters
training frequency
15%
behavior
target sessions week 5
zone2 adequacy
20%
behavior
target minutes 150
training load balance
15%
sensor
—
progressive overload
10%
sensor
—
movement diversity
10%
behavior
target types 4
daily steps
10%
sensor
target 8000
strength sessions
20%
behavior
target days week 3
65% of this pillar's weight is behavior — it atrophies under sustained logging silence (see the dark rules below).
Nutrition
18% of the headline · smoothing λ 0.88 · owner Dr. Marcus Webb
component
weight
kind
parameters
calorie adherence
20%
behavior
tolerance pct 0.1
protein total
20%
behavior
target grams 190
protein distribution
10%
behavior
threshold grams 30 · target meals 4
consistency
10%
behavior
—
body composition progress
40%
sensor
—
60% of this pillar's weight is behavior — it atrophies under sustained logging silence (see the dark rules below).
Metabolic
12% of the headline · smoothing λ 0.95 · owner Dr. Peter Attia
component
weight
kind
parameters
cgm glucose control
30%
sensor
—
lab biomarkers
40%
sensor
full value days 30 · decay period days 60 · expiry days 180 · floor pct 0
blood pressure
15%
sensor
—
resting heart rate
15%
sensor
—
0% of this pillar's weight is behavior — below the atrophy threshold; a quiet stretch here reads as a sensor gap, not detraining.
Mind
15% of the headline · smoothing λ 0.85 · owner Coach Maya Rodriguez
component
weight
kind
parameters
t0 habit compliance
30%
behavior
—
t1 habit compliance
15%
behavior
—
journal consistency
15%
behavior
—
state of mind valence
10%
sensor
—
stress management
10%
sensor
—
vice control
10%
sensor
—
reading practice
10%
behavior
target days week 4
70% of this pillar's weight is behavior — it atrophies under sustained logging silence (see the dark rules below).
Relationships
7% of the headline · smoothing λ 0.93 · owner Social Connection
component
weight
kind
parameters
social interaction frequency
45%
sensor
—
interaction quality
35%
sensor
—
social mood correlation
20%
sensor
—
0% of this pillar's weight is behavior — below the atrophy threshold; a quiet stretch here reads as a sensor gap, not detraining.
Consistency
10% of the headline · smoothing λ 0.93 · owner The Chair
component
weight
kind
parameters
cross pillar variance
35%
sensor
—
data completeness
15%
sensor
—
streak maintenance
20%
sensor
—
weekend weekday stability
15%
sensor
—
task follow through
15%
sensor
—
0% of this pillar's weight is behavior — below the atrophy threshold; a quiet stretch here reads as a sensor gap, not detraining.
A day becomes XP
Each pillar's daily raw score converts to XP through fixed bands, and a daily decay of 1 XP is charged against it — so the net column is what a day actually pays. The zero point is deliberately set at a decent-but-unremarkable day (ADR-134): coasting neither builds nor bleeds.
day's raw score
XP earned
net after decay
80–100
+3
+2
60–79
+2
+1
40–59
+1
+0
20–39
+0
-1
0–19
-1
-2
A level is 100 XP deep. When the balance would go below zero it shows as visible debt instead of hiding under a floor, capped at 100 XP so a long dark stretch stays climbable; good days pay debt down before XP grows again. XP earned also fills a small buffer (capped at 40 XP) that acts as demotion insurance: a level-down can only land once the buffer is under 20 XP — and a confirmed multi-day dark stretch bypasses the buffer entirely, because banked XP is flip-flop insurance against noisy data, never a shield against a provable absence. In the first 14 days of a cycle the decay phases in linearly, so a fresh start isn't punished before the data stabilizes.
How a level actually moves
Raw scores are smoothed by an exponential moving average (default λ 0.85 over a 21-day window; each pillar can override λ, see the pillar cards). The smoothed score, rounded, is the target level — but no level ever jumps to its target. Four gates stand in the way:
The streak gate. The target must hold above the current level for a full streak of days to climb (longer to fall — see the tier ladder). One great or terrible day moves nothing.
The lived-day gate. A climb also requires today's own measured performance to be at the target — the pre-blend, pre-boost number. EMA momentum after the behavior stopped can't buy a level, and in total logging silence the measured day is 0, so no dark day ever supports a climb (ADR-104).
The coverage gate. Below 50% data coverage the day carries no leveling signal at all: streaks hold, levels freeze in both directions. Thin data is smoothed toward neutral for display, and neutral must never be climbable — nor should a pillar crash on no information.
The XP buffer. A level-down additionally waits until the XP buffer is depleted (see above) — unless the stretch is confirmed dark.
When a gate finally opens, the step size scales with the honest gap, so a pillar far from its target converges instead of marching one level at a time:
gap between target and current level
step per move
more than 25 levels
3 levels
more than 10 levels
2 levels
anything smaller
1 level
The tier ladder
The 100 levels group into five tiers, and the streak gates get progressively harder as the tiers rise — holding Elite demands more proof than leaving Foundation. Falling always takes a longer streak than climbing (a slump has to prove itself harder than a surge), and crossing a tier boundary in either direction demands the longest streaks of all.
tier
levels
level up
level down
tier up
tier down
Foundation
1–20
3 days
5 days
5 days
7 days
Momentum
21–40
5 days
7 days
7 days
10 days
Discipline
41–60
7 days
10 days
10 days
14 days
Mastery
61–80
10 days
14 days
14 days
21 days
Elite
81–100
14 days
21 days
21 days
30 days
Cross-pillar effects
Pillars aren't independent — the engine models a small set of spillovers as multiplicative modifiers on the day's scores. Every active effect applies (they stack), and each is announced on the character sheet when live. Boosts raise the level a pillar converges to, but never the lived-day bar — a standing boost can't demand a day nobody can perform (see the gates above).
effect
condition
modifier
Sleep Drag
sleep < 35
movement −8% · mind −5%
Training Boost
movement > 70
metabolic +5%
Focus Buff
mind > 70
consistency +3%
Synergy Bonus
nutrition > 70 AND movement > 70
metabolic +8%
Alignment Bonus
all_pillars >= 41
all pillars +3%
Vice Shield
any_vice_streak > 30
mind +3%
When the data goes dark
The game's hardest honesty rules are about absence (ADR-104). The sheet must respond truthfully when the logging stops — it can never coast on silence, and it can never punish a sensor outage as if it were a lapse.
Absent behaviors score zero. An unlogged habit is a habit that didn't happen: behavior components score 0 at full weight. A quiet device just drops out of the weight sum — a wearable gap is not a failure.
Thin days blend toward neutral — for display only. As data coverage falls, the day's score is blended toward a neutral 50 (full confidence at 80% coverage). The blend smooths the EMA and the display; it is uncertainty, not performance, so the level gates always judge the unblended measured number.
A never-instrumented pillar is a placeholder, not a reading. With zero components reporting, the pillar shows a mathematical neutral 50 and is excluded from the headline until it earns its first level — after that it counts forever, and going dark later drags honestly instead of vanishing.
Neglect atrophies. After 3 consecutive dark days of manual-logging silence (with no planned pause — sick days and travel never decay), behavioral pillars start to atrophy: the smoothed score multiplies by 0.98 per additional dark day, floored at what each day actually measured. Only pillars whose weight is at least 30% behavioral qualify — currently movement, nutrition, mind — because a dark stretch detrains behaviors, not blood panels.
A confirmed dark stretch falls day by day. The anti-flip-flop streak reset exists for noisy engaged data; a provable multi-day absence is not noise. In a confirmed dark stretch the down-streak persists across drops and the XP buffer stops shielding, so the level keeps stepping down toward what the data earns.
XP bleeds visibly. Silence pays the daily decay with nothing earned; the hole shows as debt on the sheet rather than disappearing under a zero floor.
The headline number — and the mood
The headline Character Level is the weight-averaged mean of the seven pillar levels, renormalized over the pillars that have ever been instrumented, then floored — never rounded up. It understates by construction.
The character's mood — dormant · fading · steady · thriving — is equally deterministic (ADR-105): pure code over the presence signal and the 7-day composite raw-score trend. Dormant is a confirmed dark stretch; fading is quiet logging or a trend of −5 or worse; thriving demands active logging, a trend of +3 or better, and a composite of at least 55; everything else is steady. No model ever decides how the character feels.
What's deterministic, what's judged
Deterministic: everything on this page. Scores, XP, levels, tiers, effects, atrophy, and mood are pure code over logged data — the same inputs always produce the same character, and no language model sits anywhere in the loop (ADR-104/105).
Judged: only the words around the numbers. The coaches' commentary, the weekly chronicle, and the narrative surfaces are AI-written about these pre-computed numbers, grounded by the platform's generation gates — the narration can characterize a level, but it can never move one.
And a boundary worth stating: the game is a motivational lens on real data, not a medical score. Every input is correlative and N=1.
Generated by scripts/v4_build_game_explained.py from config/character_sheet.json and lambdas/character_engine.py — the same config the nightly engine loads. Two tests guard it: the committed page must match the generator's output exactly, and a fingerprint of the engine's mechanics functions must match the one recorded when this prose was last verified (tests/test_game_explained.py). The plain-language story of the level lives on the character explainer; the live sheet is at /data/character/; every other published statistic is documented in the Methods Registry. generated, not authored