[OCaml] High Intensity Training Online
Refine domain interfaces from philosophy review
- Exercise is a property of an individual set, not of a set group: a group may span exercises (superset, pre-exhaust), so validation and performance reporting are keyed per set. - Drop Working_sets from set_scheme entirely. One working set per exercise is nominal and not configurable; deviation exists only at log time as acknowledged extra volume. - Warm-ups become a ramp: a list rather than at most one. - Anything prescribed is derived from logged evidence and carries it: 'a Progression.prescribed = { value; evidence; status }. Both exercise targets (Progression.prescribe) and rest windows (Recovery.prescribe) follow this shape. Recovery base now belongs to the routine. - Workout prescription takes a lookup function returning past logged workouts, from which targets are calculated. - Sessions record an end timestamp, giving workout duration. - Volume (load x reps) tracked per exercise and per workout as a diagnostic; under Heavy Duty rising volume is a warning, not progress. Still deferred pending a decision: the intensity factor metric. Verified: dune build, @check, @fmt, and runtest all green.