View raw

1 (** Subjective self-reports at a point in time: what the trainee said, not what 2 the body did. HD1 grounds two of them. HD1 gauges recovery by time and by 3 effect, not by a wider battery of wellness proxies. *) 4 5 type level = 6 | Worse_than_usual 7 | As_usual 8 | Better_than_usual 9 (** A self-report relative to the trainee's usual baseline, not an 10 absolute score. HD1 frames both signals this way — Difficulty is "the 11 weights feel much heavier than usual". Three values resist the false 12 precision of a finer scale, and match HD1's refusal of a finer 13 measurement scale. [Worse_than_usual] is the concerning direction for 14 both signals. *) 15 16 val pp_level : Format.formatter -> level -> unit 17 18 type signal = 19 | Motivation of level 20 | Difficulty of level 21 (** The only self-reports HD1 grounds. Motivation is HD1 chapter 6, and a 22 halt in motivation is a recognized overtraining symptom ("with those 23 who chronically overtrain, such a disinclination is easy to 24 understand"). Difficulty is HD1's "the weights feel much heavier than 25 usual" — a depletion symptom. HD1 gauges recovery by time and by 26 effect (a stall or decompensation), not by a wider battery of wellness 27 proxies. This module models none of the other proxies. *) 28 29 type t 30 type error = Duplicate_signal of signal 31 32 exception Invalid of error 33 34 val make : reported_at:Recovery.timestamp -> signal list -> t 35 (** Raises [Invalid] when feedback repeats a signal category. *) 36 37 val reported_at : t -> Recovery.timestamp 38 val signals : t -> signal list 39