Float & Critical

Driving Relationships vs Longest Path vs "Critical"

Driving relationship ≠ Longest Path ≠ TF critical

P6 activity table with Total Float and Free Float columns on the same rows. Values differ (6 vs 0, 0 vs 66).
Total Float and Free Float are separate columns. Zero Total Float is the TF-critical test, not Longest Path.

A red bar is not one idea. P6 has three different tests that people casually call "critical," and they do not mark the same rows.

What the field is

A driving relationship (Oracle's Relationship.Driving flag) marks a specific relationship as the one that determines the early dates of its successor. An activity can carry several predecessors at once, but only some of those relationships actually drive its dates — and being driven is not the same thing as being on the project's critical path.

Longest Path is a separate schedule option: "Define critical activities as Longest Path." Oracle describes it as "identifying the activities that have an early finish equal to the latest calculated early finish for the project and tracing all driving relationships for those activities back to the project start date." It is used especially on multicalendar jobs, where a simple total-float threshold is a poor proxy for criticality once calendars start to differ. In the XER this is TASK.driving_path_flag, which Oracle labels "Longest Path."

Critical by total float is the other schedule option: Total Float less than or equal to a chosen threshold in hours. Open-ended chains and certain constraints can appear critical under this definition without actually driving the project finish.

What it is not

Longest Path is not "TF ≤ 0." A driving predecessor is not Longest Path. Multiple float paths (Advanced tab) is a third tool: it numbers paths after the schedule has already run, with Path 1 as the most critical. It does not change how "critical" itself is defined. Under the Free Float numbering method, Oracle states that "the most critical path will be identical to … Longest Path." Under the Total Float method, the walk follows the most critical relationship's total float instead. XER: TASK.float_path and TASK.float_path_order.

Microsoft Project's Critical flag is typically total slack less than or equal to zero. There is no Longest Path option in Project, and no equivalent of driving_path_flag. What Project calls a "driving predecessor" is closer to Oracle's Driving flag than to Oracle's Longest Path.

Must not

  • Paint every bar with TF ≤ 0 as if it were on the Longest Path.
  • Treat a driving relationship as Longest Path.
  • Map P6 Float Path 1 onto Microsoft Project's Critical flag.
  • Treat a driving-predecessor highlight in Project as driving_path_flag.
  • Ignore open-ended chains when reading a TF-critical list.

Sources

Back to top