F1–F3 · The Move tab, rebuilt on the engine

Phases 1–3 ship the foundation: versioned content (F1), persistence + migration of your history (F2), and the strict finite sequence engine (F3). On screen, the hub adopts the sequence exactly as specified (proposal §18; bitácora 2026-08-08: “caminatas/quick sessions arriba como acceso inmediato”):

1 · Quick movementwalks, whenever you want 2 · Todayonly when actionable 3 · My programssessions live inside the plan 4 · Explore programsstart / re-enroll 5 · Activity historyarrives in F4

Colors and shapes from Tokens.swift; product copy in English. The full destination (F4–F6: plan management, pause, runner, swaps) lives in the destination mockup →

1 · The hub. §18 sequence, three honest states

One BEFORE for reference, then the hub after F1–F3 in its three states. Walks are always first - free movement never waits behind a plan. Today always answers the question: a session to start, or an explicit rest day with the next date.

§18.1 Quick movement first, steps live in the header, not as a card Walk types as small cards in a horizontal scroll, tap a star ★ to pin a favorite Order: starred first (most-used among them), then the rest by most-used Today never disappears, rest days say “No session today” + the next date (amends §18.2) My programs card = cover + gradient with name, level, days and progress; tap opens the program detail (§18.3) §18.4 sessions live inside the program detail, no loose ×N cards Never: pending · overdue · behind
BEFORE Today’s app· hero first, walks buried
9:41●●●

Move

Next session

Strength 2

9 exercises · MentorSport
M
T
W
T
F
S
S
Strength 1
×3
Strength 2
×2
Strength 3
×2
Strength 4
×2
Walks
Walks last, four loose workout links, and a hero fed by completed % 4, it can’t know you missed a day and it never ends.
TodayMoveProgressLearnYou
F1–F3
AFTER Session actionable today
9:41●●●

Move

4,306 steps
QUICK MOVEMENT
10 min
Daily loop
15 min
Brisk
8 min
Easy start
12 min
Steady
20 min
Full walk
TODAY
VitalPath

Upper Body Strength & Shoulder Mobility

9 exercises · ~15 min
Quadriceps · Glutes · Hamstrings · Lats · Core · Shoulders · Triceps
▶  Start today's session
MY PROGRAMS
MTWTFSS
VitalPath
MentorSport · Beginner
EXPLORE PROGRAMS
Mobility Reset3 weeks · All levels
Chair Strength4 weeks · Beginner
See all ›
Today card: plan + session name only, no “session 2 of 4”, it doesn’t scale to a 3-month plan. The program card is its cover image with a black→transparent bottom gradient, name, level and progress drawn on top; vanity numbers moved to the program detail (tap the card). Explore is a horizontal shelf of available plans; “See all” opens the full vertical catalog with categories, filters and sorting (screen in the destination page; the shelf renders whatever validated content exists, v1 ships VitalPath).
TodayMoveProgressLearnYou
session done · next is Friday
AFTER Nothing due today· explicit rest day
9:41●●●

Move

2,118 steps
QUICK MOVEMENT
10 min
Daily loop
15 min
Brisk
8 min
Easy start
12 min
Steady
20 min
Full walk
TODAY
No session today
Next up · Strength 3. Friday, Aug 14 · VitalPath
MY PROGRAMS
MTWTFSS
VitalPath
MentorSport · Beginner · Up next: Strength 3. Friday
Rest day is explicit. Today never disappears: it says “No session today” and gives the next date (amends §18.2’s “omit Today”). “Do it today” to train ahead arrives with F5’s management UI.
TodayMoveProgressLearnYou

2 · Inside the program, tap the card, see the whole sequence

Tapping the My programs card opens the program detail: progress, vanity numbers, upcoming sessions and the previous ones with their dates. Session rows open the workout detail, and completion now follows the sequence: only the current session can be marked done; locked ones stay watchable.

§9.2 session 3 can’t happen before session 2 is resolved Completion is atomic: ledger + streak + unlock next, one transaction Copy is neutral, locked, not “overdue”
AFTER Program detail· tap from My programs
9:41●●●
‹ Move
MTWTFSS
VitalPath
MentorSport · Beginner
25%
UP NEXT
Today

Strength 2

9 exercises · ~15 min
Quadriceps · Glutes · Hamstrings · Lats · Core
▶  Start today's session
Move date
Skip session
COMING UP
🔒
Strength 3Unlocks after Strength 2 · Fri, Aug 14 · ~15 min
🔒
Strength 4Locked · Mon, Aug 17 · ~15 min
PREVIOUS
Strength 1Completed · Mon, Aug 3 · 14:20 active
YOUR NUMBERS
1Sessions
18Sets
152Reps
14:20Time
Muscle volume so farfrom logged sets
Quadriceps32%
Glutes24%
Core18%
Edit days
Pause
Leave
One screen, whole story: act on the current session (start, move, skip), see what unlocks and what’s done, then your numbers, vanity tiles and per-muscle volume from the §14 allocation model. Weight moved joins on loaded programs. Pause/Leave verbs are engine-ready now; their flows ship in F5.
opens the current session
AFTER Current session· completable
9:41●●●
‹ Move

Strength 2

Knee raise2 × 8 · per side
Single arm row2 × 8 · per side
Hamstring curl2 × 8
Half squat2 × 8
…5 more
Mark session done
Completing writes the movement ledger, the streak event and unlocks Strength 3 on your next training day, atomically.
opens a later session
AFTER Locked session· watchable, not startable
9:41●●●
‹ Move

Strength 4

Sit to stand2 × 8
Horizontal push2 × 8
Spine extension2 × 6
…6 more
🔒  Unlocks as your program moves forward
Every video stays watchable. Only completion is sequenced, before, logging Strength 4 out of order silently advanced the rotation.
no active program
AFTER Not enrolled· no free logging
9:41●●●
‹ Move

Strength 1

Hip flexion2 × 8 · per side
Incline push-up2 × 8
…7 more
Start the program to track sessions
Watching is free; tracking needs a program. Walks remain the no-strings option, always on top of the hub.

3 · A real ending, programs are finite

Today, finishing Strength 4 silently loops back to Strength 1, forever. After F1–F3 the enrollment completes, the moment is acknowledged, and doing it again is an explicit fresh cycle (§9.9), history intact.

Principle 6: plans never repeat automatically Celebrates sessions shown up, never weight
BEFORE After Strength 4· silent loop
9:41●●●

Move

Next session

Strength 1

9 exercises · MentorSport
No ending ever happens. The card just offers Strength 1 again, the plan is a treadmill.
finite engine
AFTER Plan complete· §18 order intact
9:41●●●

Move

5,034 steps
QUICK MOVEMENT
10 min
Daily loop
15 min
Brisk
8 min
Easy start
12 min
Steady
TODAY
No session today
VitalPath is complete, join a program below to schedule your next one.
MY PROGRAMS
COMPLETE ✓
You finished VitalPath.
MentorSport · 4 sessions, yours to keep
EXPLORE PROGRAMS
Start VitalPath again?
A fresh cycle from Session 1, on your days. Your finished cycle stays in your history.
Join program
TodayMoveProgressLearnYou

4 · Enroll sheet, same sheet, real contract

Same day picker and reminder toggle. The copy stops promising rotation, and “Start program” creates a real enrollment with its own finite schedule, in one transaction.

BEFORE· writes 3 preferences
VitalPath
Sessions rotate on their own, you just show up.
TRAINING DAYS
M
T
W
T
F
S
S
Training day reminder
Start program
F2 + F3
AFTER· creates enrollment + finite schedule
VitalPath
Sessions follow your plan in order, you just show up.
TRAINING DAYS
M
T
W
T
F
S
S
Training day reminder
Join program
One transaction: enrollment (own weekdays + reminder) + 4 scheduled sessions. Session 1 current, 2–4 locked with projected days. “Leave program” archives; it never erases history.

5 · Under the hood, what you won’t see, but everything rests on

Most of F1–F3 is invisible on purpose. This is what exists after this batch; the F4–F6 screens will simply render it.

Your history migrates, nothing is lost

Existing workout entries are partitioned into finite cycles, example with 9 past completions:

Cycle 14/4 · completed Cycle 24/4 · completed ActiveS1 ✓ · S2 current

Out-of-order entries stay as plain history, migration never invents progress. Idempotent: running twice changes nothing.

One current session, always

The chain the UI renders directly:

S1completed S2skipped S3current · waiting S4locked · Mon

Complete or skip advances exactly one. Skip never pulls the next session to today. Locked dates reflow as one chain.

Versioned content with muscles

All 36 VitalPath exercises get a validated catalog: movement pattern, laterality, per-muscle volume allocation (always 100%), curated swap rules, authored rest. It powers the F6 runner, swaps and F8 analytics with no rewrite.

Streaks, reminders and parity keep working

Completing a session emits the same daily-consistency event; the single training-day reminder still respects the one-per-day cap. Engine behavior is pinned by ~16 platform-neutral fixture files that Android replays verbatim when it mirrors this milestone.