crates/nornir-crashlog/Cargo.toml
[package]
name = "nornir-crashlog"
version = "0.1.0"
edition = "2021"
description = "The ONE durable panic record for nordisk binaries: a `std::panic` hook that writes payload + location + thread + backtrace + the artifact's own build stamp and VARIANT NAME to a declared path, and prints that path at startup so an operator knows where to look BEFORE the crash. Written for GUI binaries, whose stderr goes nowhere: `dwarves-ui` died on t14s 2026-08-27 and left no panic message, no backtrace and no file — the operator had to report the crash himself. Zero dependencies (std only), so any app can afford it."
license = "MIT OR Apache-2.0"
repository = "https://git.gunnar.rs/nordisk/edda"
keywords = ["panic", "crash", "backtrace", "diagnostics", "hook"]
categories = ["development-tools::debugging"]
exclude = ["/.nornir/"]
[dependencies]
# NONE. `std::panic`, `std::backtrace` and `std::fs` are the whole mechanism, and a
# crash writer that pulls a dependency tree is a crash writer some lean binary will
# leave out — which is how the measured crash left nothing behind.
# ── TWO names, ONE source — the T7 shape, reproduced cheaply ──────────────────
#
# Both targets are `examples/crash_probe.rs`. Nothing in that file differs between
# them; the ONLY difference in the two artifacts is `CARGO_BIN_NAME`, and the test
# `two_names_off_one_source_report_two_variants` asserts that the two crash reports
# therefore name two different variants.
#
# It is here rather than only in dwarves because that is where the defect was MEASURED
# (`dwarves-ui` and `dwarves-ui-gpu` byte-identical on t14s, same sha256 `6eb9ec98…`,
# two `[[bin]]`s off one `src/main.rs`) and a guard that needs a twenty-minute GUI
# build to run is a guard that stops running. Feature flags cannot carry this claim:
# cargo unifies features per PACKAGE, so both targets built in one invocation see the
# same feature set — `CARGO_BIN_NAME` is per-TARGET and survives it.
# `examples/crash_probe_gpu.rs` is one `include!("crash_probe.rs")` line, so both
# targets compile the same source text. Two `[[example]]` entries on ONE path also
# works and is more obvious, but cargo then warns on every manifest load in the whole
# workspace — see the comment in that file.