Closed feature request

Dependencies to and from milestones

stephen · ·closed by Drew Owens

Request

Allow dependencies to and from milestones. A milestone should be able to wait on tasks, a task should be able to wait on a milestone, and one milestone should be able to wait on another.

Today

SKILL.md says: "Milestones are not endpoints: a dep is stored as a task id and a milestone in the data file has none." The item editor hides the dependency fields for a milestone, and Dependency mode refuses a milestone at either end.

Why

Milestones are usually gates. For example, "EVT sign-off" waits on the EVT build and test tasks, and production tooling waits on that sign-off. Today the link between the work and the gate exists only in the dates. If the work before a milestone slips, Auto-schedule doesn't move the milestone, and nothing stops a task from being scheduled ahead of the gate it waits on.

Suggested behaviour

  • Milestones get an id and the same deps array tasks have, and a task's deps can name a milestone: {"type": "milestone", "id": "evt-signoff", "name": "EVT sign-off", "date": "2027-03-12", "deps": ["evt-test"]} A milestone without an id still loads as today.
  • Dependency mode accepts a milestone as either the first click or the second. The item editor shows the dependency fields for a milestone.
  • Arrows run into and out of the diamond, or into and out of the milestone's rule in the "lines" style.
  • Auto-schedule treats a milestone's date as both its start and its end:
    • A milestone moves to on or after its latest predecessor's end.
    • A task waiting on a milestone starts on or after the milestone date (or the next working day, whichever you prefer).
    • As today, dates only ever move later, and deliberate gaps are kept.
  • Critical already weighs a milestone at zero, so a milestone in a chain just passes the path through.
  • Links to and from milestones also go through:
    • the cycle check
    • copy/paste remapping
    • the CSV deps column
    • the JSON and HTML exports
    • MS Project and Jira imports, which should keep links that touch a milestone.

1 Reply

Drew Owens ·

Built in 0.78.0 and live on the team plan since 0.80.0 (2026-11-05).

  • Milestones have ids. Existing milestones were given one automatically, made from their names.
  • Dependency mode and the edit dialog accept a milestone at either end: a milestone can wait on tasks or on another milestone, and a task can wait on a milestone.
  • Arrows run into and out of the diamond. In the lines style, they meet the milestone's line at the task's row.
  • Auto-schedule moves a milestone when the work before it slips. A task waiting on a milestone starts on the milestone's date, the same rule as task after task. Dates only ever move later, and deliberate gaps are kept.
  • The critical path runs through milestones.
  • Links to and from milestones go through the cycle check, copy and paste, undo, the CSV deps column, the JSON and HTML exports, and the MS Project and Jira imports. The Jira import now also reads "Blocks" links and brings Milestone issues in as milestones.
Drew Owens closed this ·

Log in to reply.