docs(changelog): reconcile [Unreleased] with what actually shipped#1256
Conversation
The release automation appends raw commit subjects under each new version heading but never clears [Unreleased], so curated entries accumulated in [Unreleased] for features that shipped across 8.5.0–10.0.0, while each release section got a thin auto-generated stub. The section had also grown two full sets of ### headers and an internal contradiction about the default base URL. - Reduce [Unreleased] to the only genuinely unreleased change (node up structured logging, #1237), verified against git commit ranges. - Rewrite [10.0.0] as the node-providers / broker-demotion release it is, including the breaking removal of the /api/fleet/ws sidecar protocol. - Harvest the stranded rich descriptions down into their real shipped releases (9.0.1–9.2.4 and 8.5.0–8.9.2), replacing thin stubs and consolidating the 9.2.4 journal-lock churn into impact bullets. - Remove duplicate section headers and the superseded gateway.relaycast.dev plugin-default entry that contradicted the cast.agentrelay.com migration. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JFxLB2bdCMHffkrLPFdhEx
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JFxLB2bdCMHffkrLPFdhEx
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThe changelog is revised across current and historical release sections to document CLI logging, node-provider, Fleet, placement, cloud-session, authentication, delivery, and plugin changes. Completed trajectory trace and summary records are added for the reconciliation task. ChangesChangelog reconciliation
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related PRs
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ 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 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 90ca71a372
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "task": { | ||
| "title": "Reconcile CHANGELOG unreleased bloat" | ||
| }, | ||
| "status": "active", |
There was a problem hiding this comment.
Complete or remove the leaked active trajectory
This commit finishes the changelog reconciliation but adds a trajectory under active/ with status: "active" and empty commits/filesChanged, so future trajectory/status scans will keep reporting this work as still in progress without a durable completed record of the decisions. Please complete/compact the trajectory (or omit this active artifact from the changelog commit) before landing it.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Fixed in c1cc9e4 — the trajectory is completed and now lives under .agentworkforce/trajectories/completed/2026-07/traj_8buyhdvq8fui/ with status: "completed" and its commits populated; the empty active/ stub is removed.
Generated by Claude Code
There was a problem hiding this comment.
Code Review
This pull request reconciles the CHANGELOG.md to clean up unreleased bloat and adds an active trajectory tracking file. The review feedback correctly points out that the 'Fixed' section in the changelog should be reordered to precede custom sections like 'Breaking Changes' and 'Migration Guidance' to adhere to the Keep a Changelog standard.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| - Replace `agent-relay up --no-dashboard` with `agent-relay up --background`; remove `--port`/`--foreground` from `up` invocations; set `AGENT_RELAY_BROKER_PORT` in place of `AGENT_RELAY_DASHBOARD_PORT` to pin the broker port. | ||
| - Dashboard assets are no longer managed by `agent-relay uninstall`; delete any leftover `~/.agentworkforce/relay/dashboard` directory manually. | ||
|
|
||
| ### Fixed |
There was a problem hiding this comment.
There was a problem hiding this comment.
Fixed in c1cc9e4 — the 9.0.1 section now orders Fixed before Breaking Changes / Migration Guidance.
Generated by Claude Code
| ### Added | ||
|
|
||
| - Reflex syncs to relayhistory-cloud in-process via ai-hist SDK | ||
| - `agent-relay cloud enroll --token <ocl_node_enr_…>` redeems a one-time Cloud enrollment token and persists node credentials to `~/.agentworkforce/relay/fleet-enrollments.json` (0600); a later plain `agent-relay node up` then runs as the Cloud-managed node. The token is never printed. | ||
| - `agent-relay node up|down|status|metrics|tail`, `node agent …`, and `node workflow run|logs|sync` unify `local up` and `fleet serve` under one command group. `node up [--config <file>]` brings the current context's node online: the broker runs agents, and a project `agent-relay.{ts,…}` or `agent-relay.py` is served as a capability provider. A plain agent host needs no definition file. | ||
| - Reflex history sync runs in-process via the ai-hist SDK, syncing to relayhistory-cloud. | ||
| - Swift SDK (`AgentRelaySDK`, `packages/sdk-swift`): `AgentClient` gains `invokeAction(_:input:timeout:pollInterval:)` — invoke a relay action and await its output — plus `channelHistory(_:limit:before:)` and `dmHistory(with:limit:before:)` for reading channel and 1:1 DM message history as oldest-first `RelayChannelEvent`s. |
There was a problem hiding this comment.
🟡 Swift SDK package split into a new importable module is silently dropped from the changelog
A user-visible "Added" entry about the Swift SDK being split into AgentRelayBrokerSDK is removed from the old [Unreleased] section (CHANGELOG.md:83 in the base) without being placed into any versioned release section, so Swift consumers lose the record of this structural change.
Impact: Swift SDK users checking the changelog won't see that broker orchestration moved to a separate AgentRelayBrokerSDK package they may need to import.
Dropped entry and reconciliation gap
The base [Unreleased] section at CHANGELOG.md:83 (base SHA) contained:
sdk-swiftsplits broker orchestration intoAgentRelayBrokerSDKand adds hosted participantAgentRelaySDKAPIs for workspace registration, channel/DM messaging, inbound events, and relay-routedAgentClient.registerAction(...)handlers.
This entry describes a new package name (AgentRelayBrokerSDK) that Swift consumers would import — a user-visible structural change. The PR moves other Swift SDK entries to 9.2.2 (e.g. AgentClient gains invokeAction at line 59) but this split entry is absent from every version section in the new file. The AGENTS.md changelog rules require "one short bullet per user-visible change" and only permit dropping "internal review notes, implementation backstory, release-only entries" — a new importable package is none of those.
| ### Added | |
| - Reflex syncs to relayhistory-cloud in-process via ai-hist SDK | |
| - `agent-relay cloud enroll --token <ocl_node_enr_…>` redeems a one-time Cloud enrollment token and persists node credentials to `~/.agentworkforce/relay/fleet-enrollments.json` (0600); a later plain `agent-relay node up` then runs as the Cloud-managed node. The token is never printed. | |
| - `agent-relay node up|down|status|metrics|tail`, `node agent …`, and `node workflow run|logs|sync` unify `local up` and `fleet serve` under one command group. `node up [--config <file>]` brings the current context's node online: the broker runs agents, and a project `agent-relay.{ts,…}` or `agent-relay.py` is served as a capability provider. A plain agent host needs no definition file. | |
| - Reflex history sync runs in-process via the ai-hist SDK, syncing to relayhistory-cloud. | |
| - Swift SDK (`AgentRelaySDK`, `packages/sdk-swift`): `AgentClient` gains `invokeAction(_:input:timeout:pollInterval:)` — invoke a relay action and await its output — plus `channelHistory(_:limit:before:)` and `dmHistory(with:limit:before:)` for reading channel and 1:1 DM message history as oldest-first `RelayChannelEvent`s. | |
| ### Added | |
| - `agent-relay cloud enroll --token <ocl_node_enr_…>` redeems a one-time Cloud enrollment token and persists node credentials to `~/.agentworkforce/relay/fleet-enrollments.json` (0600); a later plain `agent-relay node up` then runs as the Cloud-managed node. The token is never printed. | |
| - `agent-relay node up|down|status|metrics|tail`, `node agent …`, and `node workflow run|logs|sync` unify `local up` and `fleet serve` under one command group. `node up [--config <file>]` brings the current context's node online: the broker runs agents, and a project `agent-relay.{ts,…}` or `agent-relay.py` is served as a capability provider. A plain agent host needs no definition file. | |
| - Reflex history sync runs in-process via the ai-hist SDK, syncing to relayhistory-cloud. | |
| - Swift SDK (`AgentRelaySDK`, `packages/sdk-swift`): `AgentClient` gains `invokeAction(_:input:timeout:pollInterval:)` — invoke a relay action and await its output — plus `channelHistory(_:limit:before:)` and `dmHistory(with:limit:before:)` for reading channel and 1:1 DM message history as oldest-first `RelayChannelEvent`s. | |
| - `sdk-swift` splits broker orchestration into `AgentRelayBrokerSDK` and adds hosted participant `AgentRelaySDK` APIs for workspace registration, channel/DM messaging, inbound events, and relay-routed `AgentClient.registerAction(...)` handlers. |
Was this helpful? React with 👍 or 👎 to provide feedback.
There was a problem hiding this comment.
Restored in c1cc9e4 — but attributed to 9.1.3, not 9.2.2. git log -S'AgentRelayBrokerSDK' points at #1188 (wrap relaycast engine SDK in hosted transport), which shipped in 9.1.3; the 9.2.2 AgentClient bullet (#1230) is the later invokeAction/history addition, a separate change. So the split now sits under 9.1.3 next to the hosted-transport entry.
Generated by Claude Code
| ### Fixed | ||
|
|
||
| - Mock @agent-relay/sdk boundary in MCP startup test | ||
| - Serialize auth refresh writes | ||
| - `@agent-relay/cloud` writes cloud auth atomically and serializes file-backed token refreshes across processes, preventing concurrent refreshes from clobbering rotated credentials. |
There was a problem hiding this comment.
🟡 Cloud auth error-handling improvement and legacy credential migration dropped from the changelog
A user-visible "Fixed" entry about cloud auth refresh returning typed, timeout-bounded errors and auto-migrating legacy credentials is removed from the old [Unreleased] section (CHANGELOG.md:103 in the base) without being placed into any versioned release section, so the behavior change is undocumented.
Impact: Users who relied on the legacy ~/.agent-relay/cloud-auth.json path or who diagnose auth-refresh failures won't find the migration or error-handling change documented.
Dropped entry and related entries that survived
The base [Unreleased] Fixed section contained:
@agent-relay/cloudrefresh now fails with typed, timeout-bounded errors and migrates legacy~/.agent-relay/cloud-auth.jsoncredentials into the canonical~/.agentworkforce/relay/cloud-auth.jsonstore without dual-writing.
Two sibling cloud-auth entries survived the reconciliation: the atomic-write/serialization fix landed in 8.8.0 (CHANGELOG.md:325) and the refresh-token expiry fix landed in 8.8.4 (CHANGELOG.md:276). But this entry — which describes a distinct user-visible behavior (typed errors replacing generic failures, plus automatic legacy-path migration) — was dropped entirely.
| ### Fixed | |
| - Mock @agent-relay/sdk boundary in MCP startup test | |
| - Serialize auth refresh writes | |
| - `@agent-relay/cloud` writes cloud auth atomically and serializes file-backed token refreshes across processes, preventing concurrent refreshes from clobbering rotated credentials. | |
| ### Fixed | |
| - `@agent-relay/cloud` writes cloud auth atomically and serializes file-backed token refreshes across processes, preventing concurrent refreshes from clobbering rotated credentials. | |
| - `@agent-relay/cloud` refresh now fails with typed, timeout-bounded errors and migrates legacy `~/.agent-relay/cloud-auth.json` credentials into the canonical `~/.agentworkforce/relay/cloud-auth.json` store without dual-writing. |
Was this helpful? React with 👍 or 👎 to provide feedback.
There was a problem hiding this comment.
Restored in c1cc9e4 — attributed to 9.1.2, not 8.8.0. git log -S'agent-relay/cloud-auth.json' points at #1199 (drop relay base-URL defaults), which shipped in 9.1.2. The two sibling entries are genuinely different changes/releases: the atomic-write + cross-process serialization fix is 8.8.0, and the operator refresh-expiry fix is 8.8.4. So this typed-error/legacy-migration bullet now sits under 9.1.2.
Generated by Claude Code
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@CHANGELOG.md`:
- Line 369: Remove the changelog bullet stating that plugin base URLs default to
gateway.relaycast.dev, preserving the documented removal of this obsolete
gateway default.
- Line 12: Rewrite the affected CHANGELOG.md entries as concise, impact-first
bullets with one user-visible change per bullet. Split entries that combine
multiple changes, remove protocol, field, queue, credential, testing, and other
implementation details, and retain only externally observable behavior or
user-facing options.
🪄 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: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 4bdb1018-cece-4386-bb76-452002af2a5f
📒 Files selected for processing (2)
.agentworkforce/trajectories/active/traj_8buyhdvq8fui/trajectory.jsonCHANGELOG.md
There was a problem hiding this comment.
All reported issues were addressed
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
… order, complete trajectory - Restore the sdk-swift AgentRelayBrokerSDK split entry (git-attributed to 9.1.3, the hosted-transport release) and the @agent-relay/cloud typed-error / legacy cloud-auth.json migration entry (git-attributed to 9.1.2) — both were dropped in the first pass. - Reorder the 9.0.1 section so Fixed precedes Breaking Changes / Migration Guidance per Keep a Changelog. - Complete the leaked active trajectory so the durable record lives under completed/ with populated commits instead of a status:active stub. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JFxLB2bdCMHffkrLPFdhEx
Summary
The
chore(release)automation appends a new## [x.y.z]heading with raw commit subjects but never clears[Unreleased]. Over ~15 releases, curated entries piled up in[Unreleased]for features that had already shipped, while each version section got a thin auto-generated stub. The section had also grown two full sets of### Added/Changed/Fixed/Removedheaders and an internal contradiction about the default base URL.Attribution was done by mapping every release to its actual commit range with
git log(the repo has no tags — releases are onlychore(release)commits).[Unreleased]to the single genuinely-unreleased change (node upstructured logging, Fleet node structured logging: capabilities registered and actions invoked #1237), verified against git commit ranges.[10.0.0]as the node-providers / broker-demotion release it actually is, including a proper Breaking Changes entry for the removal of the local/api/fleet/wssidecar protocol and thePOST /v1/nodes/:node/actions/:name/invokeURL change (the reason for the major bump, previously unrecorded).cloud enroll+ thenodecommand group → 9.2.2, control-plane socket → 9.1.8, node-only-delivery hardening → 9.1.3, dashboard removal + its breaking/migration notes → 9.0.1, the@agent-relay/fleetcontrol plane → 8.8.0.gateway.relaycast.devplugin-default entry that contradicted thecast.agentrelay.commigration.Net
+141 / −223lines. A structural check confirms no duplicate or non-standard section headers, correct version ordering, and that the remaininggateway.relaycast.devmentions are now chronologically consistent (default in 8.x → migrated in 9.1.0).One judgment call: a handful of internal broker fixes that couldn't be pinned to an exact patch were attributed to the release where the feature landed (mostly 9.1.3), and a few low-value/uncertain stragglers were dropped (a Swift SDK split, a trivial SDK patch bump).
Test Plan
###headers within any version, correct descending version order, and consistency of remaining base-URL referencesScreenshots
🤖 Generated with Claude Code
Generated by Claude Code