Monthly cycle · 28 days · 4 weeks

One profile. The full monthly cycle.

Stage 8b calendar-aware cycler + full pipeline for each of the next 28 days. The window captures every variant rotation (A/B/C/D), both D30 paired-variant flips (Weeks 2 + 4), and the first phase boundary for higher-frequency clients (Stage 11 advances Base → Build → Peak → Deload once all 14 muscles hit their weekly_min).

← Landing
Window controls
The 28-day window starts at today.cycleStartDate is required for FallWhereTheyFall + WeekdaysOnly modes (ignored for Static mode).
QuickstartSample profiles
Load a canonical fixture, then submit. Modify any field to explore “what-if” scenarios.
Section 1 · the basicsAbout you
Demographics + body composition. Nothing here is a training decision — just who you are.
Section 2 · current stateWhere you're at
How much you train now + what your day looks like. Engine derives experience level from years training (no self-classification).
Years of regular lifting (≥ 2 days/wk). Engine maps this to Beginner / Novice / Intermediate / Advanced.
What you're actually training right now (0 if returning from a break).
Section 3 · goals + prioritiesWhat you want
What outcome you're chasing, where you want to put extra attention. Engine prioritizes the muscles you pick to grow.
Engine down-tunes volume here (don't waste capacity).
Section 4 · scheduleYour week
How often you can train + how you want to schedule sessions.
Engine picks the training split that fits this schedule (Coach Overrides → Chosen split to force a different choice).
Section 5 · what to avoidConstraints
Exercises you can't do (knee / shoulder / preference), what equipment you have access to, any injury notes for the coach. Strawman — engine doesn't consume yet (Phase 4)
Type an exercise and press Enter or Add. Engine will filter these out of selection in Phase 4.
Maps to D32 substitution chain (Barbell → Smith → DB → Cable → BW).
Free-text. Displayed for the coach; engine doesn't read this field.
Admin only · optionalCoach overrides

Each field below overrides a v0 engine derivation. Empty = engine uses the default rule. Pin a value to deviate.

Default: yearsTraining 0/1/2-4/5+ → Beginner/Novice/Intermediate/Advanced
Default: BMI + age + sex → Lean / Balanced / Higher. Override for athletic outliers.
Forces the split preference. Stage 3 still validates against goalFreq — incompatible picks fall back to the tbl_Freq default.
Default: weak1/weak2 → Hamstring (Hams/Glutes) / Quad / Both
Force second bicep isolation on FB Pull
Default: weak1 OR weak2 = Biceps → true. Override forces on/off regardless of weak points.
1RM overrides · informational at v0.3.0
Form valid · ready to invoke pipeline