> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onerep.life/llms.txt
> Use this file to discover all available pages before exploring further.

# Health: Recovery Score, Dials, and Apple Health / Health Connect Sync

> Read your health score, choose which of the nine dials appear, create and log custom metrics, correct a bad reading, and control which metrics OneRep is allowed to read from your phone.

The Health page answers one question before anything else: how you are doing right now, as a single score, with the areas behind it underneath. Everything it shows comes from Apple Health on iOS or Health Connect on Android, plus the check-ins you type yourself. Nothing is read from your phone unless you switch it on.

## The score and the dials

The number at the top is your health score, with a plain-language band next to it ("ready", "steady", and so on) and a line telling you how many of the past days were actually measured. A score built on two days of data says so rather than pretending.

Beneath it sits a row of dials, one per area. Each dial shows that area's own score and a line of context, and tapping one opens the area screen behind it.

| Dial        | What it shows                            | Screen                 |
| ----------- | ---------------------------------------- | ---------------------- |
| Recovery    | Whether today is a day to push           | `/health/recovery`     |
| Sleep       | Asleep time against your baseline        | `/health/sleep`        |
| Activity    | Exercise minutes and steps               | `/health/activity`     |
| Heart       | Resting rate and variability             | `/health/heart`        |
| Body        | Weight and composition                   | `/health/body`         |
| Nutrition   | What you ate, against what you asked for | `/health/nutrition`    |
| Vitals      | Glucose, pressure, oxygen, temperature   | `/health/vitals`       |
| Mindfulness | Time spent deliberately doing nothing    | `/health/mindfulness`  |
| Cycle       | Cycle tracking, in your own hand         | `/health/reproductive` |

A dial only appears once there is something behind it: either the app measured that area natively, or you have at least one [custom metric](#custom-metrics) filed under it with a reading in the window. Dials with nothing to show are dropped rather than drawn empty, so the row grows as you track more.

<Note>
  **Cycle is off by default.** It is switched off in the same spirit as the intimate rows in the metric catalogue: a cycle dial sitting on the home screen of a phone somebody else might glance at is a disclosure the app would have made on your behalf. Switch it on in **Dials** if you want it.
</Note>

Under the dials, a short summary explains what moved, followed by **How to move it**: two to four concrete cards ("+2,400 steps", "+35 min sleep") with the points each would add to your score. **Trends and history** at the bottom opens every signal by week, month, or year.

### Choosing which dials appear

The Health header carries three buttons: the plus logs a [custom metric](#logging-a-value), the pencil opens [Correct a reading](#correcting-a-reading), and the sliders open **Dials**.

Tap the sliders icon to open **Dials** and switch areas on or off. This is purely about what you want to look at: switching off the Sleep dial does not stop sleep syncing, and its charts stay in Trends either way.

Dial choice is stored on your account, so it follows you across devices. Fewer dials also means bigger ones; the ring size falls out of how many you show rather than being fixed.

<Note>
  Body has no ring. There is no honest target to grade a weight against, so the Body dial shows your latest reading instead of a score.
</Note>

## Area screens

Every area screen follows the same shape: a headline stat, charts you can flip between week, month, and year, and an **About** section explaining where each number comes from and how far to trust it.

Area screens hide charts with no data. If you have never recorded body fat, the body fat chart is not there, rather than sitting empty and implying you forgot something. **Trends** is the exception: it shows every series whether or not it has readings, because that page exists to tell you what the app can track.

Recovery, Sleep, Activity, Heart, and Body each grade a signal the app measures itself. Nutrition, Vitals, Mindfulness, and Cycle have no maths of their own: everything on them is a [custom metric](#custom-metrics) you defined, so those four screens are empty until you make one.

### Body

The Body area at `/health/body` covers weight and composition. It plots weight and body fat over time, and reads from both sources at once: check-ins you type in Progress, and readings your scale writes to Apple Health or Health Connect.

Change is measured against your first reading in the log, not yesterday's. A day-to-day difference on a bathroom scale is mostly water, and a fortnight is the shortest window that means anything. Days with no weigh-in are drawn as a break in the line, never as a drop to zero.

<Tip>
  Smart-scale body fat percentages come from electrical impedance. Treat a move from 22 to 20 as real and the 20 itself as approximate.
</Tip>

## Correcting a reading

A watch left on the charger produces a day that is wrong rather than missing, and every number on this page is a composite: one night recorded as two hours of sleep drags a fortnight of recovery down with it. The pencil in the Health header opens **Correct a reading** so you can say so.

The sheet steps back through the last seven days, one at a time. Beyond a week you are guessing rather than correcting, so it stops there. Each day offers sleep, steps, resting heart rate, heart rate variability, active energy, weight, and body fat, and every row is labelled with where its number came from: **read from Apple Health**, **you typed this**, or **nothing recorded**.

<Steps>
  <Step title="Pick the day">
    Use the arrows either side of the date, or the calendar button to jump straight to a day. Today is the default and the furthest forward you can go.
  </Step>

  <Step title="Type the right number">
    Enter what the reading should have been. Sleep is typed in hours even though it is stored in minutes, and weight follows your unit preference.
  </Step>

  <Step title="Save">
    Whatever you typed is what every score on the page now uses.
  </Step>
</Steps>

Corrections are recorded per field, not per day. Fixing a bogus resting heart rate leaves that day's step count synced and still updating, so one bad sensor does not freeze everything the phone recorded alongside it.

To hand a field back, tap **Use synced** on its row, or clear the box and save. The override is dropped and the next sync owns the field again, restoring whatever the health store actually says.

<Note>
  Values outside the plausible range for their metric are refused, not rounded to the nearest legal figure. A slipped decimal point should look like an error rather than settle quietly into your baseline. The message names the range.
</Note>

### Pushing corrections back to your phone

The sheet carries an **Also update Apple Health** switch (Health Connect on Android). It is off by default, and it only changes what other apps see: OneRep uses your corrected figure whether or not you turn it on.

<Warning>
  **Your phone will show two readings for that day.** Neither Apple Health nor Health Connect lets one app amend a sample another app wrote. A correction is added next to the original rather than replacing it, so the health store ends up holding both your figure and the device's. This is a limit of the platforms, not something OneRep can work around, which is why the switch is off until you ask for it.
</Warning>

If your phone refuses the write, because you declined write permission or the record type cannot be written at all, the correction still stands inside OneRep. A refused write-back is never a reason to lose the edit.

## Custom metrics

Anything OneRep does not track for you, you can track yourself: migraines, espressos, blood glucose, whether you stretched. Custom metrics used to live on Progress. They now live here, filed under the dial they belong to and drawn alongside everything else.

### Creating one

**Track something new** is a labelled row, not a fourth icon in the header. You will find it on the Health page and at the foot of every area screen, including the empty state, since somebody staring at "nothing filed here yet" is the person most likely to want one.

Describe what you want to track and OneRep sets up the controls: a **counter** for whole things tallied through the day, a **number** for a figure typed once, a **toggle** for did-it-or-not. Give it a target if you have one. You can also ask Coach to build one for you.

### Filling one from your phone

The builder offers an optional **Fill from Apple Health** step (Health Connect on Android). Pick a catalogue entry and the sync fills the metric in day by day: blood glucose, blood pressure, caffeine, VO2 max, and everything else the two stores expose beyond the ten OneRep scores on.

* The unit comes from the catalogue rather than from your description. The sync writes mmol/L whatever the card claims to be showing, and a card labelled mg/dL over an mmol/L number is worse than no card
* Metrics your phone cannot deliver stay on the list, greyed, wearing the reason. "Your platform has no record for this" is a better answer than a metric that quietly is not there
* Binding is a second tap on purpose. Most metrics people invent have no reading behind them anywhere
* **Type it myself** at the top of the list is the way back to an ordinary manual metric

See [the catalogue](/features/health-metrics) for every signal you can point one at.

### Which dial it lands on

You do not file a metric yourself. A **bound** metric is filed by the catalogue group of the signal it reads: a glucose metric lands on Vitals whichever screen you created it from. The heart-rate family (resting rate, heart rate, walking average, HRV, heart rate recovery) is pulled back onto **Heart** by name, because separating walking heart rate from the resting rate it belongs beside would be a filing error you have to undo in your head every time.

An **unbound** metric has no catalogue group, so it files by the tab you chose when you made it:

| Tab       | Dial      |
| --------- | --------- |
| Body      | Body      |
| Nutrition | Nutrition |
| Training  | Activity  |

### Logging a value

The plus in the Health header opens a sheet listing every custom metric you have, grouped by tab. It steps back through the last seven days with arrows, or a calendar button to jump straight to a day.

Number and counter metrics get a field in their own unit, with the decimals their step justifies. Toggle metrics get a switch. Each row says where its number came from: **you typed this**, **synced**, or **nothing recorded**.

A value you type marks that day as yours, and the sync stops overwriting it.

### Clearing a day

Empty a row and save to delete that day's entry. Toggles get an explicit **Clear** next to the switch, because a switch has two positions and a day has three states: on, off, and never asked.

<Warning>
  **Clearing drops the manual flag, and bound metrics refill.** Once the day is no longer yours, a metric bound to Apple Health or Health Connect takes whatever the health store says on the next sync, so the figure you cleared may reappear. An unbound metric has nothing to refill from and stays empty. If you want a bound metric to stop taking readings, unbind it rather than clearing days one at a time.
</Warning>

### How custom metrics are scored

Start with what the scoring refuses to do, because that is the whole design. **OneRep applies no clinical thresholds to anything.** There is no number in it that says a blood glucose of 5.4 is good and 7.1 is bad, no respiratory rate band, no "healthy" oxygen floor. Those figures exist in the literature attached to an age, a medication list, a time since the last meal, and a clinician who has met you. None of that is available to an app reading a watch.

So a custom metric earns a score two ways, and no third:

<CardGroup cols={2}>
  <Card title="Against a target you set" icon="target">
    Distance from the figure you asked for. Symmetric, because the app cannot know whether your target is a floor (protein) or a ceiling (sodium), and guessing wrong means congratulating you for triple the salt you meant to avoid. Counter and toggle metrics forgive an overshoot: doing more of a thing you set out to do is not a miss.
  </Card>

  <Card title="Against your own history" icon="chart-line">
    With no target and at least 7 readings in the last 28 days, the score is stability: how close your recent readings sit to your own median. 100 means "where you normally are". It is not a claim that where you normally are is good.
  </Card>
</CardGroup>

Anything else scores nothing at all. A metric with no target and too little history reads **no reading**, never 0. A zero is a grade, and it is one you did not earn. Metrics that cannot be scored are left out of a dial's average rather than counted as zero, so one unscorable metric cannot drag a dial down.

<Note>
  A dial only draws a ring when something under it carries a target. Nutrition, Vitals, Mindfulness, and Cycle have no maths of their own, so they are graded on the targets you set on your own metrics and left ungraded when you set none.
</Note>

### Metrics with nothing in them

A metric with no readings in the window does not appear on its dial screen at all. It appears on **Trends**, under **Nothing recorded**, grouped by the dial it would belong to, each with one line saying what would fill it: which reading it is waiting on from your phone, or that it fills when you log a figure or mark a day done.

Trends is the complete inventory. Every other Health screen hides what is empty; this one does not, because a list of what you are not measuring is the only reading some of these will ever give you.

## Choosing what OneRep may read

Go to **Settings → Health & wearables**. Turn on sync, grant the permission your phone asks for, and then use the switch list below to decide, metric by metric, what OneRep reads.

The list is grouped into **Activity**, **Recovery**, and **Body**, and covers the ten metrics the app scores on:

| Metric                 | Group    | Unit  | On by default |
| ---------------------- | -------- | ----- | ------------- |
| Steps                  | Activity | steps | Yes           |
| Active calories        | Activity | kcal  | Yes           |
| Sleep                  | Recovery | min   | Yes           |
| Resting heart rate     | Recovery | bpm   | Yes           |
| Heart rate variability | Recovery | ms    | Yes           |
| Weight                 | Body     | kg    | Yes           |
| Body fat               | Body     | %     | Yes           |
| Lean body mass         | Body     | kg    | No            |
| Bone mass              | Body     | kg    | No            |
| Basal metabolic rate   | Body     | kcal  | No            |

A metric you switch off is never read from the phone in the first place. This is a sharing control, not a display filter: the app does not fetch the readings, so there is nothing to delete afterwards.

Switches are stored per metric on your account. A metric added in a later release arrives switched on if its catalogue default says so, and one you explicitly switched off stays off through every update.

<Note>
  Bone mass is Android only. Apple Health has no bone mass type at all, so the switch has nothing to read on an iPhone however you set it.
</Note>

<Note>
  The switches are inert until sync itself is on. Each row says **Turn on Apple Health sync first** (or Health Connect, on Android) rather than moving and doing nothing.
</Note>

For the full catalogue of what each platform exposes, and the metrics you can point a custom metric at, see [Health metrics by platform](/features/health-metrics).

## Body composition sync

With the Body metrics switched on, weight, body fat, lean mass, bone mass, and basal metabolic rate are read from HealthKit or Health Connect and filed as **check-ins**, in the same place a typed weigh-in lands. Your scale readings show up in Progress and in the Body area without a second data set to reconcile.

Two rules keep this from eating your own numbers:

<CardGroup cols={2}>
  <Card title="Typed beats synced" icon="hand">
    A check-in the sync did not create is never overwritten. If you typed a weight for Tuesday, no later scale reading replaces it. Editing a synced row makes it yours, and the sync stops treating it as its own from then on.
  </Card>

  <Card title="Only what the reading carries" icon="filter">
    Only fields a reading actually contains are written. A scale that reports weight but not body fat cannot blank a body fat percentage you recorded by hand on the same day.
  </Card>
</CardGroup>

Readings outside a plausible range for their metric are dropped individually. One badly behaved app writing a 900 kg weigh-in loses that field, not the day.

Every check-in records whether it was typed or synced, and that source is returned by the API and MCP tools alongside the values.
