averagejoematt method

the method · under the hood

The Game, Explained

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
componentweightkindparameters
duration vs target25%sensortarget hours 7.5
efficiency20%sensor
deep sleep pct20%sensortarget pct 0.15
rem pct15%sensortarget pct 0.2
onset consistency20%sensorwindow 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
componentweightkindparameters
training frequency15%behaviortarget sessions week 5
zone2 adequacy20%behaviortarget minutes 150
training load balance15%sensor
progressive overload10%sensor
movement diversity10%behaviortarget types 4
daily steps10%sensortarget 8000
strength sessions20%behaviortarget 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
componentweightkindparameters
calorie adherence20%behaviortolerance pct 0.1
protein total20%behaviortarget grams 190
protein distribution10%behaviorthreshold grams 30 · target meals 4
consistency10%behavior
body composition progress40%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
componentweightkindparameters
cgm glucose control30%sensor
lab biomarkers40%sensorfull value days 30 · decay period days 60 · expiry days 180 · floor pct 0
blood pressure15%sensor
resting heart rate15%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
componentweightkindparameters
t0 habit compliance30%behavior
t1 habit compliance15%behavior
journal consistency15%behavior
state of mind valence10%sensor
stress management10%sensor
vice control10%sensor
reading practice10%behaviortarget 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
componentweightkindparameters
social interaction frequency45%sensor
interaction quality35%sensor
social mood correlation20%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
componentweightkindparameters
cross pillar variance35%sensor
data completeness15%sensor
streak maintenance20%sensor
weekend weekday stability15%sensor
task follow through15%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 scoreXP earnednet 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 levelstep per move
more than 25 levels3 levels
more than 10 levels2 levels
anything smaller1 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.

tierlevelslevel uplevel downtier uptier down
Foundation1–203 days5 days5 days7 days
Momentum21–405 days7 days7 days10 days
Discipline41–607 days10 days10 days14 days
Mastery61–8010 days14 days14 days21 days
Elite81–10014 days21 days21 days30 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).

effectconditionmodifier
Sleep Dragsleep < 35movement −8% · mind −5%
Training Boostmovement > 70metabolic +5%
Focus Buffmind > 70consistency +3%
Synergy Bonusnutrition > 70 AND movement > 70metabolic +8%
Alignment Bonusall_pillars >= 41all pillars +3%
Vice Shieldany_vice_streak > 30mind +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