fix(release): publish stable artifacts from github releases#462
Conversation
Enable Slack multimodal image ingestion so file shares can be fetched, staged, and processed like other supported channels. Update Slack setup guidance to require the scopes needed for metadata and file downloads.
Deploying corvus with
|
| Latest commit: |
16adb76
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://a30e1f48.corvus-42x.pages.dev |
| Branch Preview URL: | https://ci-release-please.corvus-42x.pages.dev |
|
Important Review skippedAuto reviews are limited based on label configuration. 🚫 Review skipped — only excluded labels are configured. (2)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThis PR restructures the stable release automation to shift canonical ownership from tag-push triggers to release-please-managed GitHub Releases, redefines Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 2✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
✅ Contributor ReportUser: @yacosta738
Contributor Report evaluates based on public GitHub activity. Analysis period: 2025-04-08 to 2026-04-08 |
Make release-please the canonical owner of the stable release PR, tag, GitHub Release, and release notes. Trigger stable publishing from release.published so _publish only validates context and attaches artifacts to the existing release.
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
clients/web/apps/docs/src/content/docs/es/clients/agent-runtime/ci-map.md (1)
37-61:⚠️ Potential issue | 🟡 MinorActualizar referencia obsoleta de triage (
release.ymlpor tags).Las líneas nuevas describen
release.published, pero en la guía rápida (Line 74) todavía se indica fallo por tags en.github/workflows/release.yml. Eso ya no coincide con el flujo actual.🛠 Propuesta de corrección
-- `.github/workflows/release.yml` (`Release`) +- `.github/workflows/publish-release.yml` (`Release`) ... -3. Failures de Release en tags: inspeccionar `.github/workflows/release.yml`. +3. Failures de Release después de `release.published`: inspeccionar `.github/workflows/publish-release.yml`.As per coding guidelines,
**/*.{md,mdx}: Verify technical accuracy and that docs stay aligned with code changes.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@clients/web/apps/docs/src/content/docs/es/clients/agent-runtime/ci-map.md` around lines 37 - 61, Actualizar la referencia obsoleta en el texto que aún dice que `.github/workflows/release.yml` falla por tags: reemplaza esa mención en la guía rápida por el evento actual `release.published` (y explica brevemente que los jobs de publicación usan `publish-release.yml` y `_publish.yml` que se disparan desde `release.published`), y ajusta cualquier mención de "tags" para indicar que `release-please` crea el tag canónico `vX.Y.Z` y que la publicación de assets ocurre después con los workflows mencionados (`release.published`, `publish-release.yml`, `_publish.yml`).clients/web/apps/docs/src/content/docs/clients/agent-runtime/ci-map.md (1)
37-60:⚠️ Potential issue | 🟡 MinorFix stale triage reference to tag-based
release.yml.Line 37/Line 55 document the new
release.publishedflow, but Line 73 still points to tag failures in.github/workflows/release.yml. This is now inaccurate and will misroute release triage.🛠 Proposed doc fix
-- `.github/workflows/release.yml` (`Release`) +- `.github/workflows/publish-release.yml` (`Release`) ... -3. Release failures on tags: inspect `.github/workflows/release.yml`. +3. Release failures after `release.published`: inspect `.github/workflows/publish-release.yml`.As per coding guidelines,
**/*.{md,mdx}: Verify technical accuracy and that docs stay aligned with code changes.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@clients/web/apps/docs/src/content/docs/clients/agent-runtime/ci-map.md` around lines 37 - 60, The doc still references tag-based `.github/workflows/release.yml` for release triage; update the "Trigger Map" and any lines mentioning tag failures to reflect the new release.published flow and the publish-release.yml/_publish.yml handlers. Specifically, replace mentions of tag push / tag failures against `release.yml` with the `release.published` event and note that `publish-release.yml` and `_publish.yml` attach artifacts to the canonical GitHub Release created by `release-please`; ensure `CI`, `Docker`, and `Release` bullets consistently reference `release.published` where appropriate..github/workflows/_publish.yml (1)
152-159: 🧹 Nitpick | 🔵 TrivialRedundant semver validation.
The
TAG_VERSIONformat is already validated in therelease-contextstep (line 113-116). This duplicate check at lines 156-159 is harmless but could be removed for clarity since it now reads from an already-validated output.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/_publish.yml around lines 152 - 159, Remove the redundant semver check that validates TAG_VERSION against the regex (the if [[ ! "$TAG_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] ... exit 1 block) since the same validation is already performed in the release-context step; specifically delete that conditional block which references TAG_VERSION and steps.release-context.outputs.release_tag and leave the surrounding run: prelude (set -euo pipefail) and subsequent commands intact so the workflow continues to use the already-validated release-context output.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@clients/agent-runtime/src/channels/slack.rs`:
- Around line 214-219: The warning log slices file_id using
&file_id[..file_id.len().min(8)] which can panic on multibyte UTF-8 boundaries;
update the closure that maps the error (the map_err block referencing file_id
and self.sanitize_error) to safely truncate file_id at a character boundary—use
file_id.char_indices() (or a helper that finds the byte index of the nth char)
to compute a safe end index (min 8 chars) and then slice with that byte index
when constructing the log message so it cannot panic on non-UTF-8 boundaries.
---
Outside diff comments:
In @.github/workflows/_publish.yml:
- Around line 152-159: Remove the redundant semver check that validates
TAG_VERSION against the regex (the if [[ ! "$TAG_VERSION" =~
^v[0-9]+\.[0-9]+\.[0-9]+$ ]] ... exit 1 block) since the same validation is
already performed in the release-context step; specifically delete that
conditional block which references TAG_VERSION and
steps.release-context.outputs.release_tag and leave the surrounding run: prelude
(set -euo pipefail) and subsequent commands intact so the workflow continues to
use the already-validated release-context output.
In `@clients/web/apps/docs/src/content/docs/clients/agent-runtime/ci-map.md`:
- Around line 37-60: The doc still references tag-based
`.github/workflows/release.yml` for release triage; update the "Trigger Map" and
any lines mentioning tag failures to reflect the new release.published flow and
the publish-release.yml/_publish.yml handlers. Specifically, replace mentions of
tag push / tag failures against `release.yml` with the `release.published` event
and note that `publish-release.yml` and `_publish.yml` attach artifacts to the
canonical GitHub Release created by `release-please`; ensure `CI`, `Docker`, and
`Release` bullets consistently reference `release.published` where appropriate.
In `@clients/web/apps/docs/src/content/docs/es/clients/agent-runtime/ci-map.md`:
- Around line 37-61: Actualizar la referencia obsoleta en el texto que aún dice
que `.github/workflows/release.yml` falla por tags: reemplaza esa mención en la
guía rápida por el evento actual `release.published` (y explica brevemente que
los jobs de publicación usan `publish-release.yml` y `_publish.yml` que se
disparan desde `release.published`), y ajusta cualquier mención de "tags" para
indicar que `release-please` crea el tag canónico `vX.Y.Z` y que la publicación
de assets ocurre después con los workflows mencionados (`release.published`,
`publish-release.yml`, `_publish.yml`).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: fe4a7be6-c951-4c04-bf84-2cf3a5f877ec
📒 Files selected for processing (14)
.github/config/changelog.json.github/workflows/README.md.github/workflows/_publish.yml.github/workflows/publish-release.yml.github/workflows/publish-snapshot.yml.github/workflows/release-please.ymlCHANGELOG.mdclients/agent-runtime/src/channels/slack.rsclients/web/apps/docs/src/content/docs/clients/agent-runtime/ci-map.mdclients/web/apps/docs/src/content/docs/es/clients/agent-runtime/ci-map.mdclients/web/apps/docs/src/content/docs/es/guides/release.mdclients/web/apps/docs/src/content/docs/guides/release.mdrelease-please-config.jsonscripts/release-contract.test.mjs
💤 Files with no reviewable changes (3)
- .github/config/changelog.json
- .github/workflows/publish-snapshot.yml
- release-please-config.json
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: sonar
- GitHub Check: pr-checks
- GitHub Check: submit-gradle
- GitHub Check: Cloudflare Pages
🧰 Additional context used
📓 Path-based instructions (6)
**/*.{md,mdx}
⚙️ CodeRabbit configuration file
**/*.{md,mdx}: Verify technical accuracy and that docs stay aligned with code changes.
For user-facing docs, check EN/ES parity or explicitly note pending translation gaps.
Files:
CHANGELOG.mdclients/web/apps/docs/src/content/docs/clients/agent-runtime/ci-map.mdclients/web/apps/docs/src/content/docs/guides/release.mdclients/web/apps/docs/src/content/docs/es/clients/agent-runtime/ci-map.mdclients/web/apps/docs/src/content/docs/es/guides/release.md
**/*
⚙️ CodeRabbit configuration file
**/*: Security first, performance second.
Validate input boundaries, auth/authz implications, and secret management.
Look for behavioral regressions, missing tests, and contract breaks across modules.
Files:
CHANGELOG.mdclients/web/apps/docs/src/content/docs/clients/agent-runtime/ci-map.mdclients/agent-runtime/src/channels/slack.rsclients/web/apps/docs/src/content/docs/guides/release.mdclients/web/apps/docs/src/content/docs/es/clients/agent-runtime/ci-map.mdscripts/release-contract.test.mjsclients/web/apps/docs/src/content/docs/es/guides/release.md
clients/agent-runtime/src/channels/**/*.rs
📄 CodeRabbit inference engine (clients/agent-runtime/AGENTS.md)
Implement
Channeltrait insrc/channels/with consistentsend,listen, andhealth_checksemantics and cover auth/allowlist/health behavior with tests
Files:
clients/agent-runtime/src/channels/slack.rs
clients/agent-runtime/src/**/*.rs
📄 CodeRabbit inference engine (clients/agent-runtime/AGENTS.md)
clients/agent-runtime/src/**/*.rs: Never log secrets, tokens, raw credentials, or sensitive payloads in any logging statements
Avoid unnecessary allocations, clones, and blocking operations to maintain performance and efficiency
Files:
clients/agent-runtime/src/channels/slack.rs
clients/agent-runtime/**/*.rs
📄 CodeRabbit inference engine (clients/agent-runtime/AGENTS.md)
Run
cargo fmt --all -- --check,cargo clippy --all-targets -- -D warnings, andcargo testfor code validation, or document which checks were skipped and why
Files:
clients/agent-runtime/src/channels/slack.rs
**/*.rs
⚙️ CodeRabbit configuration file
**/*.rs: Focus on Rust idioms, memory safety, and ownership/borrowing correctness.
Flag unnecessary clones, unchecked panics in production paths, and weak error context.
Prioritize unsafe blocks, FFI boundaries, concurrency races, and secret handling.
Files:
clients/agent-runtime/src/channels/slack.rs
🧠 Learnings (4)
📚 Learning: 2026-02-17T12:31:17.076Z
Learnt from: CR
Repo: dallay/corvus PR: 0
File: clients/agent-runtime/AGENTS.md:0-0
Timestamp: 2026-02-17T12:31:17.076Z
Learning: Applies to clients/agent-runtime/.github/**/*.{yml,yaml} : For workflow/template-only changes, ensure YAML/template syntax validity
Applied to files:
clients/web/apps/docs/src/content/docs/clients/agent-runtime/ci-map.md
📚 Learning: 2026-02-17T12:31:17.076Z
Learnt from: CR
Repo: dallay/corvus PR: 0
File: clients/agent-runtime/AGENTS.md:0-0
Timestamp: 2026-02-17T12:31:17.076Z
Learning: Applies to clients/agent-runtime/src/main.rs : Preserve CLI contract unless change is intentional and documented; prefer explicit errors over silent fallback for unsupported critical paths
Applied to files:
clients/agent-runtime/src/channels/slack.rs
📚 Learning: 2026-02-17T12:31:17.076Z
Learnt from: CR
Repo: dallay/corvus PR: 0
File: clients/agent-runtime/AGENTS.md:0-0
Timestamp: 2026-02-17T12:31:17.076Z
Learning: Applies to clients/agent-runtime/**/*.rs : Run `cargo fmt --all -- --check`, `cargo clippy --all-targets -- -D warnings`, and `cargo test` for code validation, or document which checks were skipped and why
Applied to files:
scripts/release-contract.test.mjs
📚 Learning: 2026-02-17T12:31:17.076Z
Learnt from: CR
Repo: dallay/corvus PR: 0
File: clients/agent-runtime/AGENTS.md:0-0
Timestamp: 2026-02-17T12:31:17.076Z
Learning: Applies to clients/agent-runtime/**/Cargo.toml : Preserve release-size profile assumptions in `Cargo.toml` and avoid adding heavy dependencies unless clearly justified
Applied to files:
scripts/release-contract.test.mjs
🪛 LanguageTool
CHANGELOG.md
[uncategorized] ~7-~7: The official name of this software platform is spelled with a capital “H”.
Context: ...on starts from release.published, and .github/workflows/_publish.yml only attaches a...
(GITHUB)
clients/web/apps/docs/src/content/docs/guides/release.md
[style] ~138-~138: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...h the expected permissions and token. - Confirm the publish-release.yml trigger saw `...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~144-~144: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...xt passed from publish-release.yml. - Review credential warnings for Maven, Cargo, n...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
.github/workflows/README.md
[style] ~233-~233: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... not create the canonical stable tag. - Snapshot publishing does not own GitHub Release ...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~234-~234: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...does not own GitHub Release creation. - Snapshot publishing does not own stable release ...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~235-~235: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng does not own stable release notes. - Snapshot publishing does not participate in the ...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
🔇 Additional comments (18)
clients/agent-runtime/src/channels/slack.rs (2)
66-111: Good fail-fast auth handling and listener error propagationReturning
anyhow::Result<String>fromget_bot_user_id()and propagating it at Line 412 is the right contract: startup failures are explicit and supervised restart handles retries cleanly.Also applies to: 412-412
922-963: Tests now correctly pin the newResultbehaviorNice coverage update for
ok=falseand missinguser_idcases; these tests lock in the intended non-silent failure semantics..github/workflows/release-please.yml (1)
62-63: Release governance summary update looks correct.The added bullets match the workflow’s intended ownership/handoff model and do not alter runtime behavior.
CHANGELOG.md (1)
6-7: Changelog release-governance note is aligned.The updated bullets accurately reflect the new stable release handoff and ownership model.
As per coding guidelines,
**/*.{md,mdx}: Verify technical accuracy and that docs stay aligned with code changes..github/workflows/publish-release.yml (1)
18-29: Stable publish handoff gating is solid.The release-event guards plus explicit
release_tag/release_idhandoff reduce ambiguity and align with canonical release ownership.clients/web/apps/docs/src/content/docs/guides/release.md (1)
68-72: Runbook contract updates are coherent and operationally clear.The release handoff, diagnostics, and recovery guidance now consistently match the
release-please→release.published→ asset attachment model.As per coding guidelines,
**/*.{md,mdx}: Verify technical accuracy and that docs stay aligned with code changes. For user-facing docs, check EN/ES parity or explicitly note pending translation gaps.Also applies to: 105-112, 136-157
.github/workflows/README.md (1)
185-204: Workflow README reflects the new stable-release contract accurately.The updated trigger semantics, ownership boundaries, and
_publish.ymlinput contract are consistent and actionable.As per coding guidelines,
**/*.{md,mdx}: Verify technical accuracy and that docs stay aligned with code changes.Also applies to: 245-262, 283-315
clients/web/apps/docs/src/content/docs/es/guides/release.md (1)
68-72: Buen alineamiento del runbook ES con el contrato de release estable.La guía en español conserva correctamente el mismo flujo y límites de responsabilidad que la versión EN.
As per coding guidelines,
**/*.{md,mdx}: Verify technical accuracy and that docs stay aligned with code changes. For user-facing docs, check EN/ES parity or explicitly note pending translation gaps.Also applies to: 105-112, 136-157
scripts/release-contract.test.mjs (5)
14-18: LGTM - Clean helper function.Simple and reusable. Correctly propagates the label for actionable error messages.
20-27: LGTM - Centralized contract doc list.Good consolidation of paths used by multiple assertions. Keeps test maintenance simpler.
40-42: LGTM - Validates release-please retains full ownership.These assertions enforce that
skip-github-releaseandskip-changelogare not set, ensuring release-please creates both the GitHub Release and changelog entries. Aligns with the context snippet fromrelease-please-config.jsonwhere these keys are absent.
84-145: LGTM - Comprehensive governance contract tests.The assertions properly validate:
release-please.ymlcreates the canonical GitHub Releasepublish-release.ymltriggers onrelease.published(not tag push) and passesrelease_tag/release_id_publish.ymlonly uploads assets (nosoftprops/action-gh-release, no changelog builder)- Snapshot workflow stays outside stable release ownership
Negative assertions (lines 114-115, 125, 141-144) prevent regression to tag-push or changelog-generation behavior.
165-237: LGTM - Validates documentation aligns with workflow contract.Tests ensure EN/ES docs, workflow README, and CHANGELOG all describe the
release.publishedhandoff model and explicitly reject_publish.ymlownership of canonical release notes. The negativetag pushassertions (lines 224-235) prevent documentation drift..github/workflows/_publish.yml (5)
10-15: LGTM - Optional inputs for stable release context.These are correctly optional since the "Resolve stable release context" step (line 99) only runs when
inputs.releaseis true. Callers pass these values correctly per context snippets frompublish-release.ymlandpublish-snapshot.yml.
98-146: Solid validation for stable release context.Good defense-in-depth:
- Requires both
release_tagandrelease_idfor stable publishes- Validates
vX.Y.Zsemver format- Fetches release via API and verifies tag match, rejects drafts/prereleases
One minor note: if
gh apifails (e.g., release deleted between trigger and execution), the script exits cleanly due toset -euo pipefail.
313-324: LGTM - Summary clearly documents ownership model.The summary explicitly states release-please owns the canonical release and _publish.yml only handles artifact publication. Good for audit trail and debugging.
389-392: LGTM - Docker tags derive from validated release context.Using
needs.publish.outputs.release_tagensures consistent tagging from the validated semver tag rather than raw event data.Also applies to: 459-462
682-704: LGTM - Asset upload to existing release.
gh release upload --clobbercorrectly handles:
- Idempotent retries (overwrites existing assets on re-run)
- Attaching to canonical release owned by release-please
The glob patterns
dist/corvus/corvus-*anddist/cerebro/cerebro-*match the downloaded artifacts from earlier steps. Summary correctly documents the ownership handoff.
| .map_err(|err| { | ||
| tracing::warn!( | ||
| "Slack file metadata fetch failed for {}: {}", | ||
| &file_id[..file_id.len().min(8)], | ||
| self.sanitize_error(&err) | ||
| ); |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify presence of potentially unsafe byte slicing on &str across Rust sources.
# Expected: no production paths using direct byte slicing on &str without boundary checks.
rg -nP --type rust -C2 '&\w+\[\.\.[^\]]+\]|&\w+\[[^\]]+\.\.\]'Repository: dallay/corvus
Length of output: 32370
🏁 Script executed:
cd clients/agent-runtime && sed -n '210,225p' src/channels/slack.rsRepository: dallay/corvus
Length of output: 749
Fix unsafe byte slicing on file_id that can panic on non-UTF-8 boundaries
At line 217, &file_id[..file_id.len().min(8)] panics if the 8th byte falls in the middle of a UTF-8 character sequence. This is an unchecked panic in a production error path.
Use char_indices() to safely truncate at character boundaries:
Proposed fix
.map_err(|err| {
+ let file_id_prefix = file_id
+ .char_indices()
+ .nth(8)
+ .map(|(idx, _)| &file_id[..idx])
+ .unwrap_or(file_id);
tracing::warn!(
"Slack file metadata fetch failed for {}: {}",
- &file_id[..file_id.len().min(8)],
+ file_id_prefix,
self.sanitize_error(&err)
);📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| .map_err(|err| { | |
| tracing::warn!( | |
| "Slack file metadata fetch failed for {}: {}", | |
| &file_id[..file_id.len().min(8)], | |
| self.sanitize_error(&err) | |
| ); | |
| .map_err(|err| { | |
| let file_id_prefix = file_id | |
| .char_indices() | |
| .nth(8) | |
| .map(|(idx, _)| &file_id[..idx]) | |
| .unwrap_or(file_id); | |
| tracing::warn!( | |
| "Slack file metadata fetch failed for {}: {}", | |
| file_id_prefix, | |
| self.sanitize_error(&err) | |
| ); |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@clients/agent-runtime/src/channels/slack.rs` around lines 214 - 219, The
warning log slices file_id using &file_id[..file_id.len().min(8)] which can
panic on multibyte UTF-8 boundaries; update the closure that maps the error (the
map_err block referencing file_id and self.sanitize_error) to safely truncate
file_id at a character boundary—use file_id.char_indices() (or a helper that
finds the byte index of the nth char) to compute a safe end index (min 8 chars)
and then slice with that byte index when constructing the log message so it
cannot panic on non-UTF-8 boundaries.
|


Summary
chat:write,channels:history,files:read)maindriverelease-please, the canonical GitHub Release is created byrelease-please, and stable artifact publication fans out fromrelease.publishedTested Information
node --test scripts/release-contract.test.mjsactionlint -config-file .github/actionlint.yml .github/workflows/release-please.yml .github/workflows/publish-release.yml .github/workflows/publish-snapshot.yml .github/workflows/_publish.yml3492 passed)Documentation Impact
.github/workflows/README.mdclients/web/apps/docs/src/content/docs/guides/release.mdclients/web/apps/docs/src/content/docs/es/guides/release.mdclients/web/apps/docs/src/content/docs/clients/agent-runtime/ci-map.mdclients/web/apps/docs/src/content/docs/es/clients/agent-runtime/ci-map.mdclients/agent-runtime/README.mdCHANGELOG.mdBreaking Changes
release.published) instead of tag-push-driven GitHub Release creation inside_publish.yml.Checklist
Closes: #329