Skip to content

chore: remove dead v3 prototype code#3700

Draft
kriscoleman wants to merge 1 commit into
mainfrom
cleanup/remove-dead-v3-code
Draft

chore: remove dead v3 prototype code#3700
kriscoleman wants to merge 1 commit into
mainfrom
cleanup/remove-dead-v3-code

Conversation

@kriscoleman
Copy link
Copy Markdown
Member

Summary

The v3 prototype has been abandoned and moved to a separate repository. This PR removes all dead v3-specific code, environment variable gates (ENABLE_V3), and v3-only features from the v2 production codebase.

What was removed

Files deleted

  • cmd/installer/cli/install_v3.go and install_v3_test.go
  • cmd/installer/cli/headless/install/* (entire directory: orchestrator, errors, mock client)
  • tests/dryrun/v3_install_test.go, v3_upgrade_test.go, v3_install_preflights_test.go, v3_install_httpproxy_test.go
  • .github/workflows/v3-e2e.yaml
  • e2e/kots-release-install-v3/* and e2e/kots-release-upgrade-v3/*
  • e2e/licenses/ci-v3.yaml
  • pkg-new/k0s/mock.go, pkg-new/upgrade/mock.go

Code changes

  • Removed ENABLE_V3 env var gates from install, upgrade, version commands, and flag setup
  • Simplified KotsadmNamespace to always return "kotsadm" (no v3 dynamic namespace)
  • Simplified EmbeddedClusterLogsPath to use static v2 path (/var/log/embedded-cluster)
  • Removed headless install orchestrator and v3 install flow (runManagerExperienceInstall, buildAPIOptions, validateHeadlessInstallFlags)
  • Removed isV3Enabled() from flags.go; usesTargetFlagMenu always returns false
  • Removed runVersionV3 and helper functions from version.go
  • Removed dead code from pkg-new/* packages (unused WithLogger, WithHTTPClient, PrintTable, RunAppPreflights, EnvSetter, etc.)
  • Updated Makefile to always use v2 release directories (removed ENABLE_V3 conditional)
  • Updated tests to match v2-only behavior and removed v3 test cases
  • Dagger: removed InstallHeadless, E2eRunHeadless, collectSupportBundles, printResults, formatCheckResult
  • Upgrade command is now always available in root (previously gated by ENABLE_V3)

What was preserved

  • pkg-new/ directory as a whole — v2 actively uses many of its subpackages (preflights, hostutils, cloudutils, validation, etc.)
  • runManagerExperienceUpgrade in upgrade.go — used by v2 for kURL migration
  • Proposals/README docs as historical documentation

Verification

  • go build ./...
  • go vet ./cmd/... ./api/... ./pkg/...
  • go test ./cmd/installer/cli/...
  • go test ./api/internal/managers/app/...
  • go test ./pkg/runtimeconfig/...
  • go test ./pkg/addons/adminconsole/...
  • go test -c ./tests/dryrun/... ✅ (compile)

@kriscoleman
Copy link
Copy Markdown
Member Author

will definitely need 👀 on this one

The v3 prototype has been abandoned and moved to a separate repository.
This cleanup removes all dead v3-specific code, environment variable gates
(ENABLE_V3), and v3-only features from the v2 production codebase.

Deleted files:
- cmd/installer/cli/install_v3.go and tests
- cmd/installer/cli/headless/install/* (entire directory)
- tests/dryrun/v3_*_test.go (4 files)
- .github/workflows/v3-e2e.yaml
- e2e/kots-release-install-v3/* and upgrade-v3/*
- e2e/licenses/ci-v3.yaml
- pkg-new/k0s/mock.go, pkg-new/upgrade/mock.go

Key changes:
- Remove ENABLE_V3 env var gates from install, upgrade, version commands
- Simplify KotsadmNamespace to always return 'kotsadm'
- Simplify EmbeddedClusterLogsPath to use static v2 path
- Remove headless install orchestrator and v3 install flow
- Remove dead code from pkg-new/* packages
- Update Makefile to always use v2 release directories
- Update tests to match v2-only behavior
@kriscoleman kriscoleman force-pushed the cleanup/remove-dead-v3-code branch from af4f31c to df0e50e Compare May 8, 2026 17:03
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 8, 2026

This PR has been released (on staging) and is available for download with a embedded-cluster-smoke-test-staging-app license ID.

Online Installer:

curl "https://staging.replicated.app/embedded/embedded-cluster-smoke-test-staging-app/ci/appver-dev-df0e50e" -H "Authorization: $EC_SMOKE_TEST_LICENSE_ID" -o embedded-cluster-smoke-test-staging-app-ci.tgz

Airgap Installer (may take a few minutes before the airgap bundle is built):

curl "https://staging.replicated.app/embedded/embedded-cluster-smoke-test-staging-app/ci-airgap/appver-dev-df0e50e?airgap=true" -H "Authorization: $EC_SMOKE_TEST_LICENSE_ID" -o embedded-cluster-smoke-test-staging-app-ci.tgz

Happy debugging!

@kriscoleman
Copy link
Copy Markdown
Member Author

handing this off to @emosbaugh, they asked if they could steward it. Thanks Ethan!
CC @xavpaice to keep them in the loop ➿

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.

1 participant