- Shipped
- August 12, 2026 at 7:05 AM UTC
- Author
- kamo
- Commit
- 42f7cfd
Re-detect exceptions, recompute everyone's earnings, approve everything the caller can — each reporting PER MEMBER with the reason it refused. "312 of 400 succeeded" is unusable: the person running it now has to find the eighty-eight by hand, which is exactly the work the bulk operation was supposed to save. The refusal table carries the downstream sentence verbatim, so "this timecard has 2 blocking exceptions" tells the approver what to do instead of telling them to open a ticket. The approval dialog says plainly that the reason is recorded on every card, and that each card still goes through the same checks. Both are true and both are the point: a bulk approval IS one decision applied to many records, and pretending otherwise by demanding a per-card comment would produce four hundred copies of the word "ok".