Conormis status

The manual

Embeds, the calendar, and the monthly reports

The one-line widget

Drop the script where the badge belongs:

<script src="https://status.example.test/widget.js"
        data-status-host="https://status.example.test"
        data-width="360" async></script>

It renders an iframe of /embed — the compact instrument: the worst-of word with its colored edge, one lamp per service, a link to the full board. data-width/data-height size it (else 100% and an estimated height; data-services refines the estimate). The embed carries the page's own theme and is noindex.

The windows calendar

/calendar.ics (also discoverable in the page head as rel=alternate): every published incident and maintenance window as calendar events — the same merged set the RSS/Atom feeds carry, drafts never. Subscribe from any calendar app.

The monthly SLA report

/reports/:YYYY-MM — the measured month against the declared objectives, per service: measured availability (truncated, never rounded up), the meeting/missing verdict, the incident count, the coverage (measured probes against the expected count for the covered days), and the probe days.

Why coverage exists: availability is computed from recorded probes — a prober that is silent records nothing, so a stopped prober would otherwise read as a perfect month. Coverage names what the report did NOT measure: the HOME prober's recorded probes against the expected count for its own window (the row's first covered day to now, today pro-rated). The home prober is the measurement's spine — the relays add pooled mass to the availability math and their staggered join dates are named on the vantage strip, not smuggled into the coverage. A missing minute is not a failed service, but it is not a measurement either. ?format=csv is the export a tenant attaches to their own evidence; ?format=json is the machine shape. A month in progress says so; a month with no probes reads no data, never zero. Reports are page-scoped by Host like every public surface.