AwaitingApproval is nullable, and null is not zero

Fixkamo-internal
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.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing