Milestones & Desired Dates

Milestones are the punctuation marks of your project plan. They don't represent work — they represent decisions made, deliverables handed off, and gates passed. A plan without milestones is hard to communicate and hard to control.

What makes a good milestone?

A milestone should have a clear, binary outcome: it either happened or it didn't. Avoid vague milestones like "Development complete" — there is always one more bug. Instead use: "Build deployed to staging and smoke-tested."

Strong milestone examples:

  • Project Kickoff (agreement to begin)
  • Requirements Sign-off (written approval from stakeholders)
  • Design Approved (final mockups signed off)
  • Code Freeze (no new features, only bug fixes)
  • Beta Released (shipped to test users)
  • Go Live (publicly available)
  • Post-Launch Review Held

Milestones in LoopGantt

A milestone is a task with duration = 0. It appears as a diamond symbol on the Gantt timeline. To create one:

  1. Add a task as normal.
  2. Set the duration to 0, or toggle the Milestone switch in the task editor.
  3. The task bar turns into a diamond (◆) on the Gantt.

Milestones can be assigned dependencies just like regular tasks. A common pattern: link the last task of a phase to a milestone that gates the next phase. This creates a clear "phase gate" in your plan.

Desired Date — schedule a task for a specific date

A Desired Date tells the scheduler when you want a task to start. The scheduler uses this date as long as it doesn't conflict with dependencies.

How it works:

  • No dependencies: The task starts on the desired date.
  • With dependencies, desired date is later: The task is delayed to the desired date — useful for intentionally pushing a task later within its available float (slack time).
  • With dependencies, desired date is earlier: The desired date is ignored. A task cannot start before its predecessors allow.

Use desired dates for:

  • Tasks tied to a fixed external date (conference, launch, regulatory deadline)
  • Delaying a task to a specific day even though it could start earlier
  • Milestones with a known target (e.g., "Go Live on July 31")
Tip: Use milestones at the end of each phase as "gates." Link the first task of the next phase to that milestone (FS dependency). This makes it impossible to start Phase 2 until Phase 1 is formally closed — exactly how phase-gated methodologies work.
Was this article helpful?