1. MSP applies the “Critical” flag to tasks based solely on Total Slack, where Total Slack is the lesser of Start Slack (Late Start minus Early Start) or Finish Slack (Late Finish minus Early Finish). Early and Late dates are computed using applicable calendars, task durations, leveling delays, dependencies, and constraints (including Deadlines) – all starting from the specified Project Start date or Project Finish date.
2. The Total Slack “Critical” threshold – below which the “Critical” flag will be applied – is found at the bottom of the Advanced Options tab. The default threshold value is zero, and it may only be increased from there. Consequently, tasks with (TS ≤ 0) will always be “Critical.”
3. As Sai has implied, you can force a task to be “Critical” by manipulating any of these factors. For example, an arbitrary (as opposed to contractually-required) Deadline may be applied on any task to force its Total Slack (and that of its driving predecessors) to zero or less, thereby making them “Critical.” Alternately, a constrained dummy milestone could be used to extend the overall project duration, creating positive Total Slack (and removing the “Critical” flag) for all other tasks. Such gaming of the inputs to achieve a particular desired outcome is at best self-deceptive and counterproductive. At worst such behavior would be considered unprofessional, unethical, incompetent, fraudulent, and possibly criminal.
4. If the marked “Critical” tasks appear random or otherwise unexplainable to you, then I’d suggest applying the “Schedule” table to a Gantt Chart view. This table displays the Task Mode, Early/Late Dates and Slack. I would also add columns for “Constraint Type,” “Constraint Date,” and “Deadline.” The date format (from the General Options) should be one that displays both the date and the time of day. With some study, the basis of every task date, Slack, and “Critical” flag should become apparent. (A task’s Early dates are derived from the latest Early dates of its predecessors, subject to applicable calendars and to a SNET or FNET constraint. Its Late dates are derived from the earliest Late dates of its successors, subject to applicable calendars and to a Deadline or SNLT/FNLT constraint.) Surprises may be the results of unintended constraints, deadlines, manual tasks, or out-of-sequence progress.
5. Finally, it is a common mistake to describe the collection of tasks that MSP has marked “Critical” as the “Critical Path.” This is correct only for simple project schedules with sound logic networks and with no constraints, no deadlines, no manually-scheduled tasks, only a single calendar for all tasks and resources, no resource leveling, and no progress recorded. By most current definitions, the “Critical Path” is intended to describe the “driving logic path to project completion.” In MSP 2013 and later versions, this logic path can be identified by selecting a specific project completion task or milestone and applying the Task Paths (“Driving Predecessors”) bar style tool. Unfortunately, that tool is generally reliable only when tasks are limited to FS predecessors.