[OCaml] High Intensity Training Online
Table of Contents
--- name: doctrine-check description: Audit a design choice or a code diff against Mike Mentzer's Heavy Duty doctrine. Use before committing a domain decision, or when a change touches training rules (intensity, volume, recovery, progression, substitution). ---
Doctrine check
Audit the target against Heavy Duty doctrine and report the verdict.
Target (a design proposal, a diff, or both):
$ARGUMENTS
If the target is empty, audit the entire project, focusing on the core library.
Source of truth
The doctrine lives in two places, in this order of authority:
- `doc/Mike_Mentzer_Heavy_Duty_I.md` (HD1) — the primary source. It is copyrighted, gitignored, and never committed. Read it to cite exact wording.
- `.kiro/steering/domain.md` — the distilled, binding principles. Use it when HD1 is not present.
Cite HD1 by section name. The sections are:
- I. Bodybuilders Are Confused!
- II. A Rational Approach
- III. The Science of Bodybuilding - The Intensity Factor - The Economics of Growth and Recovery - Conversations with Dorian Yates
- IV. The Ideal (or Principled) Routine - Ensuring Optimal Progress - Proper Exercise Performance - Training to Failure - Proper Weight Selection - The Pre-Stretch - Pre-Exhaustion - Negatives - Warming Up - Intensity and Muscular Function - Equipment - Regulating Volume and Frequency - The Routine - Important Points
- V. Individual Potential - The Role of Genetics
- VI. On Motivation - The Role of Values - Motivational Techniques
The rule
On a conflict between the target and the doctrine, one of two outcomes holds:
- The doctrine wins — the target must change, or
- The conflict is raised explicitly.
Never let a conflict pass in silence. A silent deviation is the failure this check exists to prevent.
What to test against
Test the target against each binding principle. Report only the principles the target touches; do not pad the report with untouched ones.
- **Intensity is categorical, not scalar.** A working set ends at momentary muscular failure; that is its definition (HD1, "The Intensity Factor": 0% at rest, 100% at failure). Effort past failure is qualitative (`Beyond_failure`: forced reps, negatives, rest-pause, static hold). Flag any numeric "intensity score".
- **Recovery produces growth; the gym only stimulates it.** Stimulation is immediate; production is not (HD1, "The Economics of Growth and Recovery"). Recovery is systemic and time-based; a hard workout gates the next one.
- **Volume beyond the minimum is harmful.** One working set per exercise is nominal; three sets per muscle is the ceiling. The net negative of each extra set increases geometrically. Rising volume is a diagnostic warning, never an achievement or a target.
- **Progressive overload is the progress signal.** Progress is more reps, weight, or both; one extra rep counts. Reps are an outcome, never a target — a set ends at failure, not a number. The band only calibrates load. Raise the load 10-20% once twelve reps are reached. A 6-10 band is not breached at eleven.
- **Brief, infrequent, intense.** Shorter sessions at equal or better overload are favourable (HD1, "Regulating Volume and Frequency").
- **Focus over novelty.** Exercises come from a curated catalog. Substitutions follow author-specified whitelists; a routine may only narrow them.
- **On a stall, the answer is never more work.** After two weeks of no progress: a week off, then *reduce* volume and frequency — drop sets, add rest days (HD1, "Regulating Volume and Frequency"). No remedy may add volume or frequency.
Encoding rules (for code targets)
- Prefer making an illegal training state unrepresentable over validating it at runtime.
- Deviations (training early, extra volume) must be possible but never silent: require an explicit acknowledgement and retain it.
- Keep plan and record distinct: prescription/routine vs logged workout; prescription vs progression.
- The logbook records; it never interprets. Invariants belong on authored plans, not on observed history. A log that refuses to state what happened is worse than one that records an error.
Output
Report in this shape:
- **Verdict** — one line: `Consistent`, `Conflict (doctrine wins)`, or `Conflict (raised)`.
- **Findings** — for each principle the target touches: the principle, whether the target upholds or breaks it, and the HD1 section (or `domain.md`) that settles it.
- **Required change** — for each `doctrine wins` conflict, the smallest change that restores consistency.
- **Raised conflicts** — for each conflict the doctrine cannot settle alone, state the tension plainly and ask for a decision. Do not resolve it silently.
Keep it terse. Cite the doctrine for every claim. Do not invent doctrine that is not in HD1 or `domain.md`; if the source is silent, say so.