Minimum Coverage
min_coverage | Every shift staffed to ITS OWN declared requirement. This read a scalar UI default of 3 employees per shift applied uniformly, with `per_shift` defaulting to FALSE and `fallback_to_default: true` on the RequiredStaff data source - a declared fail-open on a HARD rule. On INRC-II, where per-shift demand is 0, 1 or 2, that reported a shortfall of 973 against a roster the independent certificate scored as fully covered. The limit belongs to the shift, not to the manifest. | hard | Yes |
Optimal Coverage
optimal_coverage | Reach the OPTIMAL staffing target, not merely the hard minimum. SOFT, as INRC-II scores it: falling short of optimal is a penalty, falling short of minimum is a violation. | soft | Yes |
Maximum Coverage
max_employees_per_shift | Maximum employees that can be assigned to a single shift | soft | No |
Maximum Hours
max_hours_per_employee | Maximum working hours per employee (weekly/period) | hard | Yes |
Minimum Hours
min_hours_per_employee | Minimum hours each employee should work (fairness) | soft | No |
Minimum Rest Period
min_rest_between_shifts | Minimum rest hours required between consecutive shifts | hard | Yes |
Rolling 7-Day Hours Limit
rolling_7_day_hours | Maximum hours in any 7-day rolling window (EU WTD compliance) | hard | No |
Overtime Threshold
overtime_threshold | Hours after which overtime rates apply | soft | Yes |
Employee Availability
employee_availability | Respect employee availability calendars | eligibility | Yes |
Skills/Qualifications Matching
skill_matching | Match employee skills to shift requirements | hard | No |
Consecutive Working Days
consecutive_working_days | Limits on consecutive working days without a day off. Enforced in the feasibility certificate from the problem field `max_consecutive_work_days`; weekly-repeating plans (metadata.scheduling_policy.weekly_repeating) evaluate runs across the week boundary. | hard | Yes |
Fortnight Hours Cap (No Day Off)
fortnight_hours_without_day_off | Hard cap on total hours across two weeks for an employee with no day off in the repeating weekly pattern. Enforced in the feasibility certificate from metadata.scheduling_policy.max_fortnight_hours_without_day_off (0/absent disables). | hard | Yes |
Consecutive Days Off
consecutive_days_off | Limits on consecutive days off | soft | Yes |
Complete Weekends
complete_weekends | An employee who works any day of a weekend works both. Scored by how many days are missing, so one day short of a weekend ranks better than a single day of a longer set. Previously disabled, and keyed off a modulo pattern over shift INDEXES — which assumes a shift ordering the data never promised. The weekend a shift belongs to is now read from the shift. | soft | Yes |
Maximum Weekends Worked
max_weekends_worked | Distinct weekends worked, against each employee's OWN contract. Counting distinct weekends rather than weekend shifts is the point: two shifts in one weekend is one weekend, and counting memberships would fail an employee who simply worked a single weekend twice. Previously disabled and declared as a bare `<=` against a single shared value of 2, which is wrong in one direction or the other for every roster it is applied to. | soft | Yes |
Shift Type Succession
shift_succession | Shift types that may not follow one another on consecutive days. INRC-II declares these HARD. This rule was DECLARED all along and disabled, naming a contract `forbidden_sequence` that did not exist — disabled rules escape the registration gate, so it sat inert while the manifest advertised the capability. Five of INRC-II's six bans are also incidentally caught by the 11-hour rest rule, which is what let the gap hide: Day then Early leaves 14 hours of rest, is legal by every other rule here, and is forbidden. The greedy roster on n030w4 contained 44 of them, scored by nothing. | hard | Yes |
Workload Balance
workload_balance | Balance working hours across employees | soft | Yes |
Shift Type Balance
shift_type_balance | Balance shift types (day/night) across employees | soft | No |
Employee Shift Preferences
employee_preferences | Consider employee preferences when assigning shifts | soft | No |
Employee Pairing
employee_pairing | Require or forbid specific employees from working together | hard | No |
Minimum total assignments
min_total_assignments | Each employee's contracted floor on shifts worked over the horizon. SOFT in INRC-II - loading it as hard is what made all three competition instances read infeasible. | soft | Yes |
Maximum total assignments
max_total_assignments | The matching ceiling. Soft, for the same reason as the floor. | soft | Yes |