Context / Motivation
Gatus's condition engine is its key differentiator — conditions over status code, response time, response body, and certificate expiry, expressed declaratively in YAML. StatusBeam currently has a fixed notion of what "down" means.
The counterpart problem is false positives, which is the most heavily discussed pain point in upptime: upptime/upptime#553 (24 comments), upptime/upptime#364, upptime/upptime#287. A single failed probe from one location opening an incident and paging the on-call is what drives people off these tools.
Proposed scope
- A versioned YAML condition expression language evaluated in the Worker, covering status code, latency, response body / keyword match, and (with the SSL check) certificate expiry.
- Versioned so the schema can evolve without breaking existing configs.
- N-of-M consecutive-failure debounce before an incident is opened or a notification is sent, configurable per check.
- Quorum across multiple checks/regions as an input to the same decision.
Acceptance criteria
Priority / Effort / Dependencies
- Priority: p3
- Effort: L (~1 week)
- Dependencies: none hard. Related to the TCP/SSL check work (certificate expiry as a condition input) and to multi-region probes (quorum input).
Context / Motivation
Gatus's condition engine is its key differentiator — conditions over status code, response time, response body, and certificate expiry, expressed declaratively in YAML. StatusBeam currently has a fixed notion of what "down" means.
The counterpart problem is false positives, which is the most heavily discussed pain point in upptime: upptime/upptime#553 (24 comments), upptime/upptime#364, upptime/upptime#287. A single failed probe from one location opening an incident and paging the on-call is what drives people off these tools.
Proposed scope
Acceptance criteria
Priority / Effort / Dependencies