backend 0.9.1 — /health RBAC+audit gated
Security hardening. GET /health is unauthenticated (uptime monitors + e2e callers poll it), and it exposed operational security internals to anyone who could reach the host: the RBAC hook-failure counters (rbac — reveals silent role-sync drift) and the audit-log stats (audit).
/health now takes optional auth and includes rbac + audit only for authenticated callers. The operational stats (vector_store reachability + indexing/backfill counts, BM25, external_git/metadata_backfill/events backlogs) stay anonymous — they are monitoring data the codebase already treats as world-readable (8+ e2e suites + uptime probes poll them without auth) and carry no per-vault names/IDs. /health/vault/{name} stays the per-vault, reader-gated surface.
Scoped to the two sensitive internals (not the whole body), so the established unauthenticated /health monitoring contract keeps working unchanged — no test churn. New e2e pins both postures (anon: stats present, rbac+audit withheld; authed: included). CI 4/4 green.