- Shipped
- August 12, 2026 at 5:53 PM UTC
- Author
- kamo
- Commit
- 83a6fd2
SecurityService now withholds the approval half of the summary from a caller without FINALIZE_PAY_PERIODS — resolveRole never admitted MANAGE_TIMECARDS to approval authority, so the composite was handing over a count and per-member approval states the platform refuses to serve directly. awaitingApproval is `number | null` on the wire. The pillar renders an em dash for null, never a count-up to 0 — the same null-vs-zero rule already applied to passRate, averageScore and compliancePercent. The APPROVAL queue is ABSENT, not empty, when the value is withheld. "Every timecard is clear." would assert something the caller was never told. Absence is how this page already renders a permission boundary, and it is the right shape rather than the failed state: there is nothing to retry, so "could not be loaded / try again" would be a lie in the other direction. A null while the fetch is still in flight or failed is a different case — `attendance` is null then, and the queue stays so the failed state can render. No i18n key added.