Skip to content

cargo-rail v0.18.0

Choose a tag to compare

@loadingalias loadingalias released this 19 Jul 16:54
v0.18.0
8a42e8d

0.18.0 - 2026-07-19

  • Capture complete, stable source state for deterministic planning from Git worktrees or declared Cargo filesystem roots; reject concurrent Git, byte, directory, or metadata drift; keep historical ranges object-only; support nested and no-Git Cargo workspaces; and exclude resolved Cargo and cargo-rail generated state.

  • Preserve every Cargo package as an exact PackageId-keyed graph node and build dependency edges from Cargo's resolved graph, retaining distinct versions, renamed dependencies, dependency kinds, and target conditions while keeping inactive declarations out of resolved topology and confining package-name lookup to ambiguity-aware workspace selection.

  • Add lazy exact Cargo resolution views keyed by package, feature, target, toolchain, and sanitized Cargo configuration; replace filename heuristics with deterministic PackageId ownership; and introduce opt-in immutable workspace snapshots over exact source, manifests, lockfile, configuration, toolchain, and target inputs without slowing native/default commands.

  • Replace hard-coded run surfaces with a bounded, snapshot-bound action graph. Built-in and repository actions now share
    one shell-free expansion and stable topological order across local execution, JSON/GitHub CI plans, and version-2
    decision receipts. Repository generators declare exclusive outputs plus separate check/regenerate commands; paths,
    dependencies, tokens, environment capabilities, cycles, and portable ownership collisions fail closed before
    execution. Ownership validation remains fast at the configured action/path limits, and command startup retains safe
    stack headroom on Windows as the action CLI grows.

  • Make rail.toml sparse, add config explain and semantic migrations, and replace invalid option matrices with typed policies.

BREAKING CHANGES

  • run: [breaking] replace surfaces with a bounded action graph (71a5972)
  • config: [breaking] make repository policy sparse (577f55b)

Features

  • workspace: bind commands to canonical snapshots (7b70568)
  • workspace: establish exact resolution snapshots (fec7444)
  • workspace: stabilize source and package identity (5399da4)
  • planner: capture complete worktree source state (9de889f)

Bug Fixes

  • cli: prevent Windows startup stack overflow (2726bd9)
  • workspace: report directory drift deterministically (3c99742)
  • workspace: normalize snapshot paths on Windows (dfe18d4)