Skip to content

fix(release): separate release PRs and bootstrap fleet-agent at 0.1.0#382

Merged
PeronGH merged 1 commit into
masterfrom
fix/fleet-release-decoupling
Jul 14, 2026
Merged

fix(release): separate release PRs and bootstrap fleet-agent at 0.1.0#382
PeronGH merged 1 commit into
masterfrom
fix/fleet-release-decoupling

Conversation

@PeronGH

@PeronGH PeronGH commented Jul 14, 2026

Copy link
Copy Markdown
Member

Follow-up to #381. Two issues surfaced once release-please processed the split.

Issue 1 — combined release PR

release-please's default is a single manifest-wide release PR, so PR #379 currently bundles both:

  • main arcbox: 0.4.17 → 0.4.18
  • fleet-agent: 0.0.0 → 1.0.0

They must be merged together, which defeats the independent release cadence that #381 set up. separate-pull-requests: true at the top level splits this into one PR per component.

Issue 2 — fleet-agent bootstraps at 1.0.0 instead of 0.1.0

With the fleet manifest seeded at 0.0.0, release-please treats the component as unreleased and hard-codes the first tag to 1.0.0, ignoring bump-minor-pre-major. Neither 0.0.1 nor 0.1.0 as a seed produces 0.1.0 as the first release under the current bump flags.

A one-shot "release-as": "0.1.0" on the fleet package forces the bootstrap tag to be exactly fleet-agent-v0.1.0.

After merge

  • PR chore(master): release 0.4.18 #379 will be superseded — release-please will close it and open two:
    • chore(main): release 0.4.18
    • chore(fleet-agent): release 0.1.0
  • Merging the fleet PR fires .github/workflows/release-fleet-agent.yml with tag fleet-agent-v0.1.0.
  • Once fleet-agent-v0.1.0 is cut, a follow-up PR should remove the release-as line so subsequent fleet releases advance via the normal bump rules (0.1.0 + fix → 0.1.1, 0.1.0 + feat → 0.1.1 under bump-patch-for-minor-pre-major).

Two issues in the fleet-agent release train from #381:

1. release-please defaulted to one combined release PR covering both
   the main arcbox and fleet-agent components, so their versions had
   to be bumped and merged together — defeating the independent
   release cadence.
2. With the fleet manifest seeded at 0.0.0, release-please treats
   the component as unreleased and hard-codes the first tag to
   1.0.0, ignoring bump-minor-pre-major.

Enable separate-pull-requests so release-please opens one PR per
component, and one-shot release-as: 0.1.0 on the fleet package so
its bootstrap tag is fleet-agent-v0.1.0. Once that first release
cuts, the release-as override should be removed so subsequent fleet
releases advance via normal bump rules (0.1.0 + fix -> 0.1.1,
0.1.0 + feat -> 0.1.1 under bump-patch-for-minor-pre-major).
Copilot AI review requested due to automatic review settings July 14, 2026 09:16

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes — a config-only fix to release-please-config.json addressing two release-please behaviors that surfaced after the fleet-agent / main-arcbox release split in #381.

  • Split release PRsseparate-pull-requests: true at the top level replaces release-please's default combined manifest PR with one PR per component, restoring the independent release cadence #381 set up.
  • Bootstrap fleet-agent at 0.1.0release-as: "0.1.0" on the fleet package forces the first tag to exactly fleet-agent-v0.1.0, overriding release-please's default of hard-coding an unreleased component's first release to 1.0.0.

Both keys are valid release-please manifest options, and the resulting fleet-agent-v0.1.0 tag matches the fleet-agent-v* push trigger in .github/workflows/release-fleet-agent.yml. The PR body accurately describes the post-merge behavior.

ℹ️ release-as is sticky and depends on a follow-up removal

release-as: "0.1.0" forces that version on every subsequent release-please run, not just the bootstrap — release-please will keep proposing 0.1.0 until the line is removed. The PR body already documents the required follow-up PR to delete it once fleet-agent-v0.1.0 is cut, so this is purely a reminder that the cleanup is load-bearing: if it's forgotten, fleet-agent releases will stall at 0.1.0 rather than advancing via the normal bump rules. No change needed here.

Pullfrog  | View workflow run | Using Claude Opus𝕏

@greptile-apps

greptile-apps Bot commented Jul 14, 2026

Copy link
Copy Markdown

Greptile Summary

This PR adjusts release-please behavior for the split fleet release. The main changes are:

  • Separate release PRs per manifest component.
  • Force the first fleet-agent release to 0.1.0.
  • Keep fleet-agent tags component-scoped through the existing package config.

Confidence Score: 5/5

This looks safe to merge.

No blocking issues found in the changed code.

T-Rex T-Rex Logs

What T-Rex did

  • The JSON validation step ran and confirmed both release JSON files parsed successfully with exit code 0.
  • The release-please check confirmed that version 17.10.3 is available and that manifest command/config options are accepted.
  • The dry-run attempt was documented and showed a 404 from the GitHub API for dummy/dummy, indicating a blocker unrelated to config validation.
  • The final assertions log shows every PR invariant passing with exit code 0.

View all artifacts

T-Rex Ran code and verified through T-Rex

Important Files Changed

Filename Overview
release-please-config.json Adds per-component release PR generation and a one-shot fleet-agent release override.

Reviews (1): Last reviewed commit: "fix(release): separate release PRs and b..." | Re-trigger Greptile

@PeronGH
PeronGH merged commit 9ba2ad4 into master Jul 14, 2026
7 checks passed
@PeronGH
PeronGH deleted the fix/fleet-release-decoupling branch July 14, 2026 09:22
PeronGH added a commit that referenced this pull request Jul 14, 2026
The Cargo.lock refresh step in release-please.yml was gated on
steps.release.outputs.pr (singular), which under separate-pull-requests
only ever exposes one of the release PRs. On master's post-#382 run
the step successfully bumped Cargo.lock on the main-only PR #379 but
never touched fleet-agent PR #383, which is why #383 shipped with a
stale lockfile and would fail `cargo build --release --locked`.

Switch to iterating steps.release.outputs.prs (array of every currently
open release PR) and refresh Cargo.lock on each independently. Each
iteration is scoped to its own temp workdir and git config is set once
at the outer shell.

This replaces the earlier attempt on this branch to enable the
cargo-workspace release-please plugin. That plugin was suspected of
misbehaving against this repo's virtual-workspace layout (root
[workspace]-only manifest, members using version.workspace = true,
inter-crate versions pinned via # x-release-please-version generic
extra-files). The workflow step is a proven mechanism — the log from
the last release-please run showed it correctly refreshing 51
packages on the main release PR — it just wasn't iterating.
PeronGH added a commit that referenced this pull request Jul 14, 2026
The Cargo.lock refresh step in release-please.yml was gated on
steps.release.outputs.pr (singular), which under separate-pull-requests
only ever exposes one of the release PRs. On master's post-#382 run
the step successfully bumped Cargo.lock on the main-only PR #379 but
never touched fleet-agent PR #383, which is why #383 shipped with a
stale lockfile and would fail `cargo build --release --locked`.

Switch to iterating steps.release.outputs.prs (array of every currently
open release PR) and refresh Cargo.lock on each independently. Each
iteration is scoped to its own temp workdir and git config is set once
at the outer shell.

This replaces the earlier attempt on this branch to enable the
cargo-workspace release-please plugin. That plugin was suspected of
misbehaving against this repo's virtual-workspace layout (root
[workspace]-only manifest, members using version.workspace = true,
inter-crate versions pinned via # x-release-please-version generic
extra-files). The workflow step is a proven mechanism — the log from
the last release-please run showed it correctly refreshing 51
packages on the main release PR — it just wasn't iterating.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants