Home › Guides › Task Constraints: ASAP, Must-Start-On and Deadlines

Task Constraints: ASAP, Must-Start-On and Deadlines

Every task in a Gantt chart answers one quiet question before it lands on a date: when is it allowed to happen? That answer is a scheduling constraint. Most planners never touch the setting, and their charts flow correctly because of it. Others pin tasks to fixed dates by hand, then wonder why the timeline stops warning them about slips. This guide explains each constraint type, when to reach for one, and how a single hard pin can bury a conflict in plain sight.

By Uttam Regmi

A flexible task slides to meet its dependencies, while a pinned task refuses to move:
Flexible vs pinned tasksASAP taskslides to fit dependencyMust-start-on📌pinned, cannot movefixed dateHard pins hide slackand can mask a realdependency conflict.

Why constraints exist at all

A scheduling constraint tells the scheduling engine how much freedom a task has to move in time. Without any rule, a good tool will place work as early as it can once its predecessors finish. That default is quietly doing a lot of work for you. It means the plan recalculates itself whenever a date changes, so a slip early in the project ripples forward automatically instead of leaving stale dates behind.

Constraints override that automatic behaviour. They range from gentle nudges that still let a task float, to rigid pins that nail a task to one calendar date no matter what happens around it. Understanding where each one sits on that spectrum is the difference between a plan that thinks for you and a plan that lies to you.

The full menu of constraint types

Most tools expose six or seven constraint types plus a separate deadline field. They fall into two families. Flexible constraints keep the task moving in the direction of the plan. Hard constraints lock a task to a date and stop it responding to change.

ConstraintWhat it doesFamily
As soon as possible (ASAP)Schedules the task at the earliest legal dateFlexible
As late as possible (ALAP)Schedules at the latest date without delaying successorsFlexible
Start no earlier thanSets a floor, task can still move laterSemi-flexible
Finish no later thanSets a ceiling on the finish dateSemi-flexible
Must start onPins the start to one exact dateHard
Must finish onPins the finish to one exact dateHard
DeadlineA target marker that warns but does not pinAdvisory

The deadline is the quiet hero here. It gives you the accountability of a fixed date without the rigidity, because it flags a breach rather than forcing the schedule to obey.

Flexible constraints keep the plan alive

ASAP is the default in almost every serious scheduler, and for good reason. A task set to as soon as possible will shuffle forward the moment its predecessor moves, which is exactly what you want a plan to do. The dates stay honest because the engine keeps recomputing them from the dependency network rather than from a promise you made weeks ago.

As late as possible is its mirror. It packs work toward the end of its available window, which is useful for tasks you want to defer, such as ordering perishable materials or provisioning a short-lived cloud environment. Both are flexible because neither one fights the links between tasks. They ride on top of them.

Finish → StartABB waits for AStart → StartABB waits for AFinish → FinishABB waits for AStart → FinishABB waits for A
How dependencies drive the default ASAP scheduling of each task

Semi-flexible constraints: floors and ceilings

Start no earlier than and finish no later than are the middle ground, and they are often the right answer when people reach instinctively for a hard pin. Say a vendor cannot ship before the fifteenth. A start-no-earlier-than constraint on that date sets a floor. The task will not begin before the fifteenth, but if a predecessor slips past it, the task still moves later on its own.

Contrast that with must-start-on, which would fix the task to the fifteenth even if the work feeding it is not finished. The semi-flexible version captures the real world truth, which is that the fifteenth is the earliest possible date, not the only date. Reach for a floor or a ceiling whenever your true constraint is a boundary rather than a single point.

How hard constraints fight dependencies

A dependency says task B cannot start until task A finishes. A must-start-on constraint says task B starts on a fixed date, full stop. When those two rules disagree, something has to give, and what gives depends entirely on your tool. Some schedulers honour the constraint and quietly let B start before A finishes, producing an impossible plan that looks perfectly tidy. Others honour the dependency and show a negative float or a red warning that many planners never notice.

This is the core hazard. A dependency is a statement of physical reality: you cannot paint a wall before it is built. A hard constraint is a statement of preference. When preference overrides reality without a loud warning, the chart stops describing the project and starts describing your wishes. As the saying goes, a Gantt chart built once and never touched is not a plan, it is a wish.

How constraints hide and destroy slack

Float, or slack, is the amount of time a task can slip before it delays the project. It is calculated from the network of dependencies. When you pin a task with a hard constraint, you sever part of that calculation, and the float number you see afterward may be meaningless.

A must-start-on date can invent slack that does not exist, by pretending a task has a comfortable window when its predecessors are actually running late. It can also destroy real slack, by holding a task in place when it could safely have moved, turning a healthy buffer into an artificial crunch. Either way you lose the honest picture that float analysis is supposed to give you.

ABCFree floatTotal float
How a hard pin distorts the float calculation on the surrounding tasks

The danger of over-constraining

Over-constraining is the habit of pinning many tasks to fixed dates because it feels precise. It is the most common way a beginner turns a smart schedule into a dumb spreadsheet. Each hard pin removes one more link in the chain that lets the plan recompute itself. Add enough of them and the timeline can no longer tell you what a slip actually costs, because half the tasks refuse to move in response.

The symptoms are easy to spot once you know them. Slips stop cascading forward. The critical path looks strangely short or jumps around unpredictably. Float values turn negative in places that should be comfortable. If your plan has more than a handful of hard constraints, it has probably stopped working as a model and started working as a static drawing.

When each constraint is legitimate

Hard constraints are not evil. They are tools with narrow, valid uses. The mistake is reaching for them by default rather than by need. Here is a rough guide to when each type earns its place.

SituationBest constraintWhy
Ordinary work driven by predecessorsASAPLets the plan flow and recompute
Material available only after a dateStart no earlier thanSets a real floor, still flexible
Regulatory report due by a dateFinish no later than or deadlineCaps the finish without over-pinning
Contractual go-live, fixed by lawMust start onA genuine immovable calendar event
Board meeting or external auditMust start onThe date truly cannot move

Notice that a hard pin is justified only when the date is fixed by something outside your project, such as a contract, a regulator, or another organisation. If you control the date, you almost never need to pin it.

A worked example: the must-start-on trap

Consider a small infrastructure project. Hardware must be delivered, then servers installed, then the network configured. The installer is booked for the second, so a planner pins the install task with must-start-on to that date. It feels responsible. It is a trap.

The setup. Deliver hardware runs first, then Install servers, linked finish-to-start. The install is pinned with a must-start-on date of March 2.

The slip. The supplier delays delivery. Deliver hardware now finishes on March 5, three days late.

TaskPlannedAfter the slip
Deliver hardwareends Mar 1ends Mar 5
Install servers (pinned)starts Mar 2still starts Mar 2

The hidden conflict. The chart happily shows install starting on March 2, three days before the hardware even arrives. The must-start-on pin has overridden the dependency, and unless you spot the tiny negative-float marker, the plan looks fine. A start-no-earlier-than constraint would have let install slide to March 5 and warned you the installer needs rebooking.

Prefer flexible constraints plus dependencies

The healthiest plans express their timing through the dependency network, not through a scatter of fixed dates. Dependencies say what must come before what. Flexible constraints add the few real-world boundaries that the network cannot infer. Together they produce a schedule that recomputes itself and keeps warning you when reality drifts.

  1. Start every task as ASAP, the default, and resist changing it.
  2. Draw the real dependencies so work orders itself from the links.
  3. Add a start-no-earlier-than only where an external date genuinely blocks an early start.
  4. Use a deadline marker, not a must-finish-on, for targets you want to track but not enforce.
  5. Reserve must-start-on and must-finish-on for dates fixed by contract, law, or another party.
  6. Review your constraint list monthly and remove any pin whose reason has expired.

You can build exactly this kind of self-correcting schedule in the free Gantt maker without installing anything.

Reading constraint warnings in your tool

Every capable scheduler signals when a constraint is fighting a dependency, but the signals are quiet by design so they do not nag. Learning to read them is what separates a plan you trust from a plan you hope about.

Negative float. If a task shows negative float, a constraint is demanding a date the network cannot deliver. In the server example above, the pinned install would carry three days of negative float, the exact size of the buried conflict.

A pin or lock icon. Most tools mark constrained tasks with a small icon. Scan for these before every status update. A cluster of pins is a warning that your plan may have stopped recomputing.

Dates that do not move. The loudest test is behavioural. Push an early task later on purpose and watch what follows. Tasks that refuse to shift are either pinned or waiting on nothing, and both are worth a second look.

A simple constraint discipline

You do not need a policy document to keep constraints healthy. You need one habit: treat a hard pin as a cost, not a convenience. Before you set a must-start-on, ask whether the date is fixed by the outside world or merely by your current plan. If it is your plan, a dependency or a flexible floor will serve you better and keep the schedule honest.

Constraints are the grammar of a schedule. Used sparingly, they let the plan speak clearly about what can move and what cannot. Used heavily, they gag it. The best planners set as few as they can get away with, lean on dependencies for the rest, and keep every remaining pin tied to a reason they can name out loud.

Reach for a hard pin only when the date is fixed by the outside world. Everywhere else, dependencies plus a flexible floor keep your plan honest and self-correcting.

Templates that use this

Frequently asked questions

What is the difference between a deadline and a must-finish-on constraint?

A deadline is advisory. It marks a target date and raises a warning if the task finishes late, but it never forces the schedule to move. A must-finish-on constraint is a hard pin that fixes the finish date and can override dependencies, hiding conflicts. Prefer the deadline in almost every case.

Why does my task start before its predecessor finishes?

Almost always because a hard constraint, usually must-start-on, is overriding the dependency between them. The scheduler is honouring the fixed date instead of the link. Check for a pin icon and a negative float value on that task, then switch it to start-no-earlier-than so it can slide.

Is ASAP always the right default?

For most tasks, yes. As soon as possible lets each task move forward automatically when predecessors change, so the whole plan recomputes itself and stays honest. Use as-late-as-possible only for work you deliberately want to defer, and reach for hard constraints solely when an external date truly cannot move.

How many hard constraints are too many?

There is no exact number, but if more than a handful of tasks carry must-start-on or must-finish-on pins, your plan has likely stopped recomputing. The warning signs are slips that no longer cascade forward, a critical path that jumps around, and float values turning negative in places that should be comfortable.

Can a constraint hide slack that does not really exist?

Yes, and this is the subtle danger. A must-start-on date can make a task appear to have a comfortable window when its predecessors are actually running late, inventing float. It can also destroy real float by holding a task in place. Either way the number you read stops reflecting the true schedule risk.

Written by Uttam Regmi, founder of Synth88 Labs. An auditor by profession and a builder by passion, he creates privacy-first web and mobile apps from Dubai, UAE, gantts.app among them. More about the maker · LinkedIn · Medium · GitHub

Try it on your own plan

gantts.app is a free Gantt chart maker that runs in your browser. No account, no download, no watermark on exports.

Open the free editor