[RAPTOR-18959] feat(workload): remove the workload feature gate for WAPI GA - #780
Open
wojtekwdr wants to merge 1 commit into
Open
[RAPTOR-18959] feat(workload): remove the workload feature gate for WAPI GA#780wojtekwdr wants to merge 1 commit into
wojtekwdr wants to merge 1 commit into
Conversation
|
🎫 Jira: |
wojtekwdr
force-pushed
the
wojtekw/RAPTOR-18959-remove-workload-feature-gate
branch
from
August 17, 2026 13:13
c997e19 to
2fc85bc
Compare
wojtekwdr
marked this pull request as ready for review
August 18, 2026 07:57
chasdr
approved these changes
Aug 18, 2026
chasdr
left a comment
Contributor
There was a problem hiding this comment.
lgtm on the code, gate removal is clean and the docs/tests all line up.
one thing on the description though: the whole "legacy .wapi/ state is no longer read" section is #781's work, not this PR. #780 just removes the feature gate. reading this one you'd go looking for wapi.LegacyState and not find it.
mind trimming the body down to the gate removal and letting #781 carry the breaking-change writeup? otherwise anyone approving this thinks they reviewed the .wapi change when it's actually the next PR up.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
RATIONALE
dr workloadanddr artifacthave been hidden behindDATAROBOT_CLI_FEATURE_WORKLOADsince v0.2.63. Workload API is GA, so the gate is now pure friction: every user and every doc has to export the variable first, and until they do neither tree appears indr --helpor in shell completions.Both trees share the single gate name
workload, so they can only be ungated together.pipelinestays gated and becomes the only live gate, sointernal/featuresandcli.CommandAdderstay put.CHANGES
Dropped the two
features.SetGatecalls and everything that referenced the variable.docs/development/feature-gates.mdneeded more than a find-and-replace. It usedworkloadas its worked example throughout, and it taught a rawAnnotationsliteral that no call site has ever used, so it is now written aroundpipelineandfeatures.SetGate. Its "Removing a Feature Gate" procedure was also wrong: it said to delete theAnnotationsmap and stop, which does not compile, because it leaves an unused import behind.docs/commands/workload.mdandartifact.mdjoin the mkdocs nav, where neither had ever appeared. Addingworkload.mdturned up that it documented 9 of the 11 subcommands, missingconfigandup, so those are filled in rather than published incomplete.Breaking change: legacy
.wapi/state is no longer readGA is also the cutoff for the pre-GA state layout, so
EnsureMigratedand theDir()fallback are gone. A project still holding a root.wapi/now reads as unlinked.That directory shipped from v0.2.63 through v0.2.81. The auto-migration that would have relocated it existed only in v0.2.82 and v0.2.83, so anyone who skipped those two releases gets no migration at all. The affected population is gate-opting early adopters by definition, since exporting the variable was the only way to create the directory in the first place.
One path degraded badly without a guard. Every command reports a visible "not linked" error except
dr workload up, which read the project as a first deploy, minted a second artifact server-side and orphaned the one the project had been pushing to, along with its builds and locked versions, silently. Sowapi.LegacyStatenow recognises the old layout and every affected command explains itself:uprefuses before it touches the server.dr artifact code initstill succeeds, because re-linking is the recovery, but it now prints a note that the old directory is orphaned. Naming the artifact id is the point:.wapi/carries a.gitignoreof*, so nothing else would ever surface it, and that id is the only way back.A project that was genuinely never linked still gets the plain hint, with no mention of a directory it does not have.
Residual cost, not fixed
A
.wapi/.rollbacktree left by a sync that crashed on v0.2.81 or earlier is no longer swept, and those backups are the only copy of the files that sync overwrote. Keeping that working would mean keeping half the legacy machinery alive. Flagging it here rather than burying it; the guard at least makes the surrounding situation visible.NOTES
Reviewers running the suite locally:
Taskfile.yamlloads.env, and a typical dev.envsetsDATAROBOT_CLI_FEATURE_WORKLOAD=true, sotask testexercises the gate-on path. For the clean signal useDATAROBOT_CLI_FEATURE_WORKLOAD= go test ./....PR Automation
Comment-Commands: Trigger CI by commenting on the PR:
/trigger-smoke-testor/trigger-test-smoke- Run smoke tests/trigger-install-testor/trigger-test-install- Run installation testsLabels: Apply labels to trigger workflows:
run-smoke-testsorgo- Run smoke tests on demand (only works for non-forked PRs)Important
For Forked PRs: The
run-smoke-testslabel won't work. A required Smoke Tests check will block merge until a maintainer acts:/approve-smoke-teststo run smoke tests (results will set the check)/skip-smoke-teststo bypass the check without running testsPlease comment requesting a maintainer review if you need smoke tests to run.
Note
Medium Risk
Always-on exposure of workload and artifact commands changes the default CLI surface for all users (help, completions, and discoverability). Remaining risk is mostly operational—
pipelineis still gated and tests/env quirks aroundDATAROBOT_CLI_FEATURE_WORKLOADin dev.envare called out in the PR notes.Overview
dr artifactanddr workloadare no longer hidden behindDATAROBOT_CLI_FEATURE_WORKLOAD. Thefeatures.SetGatecalls are removed fromcmd/artifact/cmd.goandcmd/workload/cmd.go, so both trees always appear indr --help, completions, and the liveRootCmdtree.pipelineremains the only gated command.Tests are flipped to match:
TestWorkloadAndArtifactCommandsAlwaysRegisteredasserts both commands are present by default, andTestGatedCommandFilteredFromRootCmdkeeps coverage thatpipelinestays out ofRootCmdwhen its gate is off. Telemetry wiring tests no longer build separate gated subtrees—artifact and workload paths are checked onRootCmdvia an expandedexpectedTrackedCommandslist.Documentation drops the env-var requirement for artifact/workload, adds
configandupto the workload reference and command tree, publishes artifact and workload indocs/mkdocs.yml, and rewrites feature-gates docs to usepipelineandfeatures.SetGate(including a corrected GA checklist).AGENTS.mdand comment examples now citeDATAROBOT_CLI_FEATURE_PIPELINEinstead ofWORKLOAD.Reviewed by Cursor Bugbot for commit 2fc85bc. Configure here.