Skip to content

ci: set up cargo-smart-release release workflow (mirroring hydro) - #107

Merged
MingweiSamuel merged 2 commits into
mainfrom
mingwei/csr
Sep 3, 2026
Merged

ci: set up cargo-smart-release release workflow (mirroring hydro)#107
MingweiSamuel merged 2 commits into
mainfrom
mingwei/csr

Conversation

@MingweiSamuel

@MingweiSamuel MingweiSamuel commented Sep 1, 2026

Copy link
Copy Markdown
Member

Sets up the release tooling for this workspace following the same
cargo-smart-release setup as hydro-project/hydro (per its RELEASING.md).

  • .github/workflows/release.yml: new manually-dispatched Release workflow,
    adapted from hydro's. Supports major/minor/patch/keep/auto bumps, optional
    pre-release ids, and a dry-run mode (execute unchecked). Uses the
    hydro-project-bot GitHub App token to push past branch protection, and the
    pinned hydro-project fork of cargo-smart-release (rev e6f3368337a0).
  • RELEASING.md: releasing guide adapted from hydro's
  • Crate manifests, 16 publishable crates:
    • publish = true, description, documentation (docs.rs), and
      repository = { workspace = true } (new [workspace.package] in the root
      Cargo.toml).
    • version = "^0.1.0" added to all intra-workspace path dependencies
      (including dev-deps between publishable crates), as required for
      publishing.
    • New empty CHANGELOG.md per crate so cargo-smart-release will generate
      and track changelogs.
  • publish = false added to crates that must not be published:
    • rap-test-servers (test-only; left as path-only dev-deps so
      cargo strips them at publish time),
    • infinity-agent-lambda (depend on the
      patched rig-bedrock; publishing would silently drop the patches),
    • infinity-slack-bot (deployment artifact).

Verified: cargo metadata resolves the workspace, cargo package -p rap-protocol packages and verify-builds successfully, and all 14 crate
names are currently unclaimed on crates.io.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 1, 2026

Copy link
Copy Markdown

Deploying infinity with  Cloudflare Pages  Cloudflare Pages

Latest commit: 2217922
Status: ✅  Deploy successful!
Preview URL: https://bf3a042f.infinity-dc7.pages.dev
Branch Preview URL: https://mingwei-csr.infinity-dc7.pages.dev

View logs

MingweiSamuel added a commit that referenced this pull request Sep 1, 2026
Sets up the release tooling for this workspace following the same
cargo-smart-release setup as hydro-project/hydro (per its RELEASING.md).

* `.github/workflows/release.yml`: new manually-dispatched Release workflow,
  adapted from hydro's. Supports major/minor/patch/keep/auto bumps, optional
  pre-release ids, and a dry-run mode (execute unchecked). Uses the
  hydro-project-bot GitHub App token to push past branch protection, and the
  pinned hydro-project fork of cargo-smart-release (rev e6f3368337a0).
* `RELEASING.md`: releasing guide adapted from hydro's, including which crates
  are published and why the others are not, plus an addendum explaining why
  `[patch.crates-io]` on `rig-bedrock` blocks publishing the bedrock provider.
* Crate manifests, 14 publishable crates (rap-protocol, rap-client,
  rap-steering-server, rap-github-event-poller, infinity-protocol,
  infinity-provider-protocol, infinity-agent-core, infinity-mcp-bridge,
  infinity-rap-bridge, infinity-daemon, infinity-agent-cli, sandbox-core,
  sandbox-local, sandbox-remote):
  - `publish = true`, `description`, `documentation` (docs.rs), and
    `repository = { workspace = true }` (new `[workspace.package]` in the root
    `Cargo.toml`).
  - `version = "^0.1.0"` added to all intra-workspace path dependencies
    (including dev-deps between publishable crates), as required for
    publishing.
  - New empty `CHANGELOG.md` per crate so cargo-smart-release will generate
    and track changelogs.
* `publish = false` added to crates that must not be published:
  - `rig-mock`, `rap-test-servers` (test-only; left as path-only dev-deps so
    cargo strips them at publish time),
  - `rig-bedrock-patched` (vendored fork of crates-io `rig-bedrock`),
  - `infinity-provider-bedrock` + `infinity-agent-lambda` (depend on the
    patched rig-bedrock; publishing would silently drop the patches),
  - `infinity-slack-bot` (deployment artifact).

Verified: `cargo metadata` resolves the workspace, `cargo package
-p rap-protocol` packages and verify-builds successfully, and all 14 crate
names are currently unclaimed on crates.io.

Co-authored-by: Infinity 🤖 <infinity@hydro.run>
PR: #107
Sets up the release tooling for this workspace following the same
cargo-smart-release setup as hydro-project/hydro (per its RELEASING.md).

* `.github/workflows/release.yml`: new manually-dispatched Release workflow,
  adapted from hydro's. Supports major/minor/patch/keep/auto bumps, optional
  pre-release ids, and a dry-run mode (execute unchecked). Uses the
  hydro-project-bot GitHub App token to push past branch protection, and the
  pinned hydro-project fork of cargo-smart-release (rev e6f3368337a0).
* `RELEASING.md`: releasing guide adapted from hydro's, including which crates
  are published and why the others are not, plus an addendum explaining why
  `[patch.crates-io]` on `rig-bedrock` blocks publishing the bedrock provider.
* Crate manifests, 14 publishable crates (rap-protocol, rap-client,
  rap-steering-server, rap-github-event-poller, infinity-protocol,
  infinity-provider-protocol, infinity-agent-core, infinity-mcp-bridge,
  infinity-rap-bridge, infinity-daemon, infinity-agent-cli, sandbox-core,
  sandbox-local, sandbox-remote):
  - `publish = true`, `description`, `documentation` (docs.rs), and
    `repository = { workspace = true }` (new `[workspace.package]` in the root
    `Cargo.toml`).
  - `version = "^0.1.0"` added to all intra-workspace path dependencies
    (including dev-deps between publishable crates), as required for
    publishing.
  - New empty `CHANGELOG.md` per crate so cargo-smart-release will generate
    and track changelogs.
* `publish = false` added to crates that must not be published:
  - `rig-mock`, `rap-test-servers` (test-only; left as path-only dev-deps so
    cargo strips them at publish time),
  - `rig-bedrock-patched` (vendored fork of crates-io `rig-bedrock`),
  - `infinity-provider-bedrock` + `infinity-agent-lambda` (depend on the
    patched rig-bedrock; publishing would silently drop the patches),
  - `infinity-slack-bot` (deployment artifact).

Verified: `cargo metadata` resolves the workspace, `cargo package
-p rap-protocol` packages and verify-builds successfully, and all 14 crate
names are currently unclaimed on crates.io.

Co-authored-by: Infinity 🤖 <infinity@hydro.run>
PR: #107

Resolve rebase conflicts for cargo-smart-release setup; publish provider crates

Resolved the 2-sided conflicts between the release-workflow change and main
(which removed the patched rig crates in #110/#113):

- crates/infinity-agent-cli, infinity-agent-core, infinity-daemon,
  infinity-rap-bridge Cargo.toml: kept main's dependency sets (no rig-core /
  rig-mock, new infinity-provider-protocol deps and features) while applying
  the release change's `version = "^0.1.0"` annotations to all path deps on
  published crates.
- Deleted crates/rig-bedrock-patched and crates/rig-mock (deleted on main;
  the release change had only marked them `publish = false`).

With the patched rig crates gone, infinity-provider-bedrock is now
publishable, so the published set grows to 16 crates:

- infinity-provider-bedrock: publish = true plus standard publishing metadata
  (description, documentation, repository), version annotation on its
  infinity-provider-protocol dep, and an empty CHANGELOG.md.
- infinity-provider-rig (new on main, previously untouched by the release
  change): same treatment.
- infinity-mcp-bridge: added the missing version annotation to the
  infinity-provider-protocol dep added on main, and to the "mock"-feature
  dev-deps in infinity-agent-core / infinity-daemon / infinity-agent-cli.

infinity-agent-lambda, infinity-slack-bot, and rap-test-servers remain
`publish = false` (deployment artifacts / test-only support), unchanged from
the parent revision.

Release workflow simplification:

- release.yml: replaced the jq/manual-list branching in "Determine crates to
  publish" with a single manually-maintained list of the 16 published crates
  (every published crate is a primary release target, no secondaries).
- RELEASING.md: updated the "Which crates are published?" exception list
  (dropped the rig entries, kept lambda/slack-bot/test-servers), updated the
  local dry-run command's crate list to match release.yml, and removed the
  now-obsolete `[patch.crates-io]` rig-bedrock addendum and rig-mock
  references.

Verified: no conflict markers remain, `cargo metadata` parses the workspace,
16 packages are publishable and 3 report publish=[] as intended.

Co-authored-by: Infinity 🤖 <infinity@hydro.run>
PR: #107
@MingweiSamuel MingweiSamuel changed the title chore: set up cargo-smart-release release workflow (mirroring hydro) ci: set up cargo-smart-release release workflow (mirroring hydro) Sep 3, 2026
@MingweiSamuel
MingweiSamuel marked this pull request as ready for review September 3, 2026 20:57
@MingweiSamuel
MingweiSamuel requested review from a team and a lite review from Copilot September 3, 2026 20:57

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.

🟡 Changes recommended

The new release workflow will fail because it references the hyphenated pre-id input using invalid GitHub Actions expression syntax (inputs.pre-id instead of inputs['pre-id']).

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Adds a workspace release process modeled after Hydro, wiring up cargo-smart-release and preparing Infinity crates for crates.io publication.

Changes:

  • Introduce a manually-dispatched GitHub Actions release workflow that installs and runs a pinned cargo-smart-release.
  • Add a RELEASING.md guide describing the dry-run and execute release process, plus common failure modes and fixes.
  • Prepare crates for publishing by adding package metadata, publish flags, and versioned intra-workspace dependencies; add per-crate CHANGELOG.md placeholders.
File summaries
File Description
RELEASING.md New release runbook for operating the cargo-smart-release-based workflow.
Cargo.toml Adds [workspace.package] repository metadata for inheritance by member crates.
.github/workflows/release.yml New workflow_dispatch “Release” workflow to run cargo smart-release and gate on log warnings.
crates/rap-protocol/Cargo.toml Marks crate publishable and adds crates.io metadata.
crates/rap-protocol/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/rap-client/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps.
crates/rap-client/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/rap-steering-server/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps.
crates/rap-steering-server/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/rap-github-event-poller/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps.
crates/rap-github-event-poller/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/infinity-protocol/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps.
crates/infinity-protocol/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/infinity-provider-protocol/Cargo.toml Marks crate publishable and adds crates.io metadata.
crates/infinity-provider-protocol/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/infinity-provider-bedrock/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps.
crates/infinity-provider-bedrock/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/infinity-provider-rig/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps.
crates/infinity-provider-rig/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/infinity-agent-core/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps.
crates/infinity-agent-core/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/infinity-mcp-bridge/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps.
crates/infinity-mcp-bridge/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/infinity-rap-bridge/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps.
crates/infinity-rap-bridge/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/infinity-daemon/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps (incl. dev-deps).
crates/infinity-daemon/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/infinity-agent-cli/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps (incl. dev-deps).
crates/infinity-agent-cli/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/sandbox-core/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps.
crates/sandbox-core/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/sandbox-local/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps (incl. dev-deps).
crates/sandbox-local/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/sandbox-remote/Cargo.toml Marks crate publishable and adds crates.io metadata + versioned path deps.
crates/sandbox-remote/CHANGELOG.md Adds empty changelog placeholder for smart-release generation/tracking.
crates/infinity-agent-lambda/Cargo.toml Explicitly marks crate as non-publishable (publish = false).
crates/infinity-slack-bot/Cargo.toml Explicitly marks crate as non-publishable (publish = false).
Review details

Suppressed comments (1)

.github/workflows/release.yml:96

  • inputs.pre-id is not valid for hyphenated input names in GitHub Actions expressions; it will be parsed as subtraction and break argument construction. Use inputs['pre-id'] consistently here.
          --bump ${{ inputs.bump }} --bump-dependencies auto
          ${{ inputs.execute && '--execute' || '' }}
          ${{ inputs.pre-id && format('--pre-id {0}', inputs.pre-id) || '' }}
          ${{ steps.crates.outputs.list }}
  • Files reviewed: 21/37 changed files
  • Comments generated: 3
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/release.yml
Comment thread .github/workflows/release.yml
Comment thread RELEASING.md Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@MingweiSamuel
MingweiSamuel enabled auto-merge (squash) September 3, 2026 21:08
@MingweiSamuel
MingweiSamuel merged commit ffc27d0 into main Sep 3, 2026
8 checks passed
@MingweiSamuel
MingweiSamuel deleted the mingwei/csr branch September 3, 2026 21:14
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.

3 participants