Install
openclaw skills install @voronindenis5/diet-plateau-decoderUse when the scale hasn't moved in 2+ weeks: separates TRUE plateaus (real energy-balance stalls) from water-retention masks (sodium, cortisol, menstrual phase, new training damage) and logging drift, using 7-day rolling averages, trend-vs-noise statistics, and expected-rate physics. Verdicts: NOT A PLATEAU / TRUE PLATEAU / LOG BROKEN with a per-verdict action plan.
openclaw skills install @voronindenis5/diet-plateau-decoder"Week 3 and the scale hasn't moved" kills more diets than craving ever did. But most 2–3 week "plateaus" are not stalls — they are masks: the fat is still going, and the water holding it on the scale came from sodium, stress cortisol, a new training program (muscle repair holds water), menstrual phase, or a carb refeed refilling glycogen (each gram binds ~3 g water).
The decoder runs the scale data through three tests:
Verdicts:
| Verdict | Meaning | Action |
|---|---|---|
| NOT A PLATEAU | trend still negative; water is masking it | keep executing; trust the trend line |
| TRUE PLATEAU | smoothed trend flat ≥3 weeks | deficit audit (see below) |
| LOG BROKEN | data too noisy/missing to judge | fix logging first; weekend binges are the usual culprit |
Don't use for: eating-disorder context (obsessive trend-watching is harmful there — this tool is deliberately coarse), or medical edema (pitting, asymmetric swelling → doctor, not statistics).
expected_rate = deficit_kcal_per_day × 7 / 7700 kg/week
(7700 kcal ≈ 1 kg fat; 3500 kcal ≈ 1 lb)
water masks (typical magnitudes):
sodium spike (restaurant/processed day) +0.3 – 1.2 kg for 1–3 days
new training program (repair edema) +0.5 – 2 kg for 1–2 weeks
menstrual luteal phase +0.5 – 2 kg, resolves with menses
carb refeed after low-carb +0.5 – 1.5 kg (glycogen 3:1 water)
alcohol diuretic then rebound +0.3–1 kg
cortisol (sleep<6h, life stress) +0.3 – 1 kg, diffuse
constipation +0.2 – 0.8 kg of the obvious
Adaptive thermogenesis is real but modest at first: NEAT drops and TDEE eases down ~5–15% over months, not weeks. A week-3 stall is almost never "starvation mode"; it is water or arithmetic (weekend surpluses erasing weekday deficits — a 1400-kcal weekend overshoot halves a 500/day deficit).
# weights in kg, one per day (also accepts JSON log, see --help)
python3 scripts/plateau_decoder.py --weights 82.1,81.8,82.4,81.6,81.9,81.4,81.7,81.5,81.6,81.3,81.4,81.2,81.3,81.1 \
--expected-loss 0.5 --unit kg
# lb user, 3 weeks flat, logging weekend overeats
python3 scripts/plateau_decoder.py --weights "180,179.5,180.2,..." --expected-loss 1 --unit lb --flag weekend-overshoot
# with context flags
python3 scripts/plateau_decoder.py --weights ... --expected-loss 0.6 \
--flag new-training --flag high-sodium --flag luteal
Output: regression slope vs expected, per-week trend table, noise band, flag-weighted water budget, verdict, and the matched action plan.