MetricBefore rebuild After rebuild What drove the change
Open access-control audit findings 11 0 Enforcement moved to one backend-owned layer
Access token lifetime 8 hours 15 minutes Short-lived JWTs with rotating refresh tokens
Session revocation Not possible Immediate Redis revocation list tied to every session
Active roles in the system 14 overlapping 6 mapped to real jobs Roles rebuilt from actual job functions
Permission checks enforced server-side 40% 100% All authorization moved to backend middleware
Time to add a role or permission 1 to 2 day release Under 15 minutes Permission model stored as data, not code
Cross-tenant data exposure risk Present Removed PostgreSQL row-level security on tenant identity