Rust engine v0.1.31
Rust engine v0.1.31 delivers JANUS-451: the identity broker's socket lifecycle no longer depends on the embedding sidecar doing cleanup.
Startup. janusd-identityd reclaims a dead socket left by a previous broker (torn-down sidecar, crash) — only when the path is a real socket, owned like its private parent directory, and refuses connections across ten spaced probes (0.5 s). A live broker, a symlink, a non-socket entry, or a socket owned by another user fails closed with identity_socket_occupied, printed as reason_code=identity_socket_occupied value_returned=false.
Shutdown. On SIGTERM/SIGINT and every exit path the broker unlinks its own socket (only while it is still a socket) and exits 0.
Readiness. Documented as accept-connect, never file existence; scripts/smoke-janusd-identity.sh pre-creates a stale socket, gates on a connect probe, and asserts clean SIGTERM shutdown with the socket removed. docs/runtime-accountability-runbook.md gains a "Broker sidecar lifecycle" section (persistent registry/audit paths, registry-directory hygiene, readiness probe, shutdown semantics).
Feature + version PR: #88
Tickets: JANUS-451 (context: JANUS-442, NIX-377, NIX-379, NIX-380)