What is a Hard Dependency (Mandatory Dependency)?
A hard (mandatory) dependency is a sequence you cannot change because physics, law, or the nature of the work forbids it — concrete must cure before it carries load; code must exist before it can be tested. PMBOK calls it "hard logic."
Its opposite is the soft (discretionary) dependency — a preferred order, not a required one. The distinction is what makes fast tracking possible: you may only overlap soft dependencies. Try to compress a hard one and the work simply fails.
Worked example
On a tower project, "pour level 5 slab" → "erect level 6 columns" is hard: the slab physically carries the columns. But "finish all electrical before starting any painting" turns out to be soft — a tidy preference. When the deadline moved, painting overlapped electrical floor-by-floor (fast tracking the soft link), while nobody tried to negotiate with the concrete.