Work  /  Service assurance

Faults confirmed before anyone is sent

A fault is raised only when a second source confirms it, an outage is reported as one cause with its consequences grouped under it, and a report goes out every hour.

A network operator · 2026, ongoing

Upstream router Uptime, routing neighbours, collector health. Healthy, with many services down at once: one event, low confidence. Service state The service's own flag. Site probe The equipment at the client's site. Compare witnesses Same fault? Evidence available? Confirmed down Service down, probe down. Suspect Service down, probe answers. Unverified A witness is missing.
The rule as a model. No live service states or measurements.

What we built

A service counts as down only when two independent checks agree: the service's own state, and a probe of the equipment at the client's site. If they disagree, the service is suspect, which is a question for monitoring rather than a reason to drive out. When many services drop at once while the router upstream of them is healthy, they're reported as one event with a confidence level, not as a page of alarms.

The same rule feeds a report that runs at the top of every hour. It compares each run with the last, so an issue is new once and ongoing after that, and it keeps its age. It reads the network's structure, so when a site upstream is down, the sites behind it are listed as consequences under one cause. Each fault is sorted by the fix it needs: a remote change, a visit, or nothing until the upstream fault is cleared. A local language model writes the summary from a short digest, so the data stays in-house.

How it holds up

One shared rule feeds the dashboard, the hourly report and the dispatch messages, so they can't disagree. If the model is offline, the tables still go out. The report checks twice before it calls a node down, needs two runs in a row before an issue counts as new, and holds the email when it can't see the network properly. It has run every hour since June 2026.

An outdoor access point and a grid dish on a rooftop mast, with rows of low roofs behind.
Access point and grid dish on a rooftop mast
CollectRead-only checksCompareNew, then ongoingCorrelateCause firstSortBy the fix neededDraftA local modelSendOr hold it Guards Check twice before calling a node down Two runs in a row before an issue is new Hold the email when the network can't be seen

Need something like this?

Tell us what you’re working on. You’ll get a straight answer on whether we’re the right firm for it.

Start a conversation