internal/kennzahlenapi: liest ausschliesslich ueber ANA-01 (internal/ kennzahlen) bereits aggregierte, gespeicherte Kennzahlen - keine eigene Aggregationslogik. Hinter RBAC-06 (retentionapi.RequireRBAC wiederverwendet), Tenant-Kontext als Pflicht-Query-Parameter (gleiche Konvention wie Mail INT-01/mailapi) - der Handler liefert strukturell nie Daten eines anderen Mandanten. kennzahlen.SnapshotsInRange ergaenzt ANA-01 um kombinierbare Modul-/Zeitraum-Filter, dieselbe Abfrage fuer API und direkten Aufruf. web/kennzahlen-dashboard: Next.js/React/TypeScript, gespiegelt von web/retention-admin (RET-06) auf @nexarch/shl (SHL-01). Filter nach Modul und Zeitraum, modulübergreifende Summenanzeige, expliziter Zugriff-verweigert-Zustand statt leerer Tabelle. Echter End-to-End-Smoketest gegen den Backend-Stack auf 192.168.1.131 (echter Postgres, Fake-RBAC auf separatem Port ohne den laufenden echten policy-api-Dienst zu stoeren, next dev) - Details und eine ehrlich benannte Pruefluecke (kein Headless-Browser fuer den Rendering-Nachweis der Client-Komponente) in docs/ANA-02-PRUEFPROTOKOLL.md. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>