- Documentation
- /
- Condition Monitoring
- /
- 01 — Quick Reference
01 — Quick Reference
How a value is rated
Our rating governs; the lab's own rating is neither stored nor used. Levels are normal, elevated, urgent, not_rated.
- The unit's primary maintenance group at the date taken comes from the Asset Register. No group:
not_rated. - The standard for (group, SMCS code, method): the site row if it has at least the parameter's minimum sample count;
otherwise the thin-population rule (
overall_then_engineeredby default): the overall row (the group, then its parents), then the engineered row; otherwisenot_rated. A value is never scored against another method's population. - Ascending (the default): urgent at or above the standard's
urgent, elevated at or above itselevated, else normal. Descending (viscosity): the same with "at or below", andelevatedis the higher figure. - Either level may be empty: a standard with only
urgentgivesurgentornormal; a standard with neither cannot rate and is skipped as if absent. Context values (ratedfalse) are stored, not rated.
Trend, series and resets
- Rate per 100 SMU = change against the previous result of the same series (unit + SMCS code + modifier) and method, divided by the SMU between them. It is information only: no rate thresholds, it never changes a severity.
- The SMU is Lifecycle's reading at the date taken (the last known reading), never the date the lab reported.
- The trend restarts (the next rate is empty) after a series reset: a component fitted or removed at that unit and
SMCS code (the app is told, not which component), a change of method, an
OIL_CHANGEDvalue on the result, or a closed work order whose template is flaggedoil_change.
Alerts and Work
- An
elevatedorurgentvalue raises one alert per result and parameter (a result sent again is not recorded twice: it is matched on the lab's result id).condition.elevated_reading/condition.urgent_readingare published. An elevated alert is a warning only: no work order and no schedule item. It resolves itself when the same unit, SMCS code and parameter is normal in two results running (alerts_resolvedin the response); a planner can also acknowledge or resolve it. - An urgent alert asks Work for a draft work order from the route's template (
alert_routing.yaml, by SMCS code; no work type, Work takes it from the template). Work's order is linked back to the alert, and closing it resolves the alert (condition.alert_resolved).
Wear patterns
- A pattern is a set of values (its members), each with a lowest severity that counts (elevated or urgent), a weight
(a negative weight rules the pattern out, e.g. silicon argues for dirt ingress, not wear) and a required flag. The score is the
sum of the weights of the members met; at or above the pattern's
score_possibleit is possible, at or abovescore_confirmedit is confirmed. A pattern is at most no match unless every required member is met. - A pattern applies by maintenance group (the unit's group or an ancestor; empty means all groups) and SMCS code; where several versions share a name, the most specific group wins. The weights in the demo data are placeholders until the reliability engineers set the real ones.
- A value the lab did not report is simply not met and is noted in the evaluation (it lowers the confidence); it is not a clean negative.
- When a pattern first reaches possible or confirmed (or goes from possible to confirmed) one pattern alert is raised with the
pattern's wording frozen in it, and
condition.pattern_detectedis published. The pattern alert replaces the elevated single-value alerts of the values that contribute to it; an urgent value always raises its own alert. - Possible and confirmed both ask Work for a draft work order from the pattern's own corrective template, like an urgent value (decided 2026-10-15: a possible pattern is not scheduled). Closing the order resolves the alert.
- A series reset (a component fitted or removed at that unit and SMCS, a method change, an oil change) ends the pattern state; the next result starts it afresh.
MTBR (mean time between removals)
Beside an alert's wording: the computed figure for the group + SMCS code (the exposure of all the components fitted there, those
still running included, divided by the failures, in the main SMU) when there are at least reliability.min_failures failures
(default 5); otherwise the engineer's industry estimate with its source. condition.recalculate_reliability (or
scripts/recalculate_reliability.py) reads the failure removals from the Register's component history and the exposure from
Lifecycle. It is context only: it never changes a severity.
Settings
schema/condition_settings.yaml: sigma for elevated (1.0) and urgent (2.0), minimum sample count (30; lead 15), the thin
rule, samples kept out of the norm (those within 500 SMU before a component change at that unit and SMCS), the usage metric
used for the SMU. schema/alert_routing.yaml: what each severity does.
Recalculating the statistical standards
condition.recalculate_standards (or python apps/condition_monitoring/scripts/recalculate_standards.py) recomputes mean,
SD and count per (group, SMCS code, method, parameter), once per site and once overall, and for each parent group; the
previous rows are superseded and old results keep the standard they were rated against. Run it weekly; nothing schedules it
inside the app.
Numbers
| Record | Number | How |
|---|---|---|
| Result | RS-00007 … |
assigned on save |
| Alert | CA-00004 … |
assigned on save |
Everyday tasks
| To… | Do this |
|---|---|
| See what needs attention | Results & Alerts → Condition Alert, filter status open. |
| See a unit's standing | Condition State, filter by asset. |
| Check how a value was rated | Result Value → the standard it points at. |
| See why a pattern was declared | Wear Patterns → Pattern Evaluation (score, members met and missing, confidence, rising). |
| Tune a pattern | Wear Patterns → Wear Pattern Member (min severity, weight, required). |
| Enter an industry estimate | Standards → Reliability Estimate (basis industry estimate, with its source). |
| Change an engineered limit | Standards → Parameter Standard (source engineered). |
Running it
python server/run.py condition_monitoring # alone, http://localhost:5100
python networks/work_supply/network.py start # with the whole Work & Supply network