Hi,
I ran into a bug in the validate_workout tool: it rejects workout descriptions that use the syntax documented in the original Workout builder post — i.e. a title line, a blank line, then step lines, repeated for warmup / main set / cooldown, e.g.:
Warmup
- 20m 60% 90-100rpm
Main set 6x
- 4m 100% 40-50 rpm
- 5m recovery at 40%
Cooldown
- 20m 60% 90-100rpm
validate_workout returns a PARSE_ERROR on this input, with the message:
“structured workout step lines must form a single contiguous block; multiple blocks separated by prose are not supported by the intervals.icu DSL”
This appears to be incorrect — this is exactly the format shown in the official workout builder documentation, and I confirmed that submitting it directly as the event description (bypassing validate_workout/workout_doc) is parsed correctly by the actual intervals.icu upstream: the resulting event has the correct repeat_reps structure and correct total duration.
So it looks like validate_workout’s local reimplementation of the DSL parser is out of sync with the real upstream parser — it doesn’t allow blank lines / header text between step blocks, even though upstream does.
Steps to reproduce:
- Call
validate_workoutwith the multi-block description above (or with an equivalentworkout_doccontaining arepsgroup between two flat step groups). - Observe
valid: falsewith the “must form a single contiguous block” error. - Submit the same text directly as an event description via
add_or_update_event(noworkout_doc). - Fetch the event back — it has the correct structured steps with
repeat_repsset, matching what the intervals.icu web UI shows.
Would be great if validate_workout could be updated to accept this documented syntax so it doesn’t produce false negatives.
Thanks!