22 KiB
Upgrade Report: dappco.re/go/core v0.8.0-alpha.1
Scope
- Repository:
core/go-container - Branch:
agent/create-an-upgrade-plan-for-this-package - Requested target:
dappco.re/go/core v0.8.0-alpha.1 - Consumers called out for break-risk review:
core,go-devops
Baseline Verification
go build ./...: passedgo vet ./...: passedgo test ./... -count=1 -timeout 120s: passedgo test -cover ./...: passed (container81.7%,cmd/vm0.0%,devenv53.3%,sources72.7%)go mod tidy: not run because this task is report-only and should not introduce dependency churn
1. go.mod Upgrade Plan
- Current core version:
dappco.re/go/core v0.5.0atgo.mod:16 - Required bump:
dappco.re/go/core v0.5.0->dappco.re/go/core v0.8.0-alpha.1atgo.mod:16 - Direct
dappco.re/go/core/*dependencies that should be compatibility-checked in the same upgrade pass:go.mod:6dappco.re/go/core/i18n v0.2.0go.mod:7dappco.re/go/core/io v0.2.0go.mod:8dappco.re/go/core/log v0.1.0
- Legacy
forge.lthn.aimodules still present ingo.mod; these should be reviewed during the core bump because they may pin older transitive core APIs:go.mod:9forge.lthn.ai/core/cli v0.3.7go.mod:10forge.lthn.ai/core/config v0.1.8go.mod:17forge.lthn.ai/core/go v0.3.3go.mod:18forge.lthn.ai/core/go-i18n v0.1.7go.mod:19forge.lthn.ai/core/go-inference v0.1.6go.mod:20forge.lthn.ai/core/go-io v0.1.7go.mod:21forge.lthn.ai/core/go-log v0.0.4
2. Banned Stdlib Imports
Each group lists every import site and the required Core replacement.
os
- Replacement: Replace with core.Env/core.Fs
cmd/vm/cmd_container.go:7cmd/vm/cmd_templates.go:6devenv/claude.go:6devenv/config.go:4devenv/config_test.go:4devenv/devops.go:7devenv/devops_test.go:5devenv/images.go:7devenv/images_test.go:5devenv/serve.go:6devenv/serve_test.go:4devenv/shell.go:6devenv/ssh_utils.go:6devenv/test_test.go:4hypervisor.go:6linuxkit.go:8linuxkit_test.go:5sources/cdn.go:8sources/cdn_test.go:8sources/github.go:5state.go:5state_test.go:4templates.go:7templates_test.go:4
os/exec
- Replacement: No direct replacement was provided in the task; requires a manual audit for the v0.8.0-alpha.1 command-exec path
cmd/vm/cmd_templates.go:7devenv/claude.go:7devenv/devops_test.go:6devenv/serve.go:7devenv/shell.go:7devenv/ssh_utils.go:7hypervisor.go:7linuxkit.go:9linuxkit_test.go:6sources/github.go:6
encoding/json
- Replacement: Replace with core.JSONMarshalString/JSONUnmarshalString
devenv/images.go:5devenv/test.go:5state.go:4
fmt
- Replacement: Replace with core.Sprintf/core.Concat/core.E
cmd/vm/cmd_container.go:5cmd/vm/cmd_templates.go:5devenv/claude.go:5devenv/devops.go:6devenv/images.go:6devenv/serve.go:5devenv/shell.go:5devenv/ssh_utils.go:5hypervisor.go:5linuxkit.go:6sources/cdn.go:5sources/cdn_test.go:5
errors
- Replacement: Replace with core.E/core.Is
- No occurrences found
strings
- Replacement: Replace with core.Contains/core.HasPrefix/core.Split/core.Trim/core.Replace
cmd/vm/cmd_container.go:8cmd/vm/cmd_templates.go:9devenv/claude.go:9devenv/ssh_utils.go:9devenv/test.go:7hypervisor.go:10sources/github.go:7templates.go:11templates_test.go:6
path/filepath
- Replacement: Replace with core.JoinPath/core.PathBase/core.PathDir
cmd/vm/cmd_templates.go:8devenv/claude.go:8devenv/config.go:5devenv/config_test.go:5devenv/devops.go:8devenv/devops_test.go:7devenv/images.go:8devenv/images_test.go:6devenv/serve.go:8devenv/serve_test.go:5devenv/ssh_utils.go:8devenv/test.go:6devenv/test_test.go:5hypervisor.go:8linuxkit_test.go:7sources/cdn.go:9sources/cdn_test.go:9state.go:6state_test.go:5templates.go:8templates_test.go:5
3. Tests Not Matching TestFile_Function_{Good,Bad,Ugly}
-
Total mismatches found: 236
-
devenv/claude_test.go:9TestClaudeOptions_Default -
devenv/claude_test.go:16TestClaudeOptions_Custom -
devenv/claude_test.go:27TestFormatAuthList_Good_NoAuth -
devenv/claude_test.go:33TestFormatAuthList_Good_Default -
devenv/claude_test.go:39TestFormatAuthList_Good_CustomAuth -
devenv/claude_test.go:47TestFormatAuthList_Good_MultipleAuth -
devenv/claude_test.go:55TestFormatAuthList_Good_EmptyAuth -
devenv/config_test.go:13TestDefaultConfig -
devenv/config_test.go:20TestConfigPath -
devenv/config_test.go:26TestLoadConfig_Good -
devenv/config_test.go:65TestLoadConfig_Bad -
devenv/config_test.go:82TestConfig_Struct -
devenv/config_test.go:105TestDefaultConfig_Complete -
devenv/config_test.go:114TestLoadConfig_Good_PartialConfig -
devenv/config_test.go:139TestLoadConfig_Good_AllSourceTypes -
devenv/config_test.go:208TestImagesConfig_Struct -
devenv/config_test.go:217TestGitHubConfig_Struct -
devenv/config_test.go:222TestRegistryConfig_Struct -
devenv/config_test.go:227TestCDNConfig_Struct -
devenv/config_test.go:232TestLoadConfig_Bad_UnreadableFile -
devenv/devops_test.go:18TestImageName -
devenv/devops_test.go:26TestImagesDir -
devenv/devops_test.go:48TestImagePath -
devenv/devops_test.go:58TestDefaultBootOptions -
devenv/devops_test.go:66TestIsInstalled_Bad -
devenv/devops_test.go:78TestIsInstalled_Good -
devenv/devops_test.go:142TestDevOps_Status_Good_NotInstalled -
devenv/devops_test.go:168TestDevOps_Status_Good_NoContainer -
devenv/devops_test.go:232TestDevOps_IsRunning_Bad_NotRunning -
devenv/devops_test.go:255TestDevOps_IsRunning_Bad_ContainerStopped -
devenv/devops_test.go:323TestDevOps_findContainer_Bad_NotFound -
devenv/devops_test.go:346TestDevOps_Stop_Bad_NotFound -
devenv/devops_test.go:369TestBootOptions_Custom -
devenv/devops_test.go:382TestDevStatus_Struct -
devenv/devops_test.go:403TestDevOps_Boot_Bad_NotInstalled -
devenv/devops_test.go:426TestDevOps_Boot_Bad_AlreadyRunning -
devenv/devops_test.go:465TestDevOps_Status_Good_WithImageVersion -
devenv/devops_test.go:501TestDevOps_findContainer_Good_MultipleContainers -
devenv/devops_test.go:546TestDevOps_Status_Good_ContainerWithUptime -
devenv/devops_test.go:583TestDevOps_IsRunning_Bad_DifferentContainerName -
devenv/devops_test.go:618TestDevOps_Boot_Good_FreshFlag -
devenv/devops_test.go:668TestDevOps_Stop_Bad_ContainerNotRunning -
devenv/devops_test.go:703TestDevOps_Boot_Good_FreshWithNoExisting -
devenv/devops_test.go:741TestImageName_Format -
devenv/devops_test.go:750TestDevOps_Install_Delegates -
devenv/devops_test.go:768TestDevOps_CheckUpdate_Delegates -
devenv/devops_test.go:786TestDevOps_Boot_Good_Success -
devenv/devops_test.go:818TestDevOps_Config -
devenv/images_test.go:16TestImageManager_Good_IsInstalled -
devenv/images_test.go:36TestNewImageManager_Good -
devenv/images_test.go:66TestManifest_Save -
devenv/images_test.go:94TestLoadManifest_Bad -
devenv/images_test.go:106TestCheckUpdate_Bad -
devenv/images_test.go:121TestNewImageManager_Good_AutoSource -
devenv/images_test.go:134TestNewImageManager_Good_UnknownSourceFallsToAuto -
devenv/images_test.go:147TestLoadManifest_Good_Empty -
devenv/images_test.go:159TestLoadManifest_Good_ExistingData -
devenv/images_test.go:174TestImageInfo_Struct -
devenv/images_test.go:187TestManifest_Save_Good_CreatesDirs -
devenv/images_test.go:207TestManifest_Save_Good_Overwrite -
devenv/images_test.go:239TestImageManager_Install_Bad_NoSourceAvailable -
devenv/images_test.go:256TestNewImageManager_Good_CreatesDir -
devenv/images_test.go:295TestImageManager_Install_Good_WithMockSource -
devenv/images_test.go:323TestImageManager_Install_Bad_DownloadError -
devenv/images_test.go:345TestImageManager_Install_Bad_VersionError -
devenv/images_test.go:367TestImageManager_Install_Good_SkipsUnavailableSource -
devenv/images_test.go:396TestImageManager_CheckUpdate_Good_WithMockSource -
devenv/images_test.go:426TestImageManager_CheckUpdate_Good_NoUpdate -
devenv/images_test.go:456TestImageManager_CheckUpdate_Bad_NoSource -
devenv/images_test.go:483TestImageManager_CheckUpdate_Bad_VersionError -
devenv/images_test.go:511TestImageManager_Install_Bad_EmptySources -
devenv/images_test.go:527TestImageManager_Install_Bad_AllUnavailable -
devenv/images_test.go:546TestImageManager_CheckUpdate_Good_FirstSourceUnavailable -
devenv/images_test.go:573TestManifest_Struct -
devenv/serve_test.go:12TestDetectServeCommand_Good_Laravel -
devenv/serve_test.go:21TestDetectServeCommand_Good_NodeDev -
devenv/serve_test.go:31TestDetectServeCommand_Good_NodeStart -
devenv/serve_test.go:41TestDetectServeCommand_Good_PHP -
devenv/serve_test.go:50TestDetectServeCommand_Good_GoMain -
devenv/serve_test.go:61TestDetectServeCommand_Good_GoWithoutMain -
devenv/serve_test.go:71TestDetectServeCommand_Good_Django -
devenv/serve_test.go:80TestDetectServeCommand_Good_Fallback -
devenv/serve_test.go:87TestDetectServeCommand_Good_Priority -
devenv/serve_test.go:99TestServeOptions_Default -
devenv/serve_test.go:105TestServeOptions_Custom -
devenv/serve_test.go:114TestHasFile_Good -
devenv/serve_test.go:123TestHasFile_Bad -
devenv/serve_test.go:129TestHasFile_Bad_Directory -
devenv/shell_test.go:9TestShellOptions_Default -
devenv/shell_test.go:15TestShellOptions_Console -
devenv/shell_test.go:23TestShellOptions_Command -
devenv/shell_test.go:31TestShellOptions_ConsoleWithCommand -
devenv/shell_test.go:40TestShellOptions_EmptyCommand -
devenv/test_test.go:11TestDetectTestCommand_Good_ComposerJSON -
devenv/test_test.go:21TestDetectTestCommand_Good_PackageJSON -
devenv/test_test.go:31TestDetectTestCommand_Good_GoMod -
devenv/test_test.go:41TestDetectTestCommand_Good_CoreTestYaml -
devenv/test_test.go:53TestDetectTestCommand_Good_Pytest -
devenv/test_test.go:63TestDetectTestCommand_Good_Taskfile -
devenv/test_test.go:73TestDetectTestCommand_Bad_NoFiles -
devenv/test_test.go:82TestDetectTestCommand_Good_Priority -
devenv/test_test.go:96TestLoadTestConfig_Good -
devenv/test_test.go:135TestLoadTestConfig_Bad_NotFound -
devenv/test_test.go:144TestHasPackageScript_Good -
devenv/test_test.go:156TestHasPackageScript_Bad_MissingScript -
devenv/test_test.go:165TestHasComposerScript_Good -
devenv/test_test.go:174TestHasComposerScript_Bad_MissingScript -
devenv/test_test.go:183TestTestConfig_Struct -
devenv/test_test.go:204TestTestCommand_Struct -
devenv/test_test.go:217TestTestOptions_Struct -
devenv/test_test.go:230TestDetectTestCommand_Good_TaskfileYml -
devenv/test_test.go:240TestDetectTestCommand_Good_Pyproject -
devenv/test_test.go:250TestHasPackageScript_Bad_NoFile -
devenv/test_test.go:258TestHasPackageScript_Bad_InvalidJSON -
devenv/test_test.go:267TestHasPackageScript_Bad_NoScripts -
devenv/test_test.go:276TestHasComposerScript_Bad_NoFile -
devenv/test_test.go:284TestHasComposerScript_Bad_InvalidJSON -
devenv/test_test.go:293TestHasComposerScript_Bad_NoScripts -
devenv/test_test.go:302TestLoadTestConfig_Bad_InvalidYAML -
devenv/test_test.go:314TestLoadTestConfig_Good_MinimalConfig -
devenv/test_test.go:332TestDetectTestCommand_Good_ComposerWithoutScript -
devenv/test_test.go:344TestDetectTestCommand_Good_PackageJSONWithoutScript -
hypervisor_test.go:23TestQemuHypervisor_Available_Bad_InvalidBinary -
hypervisor_test.go:47TestHyperkitHypervisor_Available_Bad_NotDarwin -
hypervisor_test.go:59TestHyperkitHypervisor_Available_Bad_InvalidBinary -
hypervisor_test.go:69TestIsKVMAvailable_Good -
hypervisor_test.go:83TestDetectHypervisor_Good -
hypervisor_test.go:98TestGetHypervisor_Good_Qemu -
hypervisor_test.go:110TestGetHypervisor_Good_QemuUppercase -
hypervisor_test.go:122TestGetHypervisor_Good_Hyperkit -
hypervisor_test.go:140TestGetHypervisor_Bad_Unknown -
hypervisor_test.go:147TestQemuHypervisor_BuildCommand_Good_WithPortsAndVolumes -
hypervisor_test.go:175TestQemuHypervisor_BuildCommand_Good_QCow2Format -
hypervisor_test.go:195TestQemuHypervisor_BuildCommand_Good_VMDKFormat -
hypervisor_test.go:215TestQemuHypervisor_BuildCommand_Good_RawFormat -
hypervisor_test.go:235TestHyperkitHypervisor_BuildCommand_Good_WithPorts -
hypervisor_test.go:258TestHyperkitHypervisor_BuildCommand_Good_QCow2Format -
hypervisor_test.go:269TestHyperkitHypervisor_BuildCommand_Good_RawFormat -
hypervisor_test.go:280TestHyperkitHypervisor_BuildCommand_Good_NoPorts -
hypervisor_test.go:296TestQemuHypervisor_BuildCommand_Good_NoSSHPort -
hypervisor_test.go:312TestQemuHypervisor_BuildCommand_Bad_UnknownFormat -
hypervisor_test.go:323TestHyperkitHypervisor_BuildCommand_Bad_UnknownFormat -
hypervisor_test.go:339TestHyperkitHypervisor_BuildCommand_Good_ISOFormat -
linuxkit_test.go:76TestNewLinuxKitManagerWithHypervisor_Good -
linuxkit_test.go:89TestLinuxKitManager_Run_Good_Detached -
linuxkit_test.go:128TestLinuxKitManager_Run_Good_DefaultValues -
linuxkit_test.go:153TestLinuxKitManager_Run_Bad_ImageNotFound -
linuxkit_test.go:164TestLinuxKitManager_Run_Bad_UnsupportedFormat -
linuxkit_test.go:204TestLinuxKitManager_Stop_Bad_NotFound -
linuxkit_test.go:214TestLinuxKitManager_Stop_Bad_NotRunning -
linuxkit_test.go:251TestLinuxKitManager_List_Good_VerifiesRunningStatus -
linuxkit_test.go:303TestLinuxKitManager_Logs_Bad_NotFound -
linuxkit_test.go:313TestLinuxKitManager_Logs_Bad_NoLogFile -
linuxkit_test.go:336TestLinuxKitManager_Exec_Bad_NotFound -
linuxkit_test.go:346TestLinuxKitManager_Exec_Bad_NotRunning -
linuxkit_test.go:359TestDetectImageFormat_Good -
linuxkit_test.go:381TestDetectImageFormat_Bad_Unknown -
linuxkit_test.go:429TestLinuxKitManager_Logs_Good_Follow -
linuxkit_test.go:467TestFollowReader_Read_Good_WithData -
linuxkit_test.go:500TestFollowReader_Read_Good_ContextCancel -
linuxkit_test.go:544TestNewFollowReader_Bad_FileNotFound -
linuxkit_test.go:551TestLinuxKitManager_Run_Bad_BuildCommandError -
linuxkit_test.go:570TestLinuxKitManager_Run_Good_Foreground -
linuxkit_test.go:598TestLinuxKitManager_Stop_Good_ContextCancelled -
linuxkit_test.go:635TestIsProcessRunning_Good_ExistingProcess -
linuxkit_test.go:641TestIsProcessRunning_Bad_NonexistentProcess -
linuxkit_test.go:647TestLinuxKitManager_Run_Good_WithPortsAndVolumes -
linuxkit_test.go:676TestFollowReader_Read_Bad_ReaderError -
linuxkit_test.go:697TestLinuxKitManager_Run_Bad_StartError -
linuxkit_test.go:718TestLinuxKitManager_Run_Bad_ForegroundStartError -
linuxkit_test.go:739TestLinuxKitManager_Run_Good_ForegroundWithError -
linuxkit_test.go:762TestLinuxKitManager_Stop_Good_ProcessExitedWhileRunning -
sources/cdn_test.go:16TestCDNSource_Good_Available -
sources/cdn_test.go:26TestCDNSource_Bad_NoURL -
sources/cdn_test.go:118TestCDNSource_LatestVersion_Bad_NoManifest -
sources/cdn_test.go:134TestCDNSource_LatestVersion_Bad_ServerError -
sources/cdn_test.go:150TestCDNSource_Download_Good_NoProgress -
sources/cdn_test.go:174TestCDNSource_Download_Good_LargeFile -
sources/cdn_test.go:206TestCDNSource_Download_Bad_HTTPErrorCodes -
sources/cdn_test.go:238TestCDNSource_InterfaceCompliance -
sources/cdn_test.go:243TestCDNSource_Config -
sources/cdn_test.go:254TestNewCDNSource_Good -
sources/cdn_test.go:268TestCDNSource_Download_Good_CreatesDestDir -
sources/cdn_test.go:294TestSourceConfig_Struct -
sources/github_test.go:9TestGitHubSource_Good_Available -
sources/github_test.go:23TestGitHubSource_Name -
sources/github_test.go:28TestGitHubSource_Config -
sources/github_test.go:40TestGitHubSource_Good_Multiple -
sources/github_test.go:51TestNewGitHubSource_Good -
sources/github_test.go:65TestGitHubSource_InterfaceCompliance -
sources/source_test.go:9TestSourceConfig_Empty -
sources/source_test.go:17TestSourceConfig_Complete -
sources/source_test.go:31TestImageSource_Interface -
state_test.go:13TestNewState_Good -
state_test.go:21TestLoadState_Good_NewFile -
state_test.go:33TestLoadState_Good_ExistingFile -
state_test.go:64TestLoadState_Bad_InvalidJSON -
state_test.go:142TestState_Get_Bad_NotFound -
state_test.go:162TestState_SaveState_Good_CreatesDirectory -
state_test.go:177TestDefaultStateDir_Good -
state_test.go:183TestDefaultStatePath_Good -
state_test.go:189TestDefaultLogsDir_Good -
state_test.go:195TestLogPath_Good -
state_test.go:201TestEnsureLogsDir_Good -
state_test.go:211TestGenerateID_Good -
templates_test.go:13TestListTemplates_Good -
templates_test.go:44TestGetTemplate_Good_CoreDev -
templates_test.go:55TestGetTemplate_Good_ServerPhp -
templates_test.go:66TestGetTemplate_Bad_NotFound -
templates_test.go:73TestApplyVariables_Good_SimpleSubstitution -
templates_test.go:86TestApplyVariables_Good_WithDefaults -
templates_test.go:99TestApplyVariables_Good_AllDefaults -
templates_test.go:109TestApplyVariables_Good_MixedSyntax -
templates_test.go:128TestApplyVariables_Good_EmptyDefault -
templates_test.go:138TestApplyVariables_Bad_MissingRequired -
templates_test.go:149TestApplyVariables_Bad_MultipleMissing -
templates_test.go:164TestApplyTemplate_Good -
templates_test.go:178TestApplyTemplate_Bad_TemplateNotFound -
templates_test.go:189TestApplyTemplate_Bad_MissingVariable -
templates_test.go:199TestExtractVariables_Good -
templates_test.go:221TestExtractVariables_Good_NoVariables -
templates_test.go:230TestExtractVariables_Good_OnlyDefaults -
templates_test.go:241TestScanUserTemplates_Good -
templates_test.go:265TestScanUserTemplates_Good_MultipleTemplates -
templates_test.go:287TestScanUserTemplates_Good_EmptyDirectory -
templates_test.go:295TestScanUserTemplates_Bad_NonexistentDirectory -
templates_test.go:301TestExtractTemplateDescription_Good -
templates_test.go:318TestExtractTemplateDescription_Good_NoComments -
templates_test.go:333TestExtractTemplateDescription_Bad_FileNotFound -
templates_test.go:339TestVariablePatternEdgeCases_Good -
templates_test.go:387TestScanUserTemplates_Good_SkipsBuiltinNames -
templates_test.go:405TestScanUserTemplates_Good_SkipsDirectories -
templates_test.go:422TestScanUserTemplates_Good_YamlExtension -
templates_test.go:443TestExtractTemplateDescription_Good_EmptyComment -
templates_test.go:461TestExtractTemplateDescription_Good_MultipleEmptyComments -
templates_test.go:481TestScanUserTemplates_Good_DefaultDescription
4. Exported Functions Missing Usage-Example Doc Comments
-
Total exported functions missing a usage example marker: 38
-
Note: every function listed below has a doc comment, but none of the comments include an obvious usage example marker such as
Usage:orExample:. -
cmd/vm/cmd_templates.go:150RunFromTemplate(missing usage example) -
cmd/vm/cmd_templates.go:296ParseVarFlags(missing usage example) -
cmd/vm/cmd_vm.go:28AddVMCommands(missing usage example) -
container.go:84GenerateID(missing usage example) -
devenv/config.go:41DefaultConfig(missing usage example) -
devenv/config.go:57ConfigPath(missing usage example) -
devenv/config.go:67LoadConfig(missing usage example) -
devenv/devops.go:31New(missing usage example) -
devenv/devops.go:56ImageName(missing usage example) -
devenv/devops.go:61ImagesDir(missing usage example) -
devenv/devops.go:73ImagePath(missing usage example) -
devenv/devops.go:109DefaultBootOptions(missing usage example) -
devenv/images.go:40NewImageManager(missing usage example) -
devenv/serve.go:75DetectServeCommand(missing usage example) -
devenv/test.go:75DetectTestCommand(missing usage example) -
devenv/test.go:115LoadTestConfig(missing usage example) -
hypervisor.go:50NewQemuHypervisor(missing usage example) -
hypervisor.go:155NewHyperkitHypervisor(missing usage example) -
hypervisor.go:222DetectImageFormat(missing usage example) -
hypervisor.go:239DetectHypervisor(missing usage example) -
hypervisor.go:258GetHypervisor(missing usage example) -
linuxkit.go:25NewLinuxKitManager(missing usage example) -
linuxkit.go:49NewLinuxKitManagerWithHypervisor(missing usage example) -
sources/cdn.go:24NewCDNSource(missing usage example) -
sources/github.go:22NewGitHubSource(missing usage example) -
state.go:22DefaultStateDir(missing usage example) -
state.go:31DefaultStatePath(missing usage example) -
state.go:40DefaultLogsDir(missing usage example) -
state.go:49NewState(missing usage example) -
state.go:58LoadState(missing usage example) -
state.go:157LogPath(missing usage example) -
state.go:166EnsureLogsDir(missing usage example) -
templates.go:47ListTemplates(missing usage example) -
templates.go:52ListTemplatesIter(missing usage example) -
templates.go:75GetTemplate(missing usage example) -
templates.go:107ApplyTemplate(missing usage example) -
templates.go:120ApplyVariables(missing usage example) -
templates.go:169ExtractVariables(missing usage example)
Risk Notes
- Breaking-change surface is moderate because this repo is consumed by two modules:
coreandgo-devops. - The highest-effort part of the upgrade is not the version bump itself; it is the repo-wide removal of banned stdlib imports, especially the current
os/execusage across runtime code and tests. - The doc-comment and test-renaming work is mechanically simple, but it touches many files and will create broad diff surface for downstream review.