calltime + 8 < plannedwrap = 150%

That evaluation-procedure IS the rulseset.
A simple switch-case statement will let us pick between which ruleset to use.
It will take basic info as arguments (previous_wrap, calltime, wraptime, planned_wrap)
And output a workday, full of finished slices