Skip to content

Release Member Versions

Kadyapam edited this page Sep 8, 2026 · 1 revision

Releasing the executor member crate

Since noetl/ai-meta#331. If you change anything under executor/, you must bump executor/Cargo.toml's version yourself. CI now refuses the release if you don't.

Why this is not automatic

.releaserc.json's prepareCmd rewrites ^version in the root Cargo.toml only:

perl -0777 -i -pe 's/^version = ".*?"/version = "${nextRelease.version}"/m' Cargo.toml

executor is a workspace member with its own, semantically independent version (0.x, its own API surface). The pipeline cannot know whether your change is a patch or a minor — and guessing is how a breaking change ships as a patch, which is noetl/ai-meta#330 one repo over. So it refuses and names the file instead of bumping for you.

What went wrong before the guard

A fix(executor): commit merged and released. publish-crate failed — noetl-executor 0.9.0 already existed on crates.io — but the release otherwise looked green, and the published crate silently did not contain the fix. Confirmed by downloading 0.9.0 and grepping: zero references, while main had two.

A green release that publishes nothing new. The only downstream symptom is a consumer that mysteriously cannot see the change. It had happened on 2 of the last 8 release-cli runs.

The check

ci/check-member-versions.sh, wired two ways:

  • verifyConditions in .releaserc.json — before anything is written or tagged, the only point where refusing is free;
  • a PR check in test.yml, so it costs a comment rather than a cut tag.

⚠ The PR check needs fetch-depth: 0 and fetch-tags: true. On the default shallow clone git describe --tags finds nothing and the guard skips — returning clean from no baseline at all.

It prints its denominator and aborts on a stale member list, because a pass over zero members reads exactly like a clean one.

⚠ Version ranges must stay consistent

The root pins noetl-executor = "^0.9". For a 0.x crate ^0.9 excludes 0.10.0 — CI caught exactly that on a first attempt ("candidate versions found which didn't match: 0.10.0"). If you need a minor bump on the member, move the root's range in the same change.

Related

  • Central record: noetl/ai-meta#331.
  • noetl-executor 0.9.1 passes through ToolResult.child_execution_id (noetl/ai-meta#328); a reshaping layer that silently narrows the struct is how a data loss happened one layer down.

Clone this wiki locally