Skip to content

Rust engine v0.1.30

Choose a tag to compare

@markus-barta markus-barta released this 21 Aug 19:37
26c8dfa

Rust engine v0.1.30 delivers JANUS-450 and JANUS-452: runtime-authority denials are now diagnosable end to end.

identityd (JANUS-450). Every runtime-authority denial is answered with its specific value-free reason code (for example subject_not_enrolled, runtime_authority_request_context_mismatch) instead of the generic runtime_authority_request_denied, and every denial is audited in JANUS_RUNTIME_AUTHORITY_AUDIT_FILE as outcome:"denied" with that code — never a UID, PID, path, or value. Frames that never become a request are audited as runtime_authority_request_invalid. The startup precondition runtime_authority_config_invalid is split into runtime_authority_audience_invalid, runtime_authority_ttl_invalid, runtime_authority_release_digest_invalid, and runtime_authority_manifest_fingerprint_mismatch; janusd-identityd prints reason_code=… value_returned=false on every startup failure.

Clients (JANUS-452). Warden, janusd, and every runtime-authority client distinguish runtime_authority_unavailable (broker unreachable or client configuration incomplete), runtime_authority_reply_invalid, and runtime_authority_denied, the last carrying the broker's own token-sanitized code as broker_reason_code. Warden structured errors expose both fields.

Operators. The first allowed audit line for a freshly enrolled subject is the enrollment proof; an empty registry denies by design. The reason-code table lives in docs/runtime-accountability-runbook.md § Reason codes and denial evidence. Bare containers without a configured broker now report runtime_authority_unavailable (previously runtime_authority_denied).

Feature + version PR: #87
Tickets: JANUS-450, JANUS-452 (context: JANUS-442, NIX-377)