Fill available places, then spread total counts
The scheduler uses an integral minimum-cost maximum-flow calculation across the complete date list. Each person can fill at most one place in a particular slot. Within maximum coverage, increasing marginal assignment costs minimize the sum of squared personal duty counts, discouraging concentration on a few people. Randomized tie costs cannot outweigh that count objective. With unrestricted availability, totals differ by at most one. Availability restrictions can force a larger gap, which is displayed rather than concealed. Counts include every listed person, even someone unavailable for all slots.
Prefer breaks without claiming a hard rest rule
With the break preference enabled, eight randomized count-optimal candidates are considered. Bounded local moves keep coverage, availability and the count objective intact while preferring a shorter longest run, then fewer adjacent assignments. This improves some avoidable patterns but does not prove the global minimum consecutive total or enforce a maximum run. A consecutive run means neighboring rows in the sorted slot list, including separate slots on the same date or dates separated by a weekend. It is not a calculation of elapsed rest hours or consecutive calendar days.
Export every dated place
Copy and print include the complete dated roster, missing places, count gap and each person’s count, availability and consecutive statistics. CSV has one row per required place, including blank-person rows marked unfilled. The screen table scrolls on small displays without limiting any export. Dates use the unambiguous ISO format, and spreadsheet formula-leading labels are protected. Exports do not send notifications or update a shared calendar. Use the browser’s print dialog for a paper copy or PDF; there is no built-in calendar file, account or cloud synchronization.