Skip to content

Software factory change - #1842

Merged
khaliqgant merged 5 commits into
mainfrom
relayflow/relay-software-garden-3f494e55
Sep 22, 2026
Merged

khaliqgant merged 5 commits into
mainfrom
relayflow/relay-software-garden-3f494e55

Conversation

@agent-relay-code

@agent-relay-code agent-relay-code Bot commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Retire the removed workspace fleet rollout API

fleet config, fleet enable, fleet disable, and fleet inherit called an API removed by Relaycast, so every invocation failed. They now remain as hidden compatibility commands that exit 0, accept legacy SDK options, and print a deprecation notice without creating a client. config emits a JSON deprecation object; disable explicitly says nodes have not been disabled.

Removed workspace.fleetNodes, its messaging implementation, and RelayWorkspaceFleetNodesConfig from the SDK. SDK consumers must remove references to that API/type. Fleet nodes need no per-workspace enablement.

Updated help tests, current docs and skills, the feature manifest, verification procedures, and the Unreleased changelog. The cleanroom harness retains all 110 operations and verifies the four no-ops against an unreachable --base-url, with no workspace key in argv.

Regenerating the CLI inventory surfaced pre-existing drift: four board operations (node-agent-set-model, node-agent-set-model-app-server-a/b, node-agent-new-reject-headless) require node agent options the built CLI no longer defines (--json, --endpoint, --protocol, --session-id, --release), so they fail on a live campaign with commander's unknown-option error. Rather than let the regenerated inventory silently erase that signal, the six leaf/option gaps are declared in matrix.optionDrift and tracked by #1844. New validateFleetOptionDrift checks the argvMustContain → inventory direction nothing validated before: undeclared drift fails at matrix load, and a declaration fails once the CLI defines the option again.

Validation:

  • npm run build and npm run typecheck passed.
  • npm run lint passed with 107 warnings and no errors.
  • CLI fleet/bootstrap and cleanroom/guardian suites: 164 tests passed.
  • SDK facade/messaging/observer suites, using the SDK's own Vitest config: 53 tests passed.
  • All four built CLI commands exited 0 with an empty temporary HOME and no credentials.
  • Generated inventory matches the built CLI and matrix digest; 110 operations retained.
  • Acceptance searches found no fleetNodes references in SDK/CLI source, obsolete policy-restoration fields, or fleet-off-by-default guidance.

The live Daytona campaign was not run; validation covers local regression tests and the built CLI.

Review in cubic


Note

High Risk
Major breaking SDK removal plus behavioral change for scripts that relied on fleet enable/disable; compatibility shims reduce CLI breakage but consumers must migrate off workspace.fleetNodes.

Overview
Retires the removed workspace fleet rollout API and documents that fleet nodes no longer need per-workspace enablement.

The SDK drops workspace.fleetNodes and RelayWorkspaceFleetNodesConfig (breaking for consumers). fleet config, enable, disable, and inherit stay as hidden commands that exit 0 without opening a workspace client: they print a deprecation notice, config emits a JSON deprecation object, and legacy SDK flags are accepted but ignored.

Public docs, skills, the feature manifest, and verification procedures no longer treat those four as first-class features. Feature checks and the Daytona cleanroom harness now assert no-op behavior (including against an unreachable --base-url) instead of mutating or restoring workspace policy. The regenerated CLI inventory marks the four commands hidden and reflects other CLI surface drift (e.g. new fleet spawn / fleet release options).

Reviewed by Cursor Bugbot for commit e00add4. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitai Bot commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: f307faca-bd41-4533-baff-485f832893e2

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@devin-ai-integration devin-ai-integration 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.

Devin Review found 1 potential issue.

1 flag not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)

Devin Review

Comment thread CHANGELOG.md

### Breaking Changes

- SDK consumers must remove references to `workspace.fleetNodes` and `RelayWorkspaceFleetNodesConfig`.

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.

🟡 Breaking SDK ships as patch

RelayWorkspace loses fleetNodes while [Unreleased - Patch] remains the pending release level. A 12.4.x release breaks consumers that accept patch upgrades.

Learn more

The SDK package is versioned independently as a public package. This change removes members from its exported RelayWorkspace and RelayMessagingClient interfaces, so existing consumers can no longer compile against the new declaration files. The repository rule requires [Unreleased - Major] for a SemVer-major change and forbids lowering the pending level.

Example: A consumer declares "@agent-relay/sdk": "^12.4.1" and calls relay.workspace.fleetNodes.get(). Installing a 12.4.2 release containing this change removes that member despite the compatible patch range.

Recommended fix: Raise the root changelog heading to [Unreleased - Major] and release @agent-relay/sdk with a major version. If a patch release is required, retain a deprecated typed compatibility surface until the next major release.

Devin Review


Was this helpful? React with 👍 or 👎 to provide feedback.

Removing `workspace.fleetNodes` and `RelayWorkspaceFleetNodesConfig` from
`@agent-relay/sdk` drops members from a published interface, so consumers on
a compatible range stop compiling. The entry already carries Breaking Changes
and Migration Guidance sections, which the repo rules reserve for a
SemVer-major change, while the heading still said Patch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@khaliqgant

Copy link
Copy Markdown
Member

Fixed in 40b06e6 — the heading is now ## [Unreleased - Major].

Agreed on the substance: removing workspace.fleetNodes and RelayWorkspaceFleetNodesConfig drops members from a published interface, so a consumer on ^12.4.1 stops compiling. The entry already carried ### Breaking Changes and ### Migration Guidance, which the repo rules reserve for a SemVer-major change, so the Patch heading contradicted the entry's own content.

Took the version-raise rather than the deprecated-compatibility-surface option: the underlying service API no longer exists (relaycast#212 removed it), so a retained typed surface could only fail at runtime.

prpmdev-bot and others added 2 commits September 22, 2026 13:59
summary.md is the flow's own pull-request body source, not part of the
change. The flow that produced this branch committed it before working-file
exclusion landed, which would have added a build artifact to the repo root.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@khaliqgant

Copy link
Copy Markdown
Member

Rebased onto main and resolved.

Conflict. Only CHANGELOG.md conflicted, after #1843 merged its entries under [Unreleased - Minor] while this branch raises the level to [Unreleased - Major]. Resolved as the union at the higher level, which the repo's monotonic rule requires (Patch < Minor < Major, never lowered). Both sides carried the same manual_flush bullet from #1839, so it is deduped rather than listed twice. Every other bullet from both sides is preserved: 1 Changed, 1 Removed, 4 Fixed, plus Breaking Changes and Migration Guidance. The code files merged cleanly.

Also dropped summary.md. It is the flow's own pull-request body source, not part of the change — the flow that produced this branch committed it before working-file exclusion landed, so merging would have added a build artifact to the repo root. It is not on main, and the trajectory files under .agentworkforce/trajectories/ are deliberately kept.

@khaliqgant
khaliqgant merged commit 12ce647 into main Sep 22, 2026
76 checks passed
@khaliqgant
khaliqgant deleted the relayflow/relay-software-garden-3f494e55 branch September 22, 2026 21:51
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