# net.device-status
Decides whether a monitored device is **up**, **degraded** or **down** from
its `net.latency-summary`, and says why, so an alert and a dashboard never
disagree about what "degraded" means.
## Rules, in order
1. No replies at all: **down**, `no replies: 3 of 3 probes lost`.
2. Loss at or above `downLossBasisPoints`: **down**,
`loss 66.67% at or above the down threshold 50.00%`. Down wins outright;
p95 and jitter are not judged.
3. Otherwise each threshold crossed adds a reason, in this order, and any
reason makes it **degraded**:
- loss at or above `degradedLossBasisPoints`: `loss 25.00% at or above 10.00%`
- p95 at or above `degradedP95Us`: `p95 152.300 ms at or above 100.000 ms`
- jitter at or above `degradedJitterUs` (skipped when the threshold or the
jitter is null): `jitter 25.000 ms at or above 20.000 ms`
4. No reasons: **up**, with an empty list.
Every comparison is "at or above", so a threshold is the first value that
counts as bad. Percentages are printed from basis points with two places and
times from microseconds as milliseconds with three places, using integer
arithmetic only, so the text is identical in every language.
## Errors
- `summary is inconsistent` when `sent` is under 1 or `received + lost`
differs from `sent`.
- `downLossBasisPoints must be 1 to 10000`
- `degradedLossBasisPoints must be 1 to downLossBasisPoints` (a degraded
threshold of 0 would make every device degraded)
- `degradedP95Us must be at least 1`
- `degradedJitterUs must be null or at least 1`