feat Quantify HD1 extensions, drop rest-pause

Confine beyond-failure work to HD1's three techniques and record each as a count: forced reps and negatives count reps, a static hold counts seconds. Remove Rest_pause, which HD1 does not contain; the MVP is pure HD1. Plain int, no smart constructor. The core reifies HD1 and does not sanitize input; validating counts belongs at the app boundary, not in the pure domain. Downstream modules (persistence, web, presenter) and tests still reference the old variants and will be updated in a follow-up; this is a deliberate interface-first commit. The core library type-checks and formats clean on its own.

Commit
3eb43ea7bf7bd5bd40eb2f7cc9de093f1f902bc9
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
Changed files
lib/core/evidence.ml
index 107c43f5..1d5a4bdc 100644..100644
@@ -1,5 +1,5 @@
1 1 module Stimulus = struct
2 Removed: type extension = Forced_reps | Negatives | Rest_pause | Static_hold
2 Added: type extension = Forced_reps of int | Negatives of int | Static_hold of int
3 3
4 4 type outcome =
5 5 | Positive_failure
@@ -9,13 +9,10 @@
9 9 | Positive_failure -> []
10 10 | Beyond_failure (first, rest) -> first :: rest
11 11
12 Removed: let pp_extension ppf e =
13 Removed: Format.pp_print_string ppf
14 Removed: (match e with
15 Removed: | Forced_reps -> "forced reps"
16 Removed: | Negatives -> "negatives"
17 Removed: | Rest_pause -> "rest-pause"
18 Removed: | Static_hold -> "static hold")
12 Added: let pp_extension ppf = function
13 Added: | Forced_reps n -> Format.fprintf ppf "forced reps x %d" n
14 Added: | Negatives n -> Format.fprintf ppf "negatives x %d" n
15 Added: | Static_hold s -> Format.fprintf ppf "static hold %ds" s
19 16
20 17 module Effort = struct
21 18 type t = {
lib/core/evidence.mli
index d1dc202e..d5b25cb2 100644..100644
@@ -2,7 +2,14 @@
2 2
3 3 (** One performed drive to failure. *)
4 4 module Stimulus : sig
5 Removed: type extension = Forced_reps | Negatives | Rest_pause | Static_hold
5 Added: (** Effort past failure, quantified. Every HD1 extension is a count: forced
6 Added: reps and negatives count reps, a static hold counts seconds. The three
7 Added: techniques are the whole of HD1's beyond-failure work (HD1, "Training to
8 Added: Failure", "Negatives", "Conversations with Dorian Yates"). *)
9 Added: type extension =
10 Added: | Forced_reps of int (** Additional assisted reps past failure. *)
11 Added: | Negatives of int (** Additional lowerings past failure. *)
12 Added: | Static_hold of int (** Hold in the contracted position, in seconds. *)
6 13
7 14 type outcome =
8 15 | Positive_failure