#[non_exhaustive]pub enum StepKind {
Symlink {
src: PathBuf,
dst: PathBuf,
kind: SymlinkKind,
backup: bool,
normalize: bool,
},
Unlink {
dst: PathBuf,
},
Env {
name: String,
value: String,
scope: EnvScope,
},
Mkdir {
path: PathBuf,
mode: Option<String>,
},
Rmdir {
path: PathBuf,
backup: bool,
force: bool,
},
Require {
outcome: PredicateOutcome,
on_fail: RequireOnFail,
},
When {
branch_taken: bool,
nested_steps: Vec<ExecStep>,
},
Exec {
cmdline: String,
cwd: Option<PathBuf>,
on_fail: ExecOnFail,
shell: bool,
},
PackSkipped {
actions_hash: String,
},
}Expand description
Variant-specific detail for a recorded step.
Paths are PathBuf rather than String because after expansion every
path field is a concrete OS path. Command lines remain String
because argv joining for display is lossy by design — the wet-run
executor re-reads the underlying crate::pack::ExecSpec when spawning.
Marked #[non_exhaustive] so the M4 plugin layer can contribute new
step-detail shapes without breaking downstream renderers.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Symlink
Resolved symlink descriptor.
Fields
kind: SymlinkKindLink-kind selector, passed through from the action.
Unlink
Resolved unlink descriptor — synthesized inverse of
StepKind::Symlink for auto-reverse teardown (R-M5-09).
Env
Resolved environment-variable assignment.
Fields
Mkdir
Resolved mkdir descriptor.
Rmdir
Resolved rmdir descriptor.
Fields
Require
Resolved require gate.
Fields
outcome: PredicateOutcomeWhether the predicate tree held.
on_fail: RequireOnFailBehaviour configured for unsatisfied outcomes.
When
Resolved when gate.
Fields
Exec
Resolved exec descriptor.
Fields
on_fail: ExecOnFailError-propagation policy.
PackSkipped
Dedicated pack-level skip detail. Emitted when a pack’s
actions_hash matches a prior lockfile entry and the sync layer
short-circuits the entire pack. Replaces the M4-B proxy of
Require { Satisfied, Skip } with action_name == "pack".