Exception model and detector

Featurekamo-shared-library
Ya
12 Agosti 2026, 03:08 UTC
Mwandishi
Kamo
Ahadi ya
26ea4ec

Makes the blockingExceptions gate real. Until now the transition table read a count that nothing wrote, so every timecard looked clean and 'a missing punch is never paid as zero' was a comment rather than a control. The BLOCKING distinction is the taxonomy's whole point: an open shift, an unpairable punch and an unattested provisional punch stop finalization, because closing over them asserts something nobody can stand behind. A geofence miss and a clock skew are ADVISORY and never block -- refusing to record or finalize time that was actually worked is the exact wage violation this system prevents. The detector reports and never repairs. Every way of guessing an unclosed shift is wrong: leaving it open accrues absurd hours, auto-closing under-reports, a cap invents a figure nobody witnessed. So it becomes an exception instead. Idempotent by construction via the unique (member, date, type) constraint -- duplicates would inflate the count and make a timecard unfinalizable for a reason nobody could find.

Mabadiliko yote

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei