What happens between an error and an alert
The full path, in order, so you know where to look when something stalls.
Every incident follows the same path. Nothing skips a step.
- An issue is pulled from your error tracker and saved as an incident.
- The most recent event for that issue is fetched — stack trace, exception, and request context.
- Sensitive fields are replaced with
[REDACTED]. - A structured prompt is built and sent to your model provider.
- The response is parsed. If parsing fails it is retried, and a fallback record is written if it keeps failing.
- Rules calculate a risk score, independently of the model.
- The final score is the higher of the two.
- The analysis is saved.
- If the risk level is one you allowed for that project, a notification is queued.
Where the work runs
| Queue | Does what |
|---|---|
| issue-sync | Pulls issues in and queues new ones for analysis |
| ai-analysis | Fetches the event, redacts, analyses, scores, and saves |
| email-notification | Sends email, Discord, and Telegram messages, honouring the cooldown |
Everything slow happens on a queue, which is why the interface stays responsive during a large first sync. If incidents appear but analyses do not, the analysis queue is where to look.