# M-D-en-barbell-self-crossfit

OpenRouter bench envelope (temperature 0, seed, json_schema name=prescription_rows, strict:false, usage.include). Production interpretPrescription is Base44 InvokeLLM({prompt, response_json_schema}) with model omitted, then sane() drops declined rows. Same RULES string; different envelope.

## Envelope defaults

- temperature: 0
- seed: per run (see data/models/*.json)
- strict: false
- schema: ../schema.json

## messages[0].content (whole user message sent)

```
You convert ONE-LINE strength/conditioning prescriptions into structured sets.

FIRST, THE ONLY QUESTION THAT MATTERS — is_prescription:
true  when the line states HOW MANY SETS and HOW MANY REPS, in any wording: "3 sets of 8",
      a listed ladder ("5,4,3,2,1"), a pyramid ("12-10-8-6"), an interval protocol
      ("EMOM 12 min: 3 cleans" = 12 sets of 3), a tempo/percentage sentence that still names
      sets and reps ("tempo 3-1-3, 4 serie po 6"), or shorthand ("5x5"). Prose IS a valid
      wording — do not decline a line just because it contains words.
false when the line names no set/rep structure at all, or its numbers belong to a CUE, a filler
      task or a question rather than to the prescribed work.
EXAMPLES — is_prescription true:
  "3 sets of 8, heavy-ish, last set to failure" -> sets 3, reps 8, weight null
  "ladder 5,4,3,2,1 working up to 140kg"        -> sets 5, reps 5, weight null (140 is a TARGET)
  "EMOM 12 min: 3 cleans @70kg"                 -> sets 12, reps 3, weight 70
  "4 serie po 10 na każdą nogę"                 -> sets 4, reps 10, weight null
  "3 serie po 12, ciężko"                       -> sets 3, reps 12, weight null (worded intensity)
EXAMPLES — is_prescription false (sets 0):
  "20 band pull-aparts between sets"  (accessory filler, not the prescribed work)
  "Focus on bracing, film the top set" (a cue)
  "zapytaj mnie jak pójdzie"           (a question)

THEN THE VALUES:
1. NEVER invent a number the coach did not write. If load is not stated, weight_kg = null.
   A fabricated number enters a real training plan and gets trained.
2. Bodyweight ("BW", "bodyweight", "peso corporal", "自重") = weight_kg 0. 0 MEANS bodyweight.
3. sets = how many sets the line produces (max 20). reps = reps of the FIRST set.
4. Percentages, RPE-only, "work up to" targets and worded intensity ("heavy", "ciężko") are NOT
   a weight: keep weight_kg null and put those words in note.
5. Weights are KILOGRAMS. Convert lb to kg. Rest is SECONDS.
6. Write `note` in the same language as the line, and keep the coach's own words there.

INPUT:
L0: Alright so today. Start with a 250 meter row just to get warm.
L1: Then a warm-up, two rounds, five burpees and some PVC pass-throughs each round.
L2: Then the snatch complex: seven sets, E2MOM, every two minutes, work up to a heavy weight — I have not picked the load yet.
L3: Then five by five dead-stop deadlifts at 415 pounds, and after each deadlift set do one ab wheel rollout so pair those, five ab wheels with the five deadlift sets.
L4: Then a superset of barbell rows and Romanian deadlifts, two sets of eight at 225 pounds.
L5: Then one set of fifteen Bulgarian split squats at 120 pounds.
L6: Finish with thirty-nine burpees for time, AFAP, as fast as possible. Just save the plan for today, September tenth.
```
