Conversation
| publish-packages: | ||
| name: Publish ${{ matrix.package }} | ||
| needs: build | ||
| needs: [build, build-broker] |
There was a problem hiding this comment.
🔴 Adding build-broker to publish-packages needs blocks all non-SDK package publishes if broker build fails
When package == 'all', the publish-packages job publishes 10 packages in parallel (policy, memory, utils, trajectory, hooks, user-directory, config, sdk, telemetry, acp-bridge). By changing needs: build to needs: [build, build-broker], if the Rust broker build fails for any reason, all package publishes are blocked — not just the SDK.
Root Cause and Impact
In GitHub Actions, when any job in the needs list fails, the dependent job is skipped (unless it uses if: always()). Before this PR, publish-packages only depended on build, so a broker build failure would not block publishing non-SDK packages like policy, memory, utils, etc.
After this PR at .github/workflows/publish.yml:433:
publish-packages:
needs: [build, build-broker] # NEW: added build-broker
if: github.event.inputs.package == 'all'Only the sdk matrix entry actually needs the broker binaries (lines 469-479 correctly guard the download with if: matrix.package == 'sdk'). But the job-level needs dependency means a broker build failure (e.g., Rust compilation error, cross-compilation toolchain issue) will prevent publishing all 10 packages, including those completely unrelated to the broker.
Impact: A transient Rust/broker build failure during an all publish would block the entire release pipeline for packages that have no dependency on the broker.
Prompt for agents
In .github/workflows/publish.yml, the publish-packages job at line 433 should revert to `needs: build` (removing `build-broker` from the needs list). Instead, the broker binary download steps at lines 469-479 should handle the case where broker artifacts might not be ready by either: (1) Making the SDK publish a separate job (like publish-sdk-only already exists), or (2) Using a conditional approach where the SDK matrix entry has its own dependency. The simplest fix is to revert line 433 to `needs: build` and instead ensure the SDK package in the publish-packages matrix is handled by the existing publish-sdk-only job (i.e., remove 'sdk' from the publish-packages matrix at line 449, since publish-sdk-only already handles it when package=='sdk'). However, since publish-packages only runs when package=='all', you need to decide: either keep sdk in the matrix and accept the broker dependency, or split it out. The cleanest approach is to revert needs to just `build` and add `if: always()` style logic, or remove sdk from the publish-packages matrix and have publish-sdk-only also trigger on package=='all'.
Was this helpful? React with 👍 or 👎 to provide feedback.
Summary
Test Plan
Screenshots