min(count × per_unit, max) points. Final score = sum, clamped to 100. Tiers: 0-25 low · 26-50 medium · 51-75 high · 76-100 critical. Defaults below come straight from DEFAULT_WEIGHTS in backend/app/domain/risk_score/service.py.
Score tier = low. This identity would show with a RiskBadge in the drawer.
Click to load Charlotte (the over-permissioned admin) or other prepared scenarios:
If this weight-config were applied to a tenant with 1000 identities of the shape below, the distribution would be:
| Tier | Identities | Share |
|---|
sod_violation (counted separately).last_used_at < 90d ago. Privileged variant counts double.