Turned out to be a case of flat-out DB corruption. I could insert a new task at line 1 of sub-project #2 and it would have zero slack and be critical. If I created the same task at line 25, it wouldn’t. If I moved the non-critical task at line 25 up to line 1 it would become critical. I observed other situations in which a task had a simple dependency yet its start date didn’t reflect that dependency at all (it remained set at the project start date). I just decided sub-projects were not worth the hassle and broke the links.