The two pillars
OpenBody is organized around two co-equal pillars. Pillar A alone would make it just another telemetry format; Pillar B is what no incumbent provides and is the standard’s primary differentiator. Both are first-class in v1.
Pillar A — Observation (telemetry)
Pillar A models telemetry: continuous or instantaneous measurements of a subject. Its
single atom is the Measurement (§4). A Measurement carries a type, exactly one
value shape, a conditional unit, and a startTime/endTime.
The value is a closed one-of — exactly one of these keys appears at the record root:
| Shape | Use |
|---|---|
quantity | A single number, or a fixed-point {coefficient, exponent} for lossless decimals (e.g. body mass). Also how aggregates are carried — a daily step total is a quantity whose startTime/endTime bound the window. |
category | A discrete categorical state (e.g. sleep_deep, afib). No unit. |
sampleArray | A sampled series — scalar or vector, regular (frequencyHz) or irregular (offsets). The only form that scales to continuous sensor data. |
A GPS route is a multi-channel sampleArray with location channels lat, lon,
alt, typically irregular. Categorical series (a night of sleep stages) are carried as
multiple category Measurements over adjacent intervals — not a sampleArray (which is
numeric-only). Dropped samples are null.
Pillar B — Structured Training (exercise)
Pillar B models the prescription and execution of exercise through a containment
hierarchy. Every level above WorkUnit is optional — the model collapses gracefully.
Program / Plan ordered sessions over time (e.g. 5/3/1, a marathon block) └─ Session one training occurrence; planned and/or performed └─ Block a group; MAY repeat, MAY nest, MAY carry a scoring scheme └─ Exercise an exercise occurrence (refs an ExerciseRef + descriptors) └─ WorkUnit the atom — strictly one set; scored by kind └─ Rep* optional per-rep detailThe minimum viable training record is a single WorkUnit — the one required-tier
element of the Training-core profile. A WorkUnit.scoring kind is one of
reps|time|distance|continuous|energy.
Key ideas:
- Planned vs performed are both first-class. A planned unit carries
prescription; a performed one carriesperformance; a record may carry both. Separate records link via theperformedFromenvelope link. - Targets are polymorphic. A metric may be a scalar or a
Target—absolute,range,relativeToThreshold(e.g. 80% of 1RM),stopCondition(e.g.to_failure,to_rpe), orramp(a directional progression, e.g. a warmup ramping 50→75 %FTP; legal only onload.valueandIntensity.value). See canonicalization. - The “how hard” axis has three distinct homes (§5.13), so a value never has two
encodings: resistance →
load(100 kg, 80 %1RM, a band, machine level 7); intensity →intensity[]ofIntensity, a target on a non-resistance dimension (power|pace|hr|speed|grade, absolute / relative-to-threshold / a namedzonelikez2); perceived or derived effort →effortLoad[]ofEffortLoad(RPE|RIR|sRPE|TRIMP|TSS). A %1RM is aload; %FTP or a HR zone is anintensity; RPE/RIR is aneffortLoad. All three are plural. - Block-level scoring spans multiple exercises —
amrap,for_time,emom,tabata,rounds— the case no incumbent models cleanly. Per-atom scoring lives on theWorkUnit. Round structure is orthogonal to scoring:repetitions(N identical rounds) orroundScheme(laddered per-round counts, e.g.[21,15,9]for Fran) describe how the rounds are structured;scoring.schemedescribes how the work is measured, and they compose. - Physical qualities are a first-class axis (§5.3/§5.4). A
SessionorBlockmay carryqualities(endurance|strength|power|mobility|flexibility|…) — the quality being developed, orthogonal todisciplines(the activity) andintent(the purpose). - Sport results. A
Session(orBlock) may carry anoutcome— a match score, race placement, or game result — for sports whose contest is the session (§5.18). - Sets & roundScheme shorthands. A planned
prescriptionmay usesets: N(expands to N identicalWorkUnits); a laddered block may useroundScheme(expands to enumerated rounds). Both expand during normalization; a performed record enumerates the actual sets/rounds.
Pillar B references Pillar A — it never duplicates telemetry
A structured-training record MUST NOT re-invent telemetry. Where a set or session has
associated time-series data — the heart-rate trace during an interval, the barbell velocity
of a rep, the GPS route of a run — Pillar B references the corresponding Pillar A
Measurement through the typed measuredBy link, rather than embedding or duplicating it.