Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Glossary

Terms that recur throughout the Varta documentation. Where a term has a formal definition in the source, the canonical location is linked.


AEAD

Authenticated Encryption with Associated Data. Varta’s secure-UDP transport uses ChaCha20-Poly1305, a stream cipher (ChaCha20) paired with a polynomial MAC (Poly1305). Every secure-UDP frame is encrypted and integrity-checked in one pass. See VLP — Secure Transport.

Agent

A process that emits Varta heartbeats. Agents link varta-client (or a language port) and call Varta::connect() once at startup, then beat() on whatever cadence they like.

Audit log

The optional TSV file written by varta-watch when --recovery-audit-file <PATH> is set. Records every recovery decision — Spawned, Debounced, Refused, Reaped, Killed — with the kernel-attested PID where available. Required for IEC 62304 / DO-178C deployments. See Audit Logging.

Beat

One 32-byte VLP frame from agent to observer. The verb (agent.beat()) and the noun (varta_beats_total counter) share the term.

BeatOrigin

The observer’s enum tag for how the beat got here. The recovery gate uses this to decide whether to honour or refuse a stall.

VariantMeaningRecovery eligibility
KernelAttestedUDS with peer-cred PID verified
OperatorAttestedTransportSecure-UDP with master-key (PID bound to key derivation)
SocketModeOnlyUDS on a platform without per-datagram peer-creds (e.g. OpenBSD)❌ refused with socket_mode_only
NetworkUnverifiedPlaintext UDP❌ refused with unauthenticated_transport

New variants default to refused. See Threat Model and CLAUDE.md hard-constraint #8.

BeatOutcome

The return type of Varta::beat(). Three variants:

  • Sent — the kernel accepted the datagram.
  • Dropped(DropReason) — the kernel returned WouldBlock or similar expected failure. Not an error; the beat path is non-blocking by contract.
  • Failed(io::Error) — an unexpected error (e.g. EBADF after a socket-mode change). Surfaces to the caller.

Class-A / Class-C

Refers to safety-critical software classifications used by IEC 62304 (medical) and DO-178C (avionics). Class-A profile in Varta is the structurally-excised binary built with the compile-time-config feature instead of prometheus-exporter: no HTTP server, no /bin/sh, no ---prefixed flag literals. CI’s safety-profiles job enforces this via a strings audit. See Safety Profiles.

Debounce window

The per-pid interval (--recovery-debounce-ms) during which a repeat stall on the same pid does not spawn another recovery child. Returns the Debounced outcome instead.

Frame

The 32-byte, fixed-layout, #[repr(C, align(8))] wire unit. Encoded and decoded on the stack. See VLP — Base Frame.

Iteration

One full pass of the observer’s poll loop: drain pending → poll sockets → maintenance → recovery reap → serve pending → housekeeping. The total wall time is varta_observer_iteration_seconds; per-stage breakdown is varta_observer_stage_seconds{stage=…}. Worst-case bound: ~310 ms. See Stall Detection & Liveness.

Kani

A bit-precise model checker for Rust by AWS. Varta uses Kani harnesses under crates/varta-vlp/ to exhaustively prove panic-freedom and field-range correctness of Frame::decode. Runs as a nightly CI job. See Symbolic Verification.

MAX_CAPACITY

The hard ceiling on simultaneously-tracked agent PIDs in varta-watch: 4096. Both the Tracker and OutstandingTable share this bound. Operators tune the actual cap with --tracker-capacity. To scale past 4096 on one host, run multiple observer instances and shard the agent population client-side; see Deployment Ceiling & Sharding.

Observer

varta-watch. The single-threaded process that decodes beats, tracks per-pid state, fires recovery, and exposes Prometheus metrics.

OutstandingTable

The BoundedIndex-backed slab in varta-watch that holds outstanding recovery children, keyed by stalled pid. Statically sized to MAX_CAPACITY; zero heap allocation after construction. See Bounded Collections.

Peer-cred / SO_PASSCRED

The Linux mechanism for the receiver of a UDS datagram to learn the sender’s UID + PID, attested by the kernel rather than claimed by the sender. BSDs use SCM_CREDS / SCM_CREDS2; macOS pathname datagram sockets do not provide equivalent per-datagram attestation for Varta’s UDS transport. Varta relies on peer credentials for KernelAttested BeatOrigin. See Peer Authentication.

Recovery

The observer’s response to a stall: spawn a configured command (--recovery-exec) with the stalled pid as the final argument. Spawn is non-blocking; the child is reaped on a later observer tick. See Recovery — Async Spawn.

Self-watchdog

The in-process watchdog thread (--self-watchdog-secs) that aborts the observer (SIGABRT) if the main poll loop hasn’t advanced within the configured deadline. Distinct from the kernel hardware watchdog (--hw-watchdog) and from systemd WatchdogSec=. All three can be used together for layered defence.

Shard

Running multiple varta-watch instances on one host, each bound to a distinct socket path and /metrics port, with agents partitioning themselves across the shards (typically by pid % N). The simplest way to scale beyond MAX_CAPACITY = 4096 on a single host.

Stall

A pid that hasn’t beat in --threshold-ms. The observer surfaces Event::Stall and the recovery layer decides whether to fire. Synthesised by the observer; never on the wire (Status::Stall = 0x03 is reserved for that purpose — frames carrying it are decoded as StallOnWire errors).

Status

The 1-byte field at offset 3 of every frame. Wire values: 0x00 Ok, 0x01 Degraded, 0x02 Critical. 0x03 is reserved for the observer’s stall synthesis and is rejected on the wire.

Stage names

The six labels emitted under varta_observer_stage_seconds{stage=…}, always in this canonical order: drain_pending, poll, maintenance, recovery_reap, serve_pending, housekeeping.

Tracker

The bounded open-addressed table in varta-watch that holds per-pid state (last-seen-at, last-status, last-fired-recovery). Statically sized to MAX_CAPACITY = 4096. Probe budget is bounded; see Bounded Collections.

VLP

Varta Liveness Protocol. The wire format. v0.2 is current and frozen; future versions will be called out in the Upgrade Guide. See VLP — Base Frame.