A handful of decisions shape everything else about jaque, and they are decisions you can observe from outside the binary, not implementation trivia. This page names them and points at the ADR that made each one, so a claim elsewhere on this site can be traced back to the record that decided it.
1. The decisions that show from outside
- single binary, no external services: standalone mode needs nothing
else running alongside it -- no database, no message broker, nothing
to install beside it
- config is CUE, not a custom DSL: typed, validated, with real
composition instead of Nagios-style template inheritance
- everything is event-sourced: current state is a projection over an
append-only log, rebuildable by replay -- nothing mutates state
directly
- soft/hard state semantics, the same shape Nagios-class tooling has
always used, built on top of that event-sourced core
- legacy Nagios exec plugins are supported permanently, not as a
migration bridge scheduled for removal
See Overview for the single-binary story, Why CUE for the config decision, Event sourcing and State model for the core, and Nagios compatibility for the plugin permanence claim.
See Status for what is shipped, and Roadmap for what is ahead.
2. ADR index
Every decision record, in order. The records themselves are internal; this table names each decision and its status, not where it lives.
| ADR | Decision | Status |
|---|---|---|
| 001 | Implementation language | Accepted |
| 002 | Event sourcing on an embedded event log, pure core | Accepted |
| 003 | CUE as native configuration language | Accepted (spike passed -- see Findings) |
| 004 | Scheduler -- min-heap baseline, timer wheel gated on benchmark | Accepted |
| 005 | Plugins -- WASM sandbox + permanent Nagios exec compat | Accepted |
| 006 | Importers are compiler frontends, never a runtime mode | Accepted |
| 007 | Single binary, embedded dependencies | Accepted |
| 008 | Notification engine -- own state machine over the event log | Accepted |
| 009 | Composable libraries, and deployment topology as a consequence | Accepted |
| 010 | Fork-per-check accepted for v1 | Accepted |
| 011 | SNMP trap reception stays out of core | Accepted |
| 012 | Labels in the core, groups only at the frontends | Accepted, amended 2026-08-10 (2, 3 and "Not decided here") |
| 013 | The command API speaks ConnectRPC; the read protocol is Livestatus | Accepted, 2026-08-10 |
| 014 | Native frontend over ConnectRPC; capabilities are stateless maps over config and the log | Accepted |
| 015 | Cluster topology -- roles, pull work queue, per-object ownership over a live membership | Accepted |
| 016 | Sinks are opt-in projections; the log tiers to an archive | Accepted |
| 017 | Telemetry: one typed model, sinks as config, no in-process plugins | Accepted |