Gunnar

nordisk/edda

crates/app-heartbeat/Cargo.toml

[package]
name = "app-heartbeat"
version = "0.1.0"
edition = "2021"
description = "The ONE app-agnostic APP-ALIVE contract for the nordisk Build Thing: a serde manifest any deployable app declares (identity + liveness markers + the functions/capabilities it exposes), plus a pure evaluator (`HeartbeatProbe`) that reads the manifest and a deployment's observed output and returns a per-function verdict + overall liveness. NOT app-specific — korp is only the reference implementer; the probe never hardcodes any app. Consumed by the dwarves ⚒ Build Thing (one robot UI test per declared function) and by Skidbladnir sockets (a `Probe`). Dep-light: serde only."
license = "MIT OR Apache-2.0"
repository = "https://git.gunnar.rs/nordisk/edda"
keywords = ["heartbeat", "liveness", "capability", "manifest", "app-alive"]
categories = ["development-tools"]
exclude = ["/.nornir/"]

[features]
default = []
# `testmatrix` — emit each functional surface's health into the nornir test-matrix.
# OFF by default: a compiled-out no-op, no nornir dep in a lean build.
testmatrix = ["dep:nornir-testmatrix", "nornir-testmatrix/testmatrix"]

[dependencies]
# The manifest is data: serde derive + JSON on the wire. Nothing heavier — any app
# (and the airgap/no_std-adjacent installer world) can declare a heartbeat cheaply.
serde = { version = "1", features = ["derive"] }
serde_json = "1"

# Introspection-marker emitter — only compiled with `testmatrix`.
nornir-testmatrix = { version = "0.2.7", path = "../nornir-testmatrix", default-features = false, optional = true }