CODEX // oaoisme wiki

§ Forge — hypertrophy tracker

The program — PPL + Upper/Lower

updated 2026-06-08

The seed split, why it's shaped this way, and how editing works. Defined in catalog.js (PROGRAM) and seeded into program_days / program_exercises.

The split

A 5-day rotating Push / Pull / Legs / Upper / Lower (32 movements, 106 hard sets per cycle):

Day Movements
Push BB Bench · DB Incline Press · DB Shoulder Press · DB Lateral Raise (×5) · BB Skullcrusher · DB Overhead Tri Ext · Weighted Crunch
Pull BB Row · 1-Arm DB Row · BB Curl · Incline DB Curl · DB Rear-Delt Fly · BB Shrug · DB Calf Raise
Legs BB Back Squat · Romanian DL · DB Bulgarian Split Squat · DB Hip Thrust · DB Calf Raise
Upper DB Bench · BB Overhead Press · DB Row · DB Lateral Raise · BB Curl · DB Skullcrusher · DB Rear-Delt Fly · BB Shrug
Lower BB Front Squat · Romanian DL · DB Walking Lunge · DB Calf Raise · Weighted Crunch

Each movement carries a hypertrophy rep range (8–12 for most compounds, 6–10 for the heaviest, 12–20 for raises/calves) and a fixed increment (2.5 kg barbell, 2 kg per dumbbell).

"Rotating", not a weekday calendar

There is no Monday/Tuesday. The app tracks the last session's day and db.nextDayKey() serves the next one in order — train whenever you can, and the wheel turns: Push → Pull → Legs → Upper → Lower → Push. A missed day never desyncs a fixed calendar; you just always do the next thing.

Pairing PPL and Upper/Lower gives every major muscle 2× frequency across the cycle (e.g. chest on Push and Upper) — the frequency hypertrophy wants — while keeping any single muscle from being hit two days running (see the fatigue model on ~48h recovery).

Volume & balance (why these exact set counts)

The split is tuned so every trainable muscle lands in the evidence-based hypertrophy window — roughly 10–20 effective sets/week at ≥2× frequency (Schoenfeld; Renaissance Periodization volume landmarks). "Effective sets" = Σ (muscle contribution × sets), the same metric the fatigue model uses for the weekly-volume view. Per cycle (≈ a week at 5 sessions/wk):

  • In the window, 2×: chest 11, front delts 12, side delts 10, rear delts 10, biceps 13, triceps 17, upper back 11, quads 14, hams 12, glutes 18, calves 11 (3×), traps 9, abs 6 (2×).
  • A rebalance pass added rear-delt + shrug work to Upper, a crunch to Push, a calf exposure to Pull, and a 5th lateral-raise set — pulling rear delts, abs, side delts, calves and traps up from below-MEV / 1× into range.

Equipment-imposed ceilings (honest limits)

Two groups stay leaner by necessity, not oversight:

  • Lats (~10) are horizontal-row only — no pull-up bar means the vertical/width pulling angle is uncovered.
  • Hamstrings (~12) are all hip-hinge (RDL) — no leg-curl, so the knee-flexion function is uncovered. RDL is an excellent stimulus, so this is minor.
  • Forearms / lower back show low direct numbers but are loaded isometrically by every grip / squat / hinge / row — direct work isn't needed (and back extensions aren't really doable with the kit).

These are the real ceilings of a one-bar, two-dumbbell gym; the app surfaces them honestly rather than faking a complete program.

Editing

The Program screen is a full editor (/api/program/...): change target sets and rep ranges per movement, reorder within a day, add any of the 22 catalog movements, or remove one. Edits persist (the program auto-seeds only when empty) and apply on your next session of that day — your in-progress workout is never rewritten under you.