Repository navigation
WODCraft 1.2.0 — the CrossFit Total
The CrossFit Total, decided with Nicolas on 8 October 2026. Every 1.0 and 1.1 document still
compiles to exactly the same JSON, with the same stamp; a document that uses a 1.2 construct is
stamped "1.2", and the schema accepts all three.
The language
- Attempts:
Max load, 3 attempts(French3 essais, written back in English bywodc fmt).
The best attempt counts; aRestwritten last in the block is the rest between the attempts
(three attempts, two rests). Elsewhere than on Max load it isE014; fewer than one isE035. - Totals:
score: load, total(Frenchcharge, total) adds the parts up. Over several timed
blocks the score is{"type": "multi", "aggregate": "sum", "unit": "load", "parts": […]}, every
part scored by the value (E036on a part that cannot be); over a single block it is the value
with"aggregate": "sum"(score: reps, totalfor Lynne).totalis the only modifier (E013). - One cap or the other (SPEC §6.1):
cap:caps the whole workout — on a single block it is still
that block's cap; over several blocks it is the workout's newcap_sinstead of the first block's.
Combined with block caps it is the newE037, instead of disappearing without a word.
The library
- New collection
benchmarks/withcrossfit_total(use benchmarks/crossfit_total): back
squat, shoulder press, deadlift, three attempts each, 2:00 between attempts, 3:00 between lifts,
and no cap, like the original (the library keeps only official caps). - Lynne scores
reps, total, and its note no longer explains the count.
Fixes
- Several block caps now add up in
estimate.capped_s, with the rest between the blocks (three lifts
capped at 10:00 reported 10:00). - A
Max loadwithout sets is estimated as a build-up — its attempts, or five efforts, about 30 s
each with the rest between them — instead of a few seconds (the Total went from 0:09 to
17:38–32:46). The timer sizes such a lift on its own. wodc show --lang frtranslates the board's labels:Charge max · 3 essais,Repos,
Score : total des charges (meilleur essai de chaque barre),Durée :,Note :… Format names
other than Max load stay in English, as on French-speaking whiteboards.wodc timershows the cap of the whole workout as the moment the clock stops
(30:00 cap: the clock stops), in its place in time; block caps change nothing. The
MCPtimeline_wodresult carries it ascap_s, and WODCraftKit hasTimeline.cap(of:),
Timeline.render(_:cap:)andtimerText().wodc libaligns its columns on the longest path.
Tooling
- Schema
spec/workout.schema.jsonmoves to…/schema/1.2/:attemptson a block,aggregate
anduniton the score,cap_son the workout; seven new conformance cases. swift/WODCraftKitimplements all of the above (Block.attempts,Score.aggregate,
Score.unit,Score.isTotal,Workout.capS, the French board), checked by the same conformance
suite and by the differential check.- Editor grammar, completions and the MCP guide know attempts, totals and
E037.
Who made it
A collaboration: Nicolas Caussin set the course and had the idea, orchestrated, corrected and approved; most of the writing was done by Claude (Anthropic) with Claude Code.