Session runner: approve before build

The green Start session button currently lands on a static exercise list. This is the F6 runner it should open (training-engine.md §10, §7.4, §12): video in place, a running clock, one exercise at a time, sets logged with reps + kg, authored rest that never blocks, and a summary that closes the loop. ← Full F4–F6 storyboard · F1–F3 before/after

Real content: VitalPath · Strength 1 · 9 exercises §7.4 rest: Skip · +15 s · Start next set §15.3 suggested weight is never auto-applied §10.2 closing the app resumes at the first unresolved item Skip is a valid decision. No punitive copy anywhere

Interactive demo: tap through the whole session

Everything works: the clock runs, steppers change reps and kg, Log set advances sets, rest counts down live, the chevron minimizes into the sticky pill you already shipped. Nine real Strength 1 exercises, then the summary.

9:41●●●
VITALPATH · SESSION 1 OF 4

Strength 1

9 exercises · ~15 min · no equipment
▶  Start session
0:00
i
VIDEO LOOPS
SET 1 OF 2

Hip Flexion + Knee Extension

Hip Flexors · Quadriceps
TARGET
5 reps
EACH REP
5″ hold
5REPS DONE
+
0KG · OPTIONAL
+
Body weight. Add kg only if you held one
✓  Complete set
⇄  Swap exercise
Skip exercise
REST · YOURS TO CONTROL
0:45of 0:45 suggested
+15 sec
Skip rest
NEXT
Set 2 of 2 · Hip Flexion + Knee Extension
Start next set

Move

QUICK MOVEMENT
WALK

After-Meal Walk

10 min · 700–900 steps
TODAY
Strength 1 · in progress
Keep going from the pill below.
Strength 1Workout in progress
0:00
🏠Today
🏋️Move
📈Progress
📚Learn
👤You

Session logged.

Strength 1 is in the books. Session 2 of 4 unlocks on your next training day.

15:02ELAPSED
18SETS
122REPS
0KG·REPS
Done
End this session? Everything you've logged is saved. Strength 1 will continue right where you stopped.
End session
Keep going
Similar exercises
Same muscle intent. No reason needed.
Seated Knee ExtensionQuadriceps · chair
Standing Hip AbductionGlute Med · no equipment
Just this sessionFor this program
‹  Back

What to try

  1. Before starting, tap any exercise row: its sheet leads with the muscles it will recruit, then your previous reps/weight and e1RM, and you can swap it right there. No sequence numbers: the order is the list itself.
  2. Start session: the clock starts and the first video screen opens.
  3. Adjust reps and optional kg with the steppers, then ✓ Complete set. Completing the set is what moves the session forward; the red exit is only for leaving.
  4. Rest counts down from the authored 45 s. Try +15 sec and Skip rest. It never blocks the next set.
  5. The ⌄ chevron minimizes into the sticky pill (already shipped); tap the pill to come back.
  6. Exercise 3 (Standing Hip Abduction) runs one side at a time: log the left, the button flips to switch side, then log the right, with no rest between sides. The last three exercises show the alternating note instead.
  7. The ⓘ on the video opens the exercise sheet: muscles worked with their real volume share, your previous reps/weight with how long ago, and the Estimated 1RM slot (– for body-weight; see the loaded example below). The last two exercises show the first-time empty state.
  8. ⇄ Swap shows compatible alternatives; Skip exercise › moves on without ceremony.
  9. The red exit icon (top right) asks first: native dialog, End session in red / Keep going. Ending saves everything logged. Finish or end early to see the summary: time, sets, reps, kg·reps volume, muscles worked, per-exercise log.

Decisions baked in

  1. Weight is a first-class input on every set; for body-weight work it reads KG · OPTIONAL, for loaded exercises it pre-fills the last used load (§12.1).
  2. A future Suggested: 15 kg chip sits beside the stepper and only fills the field when tapped (§15.3); see the variant screen below.
  3. Ending early keeps every logged set (§10.2). Partial work is saved to history but does not advance the program.
Everything here is the shipped BOLD system: same hexes as Tokens.swift, capsule buttons, big numerals, light-only.

1 · Entry: the button now keeps its promise

Today, Start session opens a list where nothing starts. After: the list stays as the overview, but the primary action launches the runner full-screen (zoom morph from the card, same as the pill).

BEFORE Workout detailvideos + Mark done only
9:41●●●
Strength 1
Hip Flexion + Knee Ext.2 × 3–7 · 5″ hold
Incline Push-Up2 × 6–10
Standing Hip Abduction2 × 6–10 · 2″ hold
6 more · each opens only a video
Mark session done
No timer, no per-set logging, no kg. "Done" is an honor-system tap.
becomes
AFTER Session overviewone real Start
9:41●●●
VITALPATH · SESSION 1 OF 4
Strength 1 9 exercises · ~15 min · no equipment
Hip Flexion + Knee Ext.2 × 3–7 · 5″ hold
Incline Push-Up2 × 6–10
Standing Hip Abduction2 × 6–10
6 more · tap any row for muscles, history, e1RM and swap
▶  Start session
Partial attempt? The button reads Continue · set 2 of 2, Incline Push-Up instead (§10.2).

2 · Set logging: the four shapes of a set

Same screen, four prescriptions: body-weight reps, reps with hold, one side at a time, and external load with last-used weight + the future suggestion chip. The stepper is always editable; nothing is ever applied for you.

One side at a time§7.3 · switch inside the set
9:41●●●
SET 1 OF 2 · LEFT

Standing Hip Abduction

Glute Med
LEFTRIGHT
TARGET
8 reps each side
8REPS · LEFT
+
Left done · switch side
No rest between sides: the switch lives inside the set. Each side is stored with its own reps (§12.1: performed side and unilateral completion). Alternating exercises (Neck Rotation, Side Bend, Trunk Rotation in F1) instead show one total counter with an "alternating" note.
Body-weight repskg optional
9:41●●●
SET 1 OF 2

Incline Push-Up

Chest · Triceps
TARGET
8 reps · 6–10 ok
8REPS DONE
+
0KG · OPTIONAL
+
✓  Complete set
Reps with holdhold shown, not policed
9:41●●●
SET 2 OF 2

Standing Calf Raise

Calves
TARGET
8 reps
EACH REP
5″ hold at top
8REPS DONE
+
✓  Complete set
The 5-second hold lives in the video and the target card. We don't run a per-rep metronome. Control beats counting.
External loadlast used + suggestion (§15.3)
9:41●●●
SET 3 OF 3

Goblet Squat

Quads · Glutes
TARGET
10 reps · RIR 2
10REPS DONE
+
12.5KG · TOTAL
+
Suggested: 15 kg · tap to use
Last time: 12.5 kg (pre-filled, editable)
✓  Complete set
Exercise info · ⓘmuscles · history · e1RM (§8, §12, §13)
9:41●●●
🏋
Goblet Squat
3 sets × 8–12 reps · external load
MUSCLES RECRUITED · DARKER = BIGGER SHARE
YOUR HISTORY
10 reps × 12.5 kg3 days ago
9 reps × 12.5 kg10 days ago
10 reps × 10 kg17 days ago
ESTIMATED 1RM
16.7kg MODERATE CONFIDENCE
From 12.5 kg × 10 · Epley v1 · always labeled "estimated", never a measured max (§13.1).
Reached from the ⓘ on the video, during a session or from the session overview. No instructions text yet: the catalog doesn't carry it (future content field).
Effort · optionalfeeds future progression
9:41●●●
After logging, one optional question, skippable and remembered per exercise:
HOW DID THAT SET FEEL?
Had 3+ left1–2 leftAt my limitPain
Pain is a flag, not an effort level: it saves the set, suppresses any load-increase suggestion (§15.2), and shows neutral safety copy. Never a diagnosis.
WHY IT MATTERS
Reps + kg + effort are the raw inputs for estimated 1RM and the future suggested-weight engine: stored now, computed later (§12–§15).

3 · Rest and swap: suggestions, never gates

Rest goes dark to signal "breathe". The ring drains; the user can extend, skip, or just start the next set. Swap offers compatible movements without asking why.

Rest, mid-drain45 s authored · §7.4
9:41●●●
REST · YOURS TO CONTROL
0:27 of 0:45
+15 sec
Skip rest
NEXT
Set 2 of 2 · Incline Push-Up
Start next set
Suggested, actual, extensions and skips are recorded (§12.2). Skipping rest alone never triggers a heavier suggestion.
Swap sheet§8.4 · scoped choice
9:41●●●
Similar exercises
Same muscle intent as Seated Knee Extension. No reason needed.
Hip Flexion + Knee Ext.Quads · Hip Flexors
Standing Hip AbductionGlute Med
Just this sessionFor this program
Completed sets stay on the original exercise; the replacement keeps its own load history (§10.6). If nothing compatible exists: "No similar exercises available" + Skip.

4 · Closing the loop: summary, pill, partial

Completion unlocks session 2 of 4. Minimizing never loses anything: the pill keeps the clock. Ending early saves every set and the program simply waits.

Summary§14.4 · honest numbers
9:41●●●
Session logged. Strength 2 unlocks on your next training day.
14:20ELAPSED
17SETS
118REPS
QuadsChestGlute MedCalvesObliques
Hip Flexion + Knee Ext.5 + 5 reps
Incline Push-Up8 + 7 reps
7 more…
Done
Minimized → sticky pillalready shipped · same object
9:41●●●
Move
WALK

After-Meal Walk

Today · Strength 1 in progress
Strength 1Workout in progress
7:41
TodayMoveProgressLearnYou
Swipe up or tap → runner expands with the zoom morph. Drag down inside the runner → back to the pill. The clock never stops.
Ended earlyafter red exit + confirm · §10.2
9:41●●●
Good work today. 4 exercises and 52 reps are saved. Strength 1 will continue right where you stopped.
8:12MOVED
8SETS
52REPS
Done
History shows the partial activity; the program's chain does not advance until the session is resolved (complete or skip).