use cratecanonicalize_or_self;
use crate;
use ;
/// Check if a task needs a permit from the semaphore
/// Only shell/script tasks execute external commands and need a concurrency slot.
/// Orchestrator-only tasks (pure groups of sub-tasks) do not.
pub
/// Whether this task starts other tasks from its `run` entries.
///
/// Such a task produces no output of its own — `task_needs_permit` is false, and
/// the `Finished in` line is gated on the same condition — but keep-order still
/// needs a slot for it, to anchor the blocks of the tasks it injects at the
/// position the task itself was declared in.
pub
/// Canonicalize a path for use as cache key
/// Falls back to original path if canonicalization fails
pub