A schedule constraint is a rule applied directly to a task's date — restricting when it can start or finish, independent of its dependency links. Common constraint types include Start No Earlier Than, Must Start On, and As Soon As Possible. Constraints give a scheduler fine control over a specific date, but they can also override the natural logic of the dependency network if used carelessly — a hard constraint can hold a task's date fixed even when its predecessor's finish date changes.
Constraint Types, from Flexible to Fixed
| Constraint Type | Effect | Flexibility |
|---|---|---|
| As Soon As Possible (ASAP) | Starts as early as dependencies allow | Fully flexible |
| As Late As Possible (ALAP) | Starts as late as possible without delaying the project | Fully flexible |
| Start No Earlier Than (SNET) | Cannot start before a fixed date | Semi-flexible |
| Must Start On (MSO) | Locked to one exact start date | Inflexible |
| Must Finish On (MFO) | Locked to one exact finish date | Inflexible |
Constraints vs. Dependencies
Dependencies model logical relationships — this task happens after that one. Constraints pin a task to a real-world date regardless of that logic. Overusing hard constraints undermines the cascading recalculation that makes a dependency-driven schedule useful in the first place: if every task carries a Must Start On constraint, the "schedule" is really just a list of fixed dates, and a delay on one task no longer visibly cascades to warn you about the rest. A schedule built mostly on dependencies, with constraints reserved for genuine external fixed points, keeps that early-warning behavior intact.
When a Constraint Is Necessary
Legitimate cases for a hard constraint include a contractually fixed delivery date, a permit or inspection date set by a third party, or a piece of equipment that is only available on specific dates regardless of what the internal schedule logic would otherwise compute. In these cases the date is genuinely external to the project's own logic, and the constraint is documenting reality rather than working around a scheduling shortcut.
Constraints in Maverick
Maverick's scheduling engine is dependency-driven rather than constraint-driven: instead of exposing manual constraint types like Must Start On, it computes every date from task dependencies, durations, and each resource's availability schedule. To pin a task to a fixed real-world date — a permit approval, a contractual deadline — the practical approach in Maverick is a milestone with no predecessor, or a dependency to an external event task, so the fixed date still participates in the critical path calculation rather than silently overriding it. This keeps the schedule's cascading logic intact instead of allowing a hidden hard date to stop it.
Related Terms
Task Dependency · Predecessor · Critical Path · Milestone · Project Calendar
Model Fixed Dates Without Breaking Your Schedule Logic
Start a free cloud trial and see how a milestone with no predecessor keeps a fixed external date visible on the critical path — instead of a hidden constraint silently overriding your dependencies.
Start the Free Trial