Expand description
The alert rules the credit registration dashboard renders.
An alert carries identifiers and numbers, never prose: the study registryβs own error text is written for an integrator and is not translated, so the frontend renders one key per alert id with these values interpolated. The thresholds travel with the alerts, not hardcoded twice.
StructsΒ§
EnumsΒ§
ConstantsΒ§
- CREDENTIAL_
REJECTION_ πWINDOW - Within this much of the past, one rejected credential is enough.
- IDLE_
QUEUE_ πDEPTH - Queued work that makes a day without a single completion mean something.
- LATENCY_
REGRESSION_ πFACTOR - LATENCY_
REGRESSION_ πFLOOR - Under this the registry is quick enough that a doubling says nothing.
- LATENCY_
WINDOW π - LINKING_
MAIL_ πHOURLY_ CAP - Linking mails one hour may hand over before the volume itself is the problem.
- LINKING_
MAIL_ πRATE_ WINDOW - LINKING_
MAIL_ πWINDOW - MISREGISTRATION_
CRITICAL_ πCOUNT - A reversal is always worth saying; this many at once is an incident.
- NEVER_
ENTERED_ πMIN_ AGE - How long a completion may sit outside the ledger before
materializeis the suspect rather than the clock. - NEVER_
ENTERED_ πSAMPLE_ LIMIT - Bounds the anti-join behind that rule; a bigger backlog reports as this many.
- PERMANENT_
FAILURE_ πCOUNT - PERMANENT_
FAILURE_ πRATE_ PERCENT - PHASE_
CONSECUTIVE_ πFAILURE_ LIMIT - Failures in a row before a phase counts as broken rather than unlucky.
- PHASE_
HEARTBEAT_ πINTERVAL_ MULTIPLIER - A phase is late once this many of its own intervals have passed without a heartbeat.
- PHASE_
SUCCESS_ πCALL_ MARGIN - PHASE_
SUCCESS_ πINTERVAL_ MULTIPLIER - A phase that owns a nonempty queue and has not succeeded within this many of its own intervals
is running without getting anywhere, which no failure count catches. Never less than its
slowest possible iteration plus
PHASE_SUCCESS_CALL_MARGIN, or one slow call would look like a wedge. - SERVICE_
OUTAGE_ πFAILURE_ SHARE_ PERCENT - SERVICE_
OUTAGE_ πMIN_ ITEMS - Below this many items the share below is one bad batch, not a signal.
- SERVICE_
OUTAGE_ πWINDOW - STUCK_
CRITICAL_ πCOUNT - Above this many stuck rows the backlog stops being something to look at tomorrow.
- STUCK_
THRESHOLDS π - SUOTAR_
PENDING_ πWAIT - The longest
submissionPendingasks verify to wait before polling again. - TERMINAL_
WINDOW π - The window every βin the last dayβ rule shares.
- UNREACHABLE_
CONSECUTIVE_ πFAILURES - Below this the run is a bad minute rather than an outage.
- UNREACHABLE_
WINDOW π - Long enough to hold three failed calls at the longest request timeout.
FunctionsΒ§
- course_
configuration_ πalert - Modules the last configuration check found broken. Never checked is not counted: the Courses tab renders unknown and broken differently, and so must this.
- depth_
of π - evaluate
- Runs every rule and ranks what it found.
- is_
heartbeat_ πlate - A phase counts as late once more than
PHASE_HEARTBEAT_INTERVAL_MULTIPLIERof its own interval has passed since its last heartbeat. A paused phase is never late: it is not expected to be heartbeating at all. - is_
phase_ πfailing - Whether a phase counts as failing: too many failures in a row, or a nonempty queue with no
success for too long, or an iteration hung past that same bound. Never while paused. The one
definition behind both the
PhaseFailingalert and the Workers tabβsfailingflag. - latency_
regression_ πalert - How long the study registry is taking to confirm, this week against last.
countis this weekβs p95 in seconds andtotallast weekβs, so the banner can name both. - linking_
mail_ πalert - Linking mails we could not hand over at all. The recipient domain rides along because an undeliverable host is the usual cause.
- linking_
mail_ πrate_ alert - The volume guard: how many people we mailed in the last hour against what an hour should hold. Counts addresses, which is what the per-person caps govern.
- never_
entered_ πalert - Completions old enough that
materializehas had every chance and still has no ledger row for them. Sampled rather than counted, so the anti-join stops early on a large backlog. - phase_
alerts π - What the phase table says about itself: phases that stopped reporting, and phases that report but get nowhere.
- roster_
course_ πcode_ alert - Course codes whose roster fails even when listed on their own, so enrolment discovery is backing them off. The worst one rides along, since the usual cause is that one codeβs configuration.
- service_
outage_ πalert - The share of recent items that failed on Suotar or Sisu being unavailable. Our only proxy for Sisuβs uptime, which is why it is a rule of its own rather than part of the request-level one above.
- state_
name π - The stateβs own wire name, taken from its serialisation so the two cannot drift.
- stuck_
alert π - Rows the pipeline should have moved on by now. Terminal states are outside this by construction rather than by a filter that could be forgotten.
- stuck_
thresholds - study_
registry_ πconflict_ alert - Accounts the study registry reported a number for that another live link kept us from linking.
- terminal_
outcome_ πalerts - The three rules read off the last dayβs terminal outcomes: failures piling up, reversals, and a pipeline that finished nothing while holding work.