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