Mission Built

The MealStack Schema 0.9.3 · Field set

Meal

A plate, or a fuel item, and where it sits in a day.

A meal is portions on a plate and, inside a stack, a place in the day: an anchor and an offset that put it on the clock. A meal on its own (on the Meals shelf) has the plate and no time. A fuel item is the same shape with kind: fuel. Fuel is what you take for the session rather than as a meal: pre-workout, the jug you sip through the session, the shake after it, electrolytes, creatine, water. It can carry protein, carbs and fat, and those count toward the day's totals. Fuel is never a meal: it isn't in the meal count, doesn't move the meals around it, and isn't scored for timing. Anything pinned to the session start is fuel.

The macros of a meal or a fuel item are the sum of its portions, derived; stated exists for a plate that was never weighed and is used only when there are no portions. A meal never carries a day's total.

Reused as

  • stack.trainingarrayThe training day's meals, in the order eaten.
  • stack.recoveryarrayThe recovery day's meals, in the order eaten.
  • plan.mealsarrayMeals on their own, for the Meals shelf.
  • day.meal.landedThe meal as it was when it was eaten, frozen.

Fields

  1. meal.id core keyword

    The slot's identifier within a plan: train.m1, train.f2, rest.m3. The same slot ids run through every stack of a rotation (only the plates change), which is how a day's log stays whole when the stack changes. A meal on its own has no slot and reads shelf.m1. An id, not a day kind: a recovery-day slot keeps the rest. prefix from 0.13 on, so logs, alerts and Health samples written before it still match.

    Exampletrain.m3

  2. meal.code extended keyword

    A short code for telemetry and Coach: M1, M2, PRE, POST, F1. Never shown to a person; a screen that names a meal uses meal.name.

    ExamplePRE

  3. meal.name core keyword required

    What the meal is called, as it appears on Today and in History.

    ExamplePaprika chicken box

  4. meal.kind core keyword

    meal (the default) or fuel. Fuel is what you take for the session rather than as a meal: pre-workout, the jug you sip through the session, the shake after it, electrolytes, creatine, water. It can carry protein, carbs and fat, and those count toward the day's totals. Fuel is never a meal: it isn't in the meal count, doesn't move the meals around it, and isn't scored for timing. Anything pinned to the session start is fuel. Fuel keeps its anchor, offset and alert and is logged. It may carry macros, through portions or stated, or none (water, creatine), and any it carries count in the day's totals. An at_session anchor implies fuel: a reader treats an item pinned to the session start as fuel whatever its kind says.

    Valuesmealfuel

    Examplemeal

  5. meal.anchor core keyword

    What the meal's time hangs from. forward chains off the meal before it (the first forward meal of the day sits on wake time); before_session, at_session and after_session are pinned to the session and do not move when the morning runs late. at_session makes the item fuel. Recovery days have no session, so every meal and fuel item on one is forward. Every training day has one meal (not fuel) anchored before_session: the carb surge. Required inside a stack; absent on a meal on its own.

    Valuesforwardbefore_sessionat_sessionafter_session

    Examplebefore_session

  6. meal.offset_minutes core integer

    For forward, minutes after the previous forward meal (0 for the first). For before_session and after_session, minutes before or after the session. For at_session, 0. Never negative. Required inside a stack; absent on a meal on its own.

    Example90

  7. meal.prep_lead_minutes extended integer

    How many minutes before the meal's time the start-cooking alert fires; 0 for none.

    Example8

  8. meal.portions core object[]

    What is on the plate, in order. One of portions or stated is required on a meal; fuel may have either or neither, and what it has counts in the day's totals.

  9. meal.stated core object

    Grams of protein, carbs and fat typed in for a plate the person knows the numbers of but does not weigh. Read only when portions is empty.

  10. meal.macros core object

    The sum of the portions, or stated when there are none. Derived; never written by a plan file.

  11. meal.note extended text

    One line under the name, on Today and on the shelf.

    ExampleBlue box. Microwave 2½ min, stir, 1½ min.

  12. meal.steps extended text[]

    How it is made, one step per entry.

    Example["Reheat lid off.", "Sesame oil after."]

  13. meal.source extended keyword

    The example plan, Coach, the person's own hands, or an import.

    Valuesexamplecoachcustomimported

    Exampleimported