A SchedulingProblem is plain data: activities with their time windows and durations, the rooms and people they need, calendars, rules and goals. compilechecks it and turns it into a constraint model for unifier.
solve builds a feasible plan first, then improves it with the time that is left. Without a plan, explain lists the conflicts. Single bookings skip the search: SchedulingState checks one create or move against what is booked.