--- 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: 1. `doc/Mike_Mentzer_Heavy_Duty_I.md` (HD1) — the primary source. It is copyrighted, gitignored, and never committed. Read it to cite exact wording. 2. `.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: 1. The doctrine wins — the target must change, or 2. 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: 1. **Verdict** — one line: `Consistent`, `Conflict (doctrine wins)`, or `Conflict (raised)`. 2. **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. 3. **Required change** — for each `doctrine wins` conflict, the smallest change that restores consistency. 4. **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.