fix: preserve workspace check scale-out context#13329
Merged
Merged
Conversation
Signed-off-by: Solomon Hykes <solomon@dagger.io>
sipsma
approved these changes
Jun 4, 2026
dagger-codex Bot
pushed a commit
that referenced
this pull request
Jun 5, 2026
Conflict resolution details with original conflict hunks and resolved hunks. 1. Deleted module mega-test vs main never-cache regression Related PRs: beta #11812, main #13298. Original conflict: 1.0-beta deleted the old module mega-test after splitting module coverage, while main added the never-cache object-return regression to the deleted file. ```diff diff --git a/core/integration/module_test.go b/core/integration/module_test.go @@ -7531,6 +7531,24 @@ func (m *Test) ObjsWithNothing() ([]*Test, error) { + +func (ModuleSuite) TestNeverCacheModuleObjectReturn(ctx context.Context, t *testctx.T) { + c := connect(ctx, t) + modGen := modInit(t, c, "go", `package main + +type Test struct{} + +// +cache="never" +func (m *Test) Touch() *Test { + return m +} +`) + out, err := modGen.With(daggerCall("touch")).Stdout(ctx) + require.NoError(t, err) + require.Contains(t, out, "Test@") +} ``` Resolution: keep beta's deleted mega-test because the regression is already ported to beta's split runtime behavior test and runtime cache-control fixture from the previous merge. ```diff diff --git a/core/integration/module_runtime_behavior_test.go b/core/integration/module_runtime_behavior_test.go @@ func (ModuleSuite) TestNeverCacheModuleObjectReturn(ctx context.Context, t *testctx.T) { c := connect(ctx, t) modGen := moduleFixture(t, c, "go/runtime-cache-control") out, err := modGen.With(daggerCall("touch")).Stdout(ctx) require.NoError(t, err) require.Contains(t, out, "Test@") } diff --git a/core/integration/testdata/modules/go/runtime-cache-control/main.go b/core/integration/testdata/modules/go/runtime-cache-control/main.go @@ // +cache="never" func (m *Test) Touch() *Test { return m } ``` 2. Shell helper command path Related PRs: beta #11812, main #13239. Original conflict: main's helper calls `dagger shell`, while beta's helper supports root-shell module paths through `daggerShellAt`. ```diff diff --cc core/integration/shell_test.go @@ func daggerShellAt(modPath, script string) dagger.WithContainerFunc { return func(c *dagger.Container) *dagger.Container { ++<<<<<<< HEAD:core/integration/shell_test.go + execArgs := []string{"dagger", "shell"} + if modPath != "" { + execArgs = append(execArgs, "-m", modPath) + } + return c.WithExec(execArgs, dagger.ContainerWithExecOpts{ ++======= + return c.WithExec([]string{"dagger", "shell"}, dagger.ContainerWithExecOpts{ ++>>>>>>> origin/main:core/integration/module_shell_test.go ``` Resolution: combine both concerns: always invoke `dagger shell`, and append beta's `-m <path>` only when the helper receives a module path. `daggerShellNoMod` already remains `dagger shell -M`. ```diff diff --git a/core/integration/shell_test.go b/core/integration/shell_test.go @@ func daggerShellAt(modPath, script string) dagger.WithContainerFunc { return func(c *dagger.Container) *dagger.Container { execArgs := []string{"dagger", "shell"} if modPath != "" { execArgs = append(execArgs, "-m", modPath) } return c.WithExec(execArgs, dagger.ContainerWithExecOpts{ ``` 3. Release dry-run workspace loading Related PRs: beta #13327, main #13285. Original conflict: beta fixed the cache-persistence release dry-run to load the synthetic repo as a workspace; main still loaded it as an extra module. The synthetic repo root uses workspace-only toolchains, so `-m` fails with the workspace migration error. ```diff diff --cc core/integration/engine_persistence_test.go @@ script := `set +e ++<<<<<<< HEAD +/bin/dagger --progress=plain -W "$MODULE_REF" call release publish --tag "$RELEASE_TAG" --commit "$RELEASE_COMMIT" --dry-run=true markdown > /tmp/publish.log 2>&1 ++======= +/bin/dagger --progress=plain -m "$MODULE_REF" call release publish --tag "$RELEASE_TAG" --commit "$RELEASE_COMMIT" --dry-run=true markdown > /tmp/publish.log 2>&1 ++>>>>>>> origin/main ``` Resolution: keep beta's `-W "$MODULE_REF"` workspace load, preserving the previous CI fix and the dry-run assertions. ```diff diff --git a/core/integration/engine_persistence_test.go b/core/integration/engine_persistence_test.go @@ /bin/dagger --progress=plain -W "$MODULE_REF" call release publish --tag "$RELEASE_TAG" --commit "$RELEASE_COMMIT" --dry-run=true markdown > /tmp/publish.log 2>&1 ``` 4. Module workspace config fields Related PRs: beta #13300, main #13329. Original conflict: main added legacy argument customizations to `Module`, while beta renamed and documented workspace settings from `dagger.toml`. ```diff diff --cc core/module.go @@ ++<<<<<<< HEAD + // Workspace setting values from dagger.toml [modules.<name>.settings]. ++======= + // LegacyArgCustomizations are workspace dagger.json argument customizations + // applied through asModule. + LegacyArgCustomizations []*modules.ModuleConfigArgument + + // Config values from workspace config.toml [modules.<name>.config]. ++>>>>>>> origin/main // Typed map: strings, bools, ints, floats as-is from TOML. // When set, constructor args are resolved from this map first. WorkspaceConfig map[string]any ``` Resolution: keep both fields: main's `LegacyArgCustomizations` is still used by merged `modulesource.go`, and beta's `WorkspaceConfig` comment reflects the current 1.0-beta `dagger.toml` settings model. ```diff diff --git a/core/module.go b/core/module.go @@ // LegacyArgCustomizations are workspace dagger.json argument customizations // applied through asModule. LegacyArgCustomizations []*modules.ModuleConfigArgument // Workspace setting values from dagger.toml [modules.<name>.settings]. // Typed map: strings, bools, ints, floats as-is from TOML. // When set, constructor args are resolved from this map first. WorkspaceConfig map[string]any ``` 5. Dang API rename vs beta closure fix Related PRs: beta #13296, main #13318. Original conflict: main upgraded Dang and renamed class APIs to object APIs; beta used the constructor closure to preserve imports in rehydrated method calls. ```diff diff --cc core/sdk/dang_helpers.go @@ parentConstructor := parentModBase.(*dang.ConstructorFunction) ++<<<<<<< HEAD +parentModType := parentConstructor.ClassType +// Use the class file's captured env so rehydrated method calls keep the +// imports that were in scope when the type was declared. +parentClosure := parentConstructor.Closure ++======= +parentModType := parentConstructor.ObjectType ++>>>>>>> origin/main @@ ++<<<<<<< HEAD +bodyEnv := dang.CreateCompositeEnv(parentModEnv, parentClosure) ++======= +bodyEnv := dang.CreateOverlayValueScope(parentModEnv, env) ++>>>>>>> origin/main ``` Resolution: take main's newer Dang API names and dependency, but keep beta's captured `Closure` for conversion and body evaluation. The newer `ConstructorFunction` still exposes `Closure`, so this preserves both the API upgrade and the import-scope fix. ```diff diff --git a/core/sdk/dang_helpers.go b/core/sdk/dang_helpers.go @@ parentConstructor := parentModBase.(*dang.ConstructorFunction) parentModType := parentConstructor.ObjectType // Use the class file's captured env so rehydrated method calls keep the // imports that were in scope when the type was declared. parentClosure := parentConstructor.Closure @@ parentModEnv := dang.NewObject(parentModType) @@ bodyEnv := dang.CreateOverlayValueScope(parentModEnv, parentClosure) bodyEnv.EnterSelf(parentModEnv) _, err = dang.EvaluateFormsWithPhases(ctx, parentConstructor.ObjectBodyForms, bodyEnv) ``` 6. Dang dependency version Related PRs: beta #13306, main #13318. Original conflict: beta had the older Dang pseudo-version; main had the newer version required by the merged object API names. ```diff diff --cc go.mod @@ ++<<<<<<< HEAD + github.com/vito/dang v0.0.0-20260602175442-56ec0c007a23 ++======= + github.com/vito/dang v0.0.0-20260603200027-0175bae9eb8f ++>>>>>>> origin/main ``` Resolution: take main's newer Dang dependency and matching go.sum entries because the source resolution uses the newer object API. ```diff diff --git a/go.mod b/go.mod @@ github.com/vito/dang v0.0.0-20260603200027-0175bae9eb8f ``` 7. Generated ConfigSchema comments Related PRs: beta #13300, main #13035. Original conflict: beta's generated clients document the expanded workspace config filenames; main's generated clients kept the old file list. Both sides already agreed on the shifted source line. ```diff diff --cc modules/dev/internal/dagger/engine-dev.gen.go @@ // Generate the json schema for a dagger config file ++<<<<<<< HEAD +// Currently supported: "dagger.json", "dagger-module.toml", "dagger.toml", "engine.json" ++======= +// Currently supported: "dagger.json", "engine.json" ++>>>>>>> origin/main func (r *EngineDev) ConfigSchema(filename string) *File { // engine-dev (../../../../toolchains/engine-dev/main.go:362:1) ``` Resolution: keep beta's expanded filename list in every generated engine-dev/dagger-engine client because `toolchains/engine-dev/main.go` supports the workspace config files. ```diff diff --git a/modules/dev/internal/dagger/engine-dev.gen.go b/modules/dev/internal/dagger/engine-dev.gen.go @@ // Generate the json schema for a dagger config file // Currently supported: "dagger.json", "dagger-module.toml", "dagger.toml", "engine.json" func (r *EngineDev) ConfigSchema(filename string) *File { // engine-dev (../../../../toolchains/engine-dev/main.go:362:1) ``` 8. Current docs restructure vs main docs updates Related PRs: beta #11812, main #13320 and #13223. Original conflict: beta's current docs have been restructured and versioned for 1.0-beta, while main still modified or imported content from the older current-docs layout. The modify/delete conflicts were all old current-docs pages such as cookbook pages, old module pages, old quickstarts, old type pages, and old best-practice pages. ```diff diff --git a/docs/current_docs/cookbook/containers.mdx b/docs/current_docs/cookbook/containers.mdx deleted in HEAD, modified in origin/main ``` Resolution: keep beta's current-docs restructure and deletions. Non-conflicting main additions such as versioned docs and static reference assets stay in the merge, but old pre-restructure `current_docs` pages are not reintroduced. ```diff diff --git a/docs/current_docs/cookbook/containers.mdx b/docs/current_docs/cookbook/containers.mdx deleted file mode 100644 ``` 9. Existing 1.0-beta docs pages vs main old imports/links Related PRs: beta #13338, main #13320 and #13223. Original conflict: for pages that still exist on both sides, main tried to import old cookbook partials or link to old `dagger.json`/core-concepts pages, while beta uses current 1.0-beta aliases and workspace-era wording. ```diff diff --cc docs/current_docs/extending/types/container.mdx @@ ++<<<<<<< HEAD:docs/current_docs/extending/types/container.mdx +import ContainerType from "@daggerTypes/_container.mdx"; ++======= +import ContainerType from "../../partials/types/_container.mdx"; +import BuildImageFromDockerfile from '../../partials/cookbook/builds/_image-from-dockerfile.mdx'; ++>>>>>>> origin/main:docs/current_docs/getting-started/types/container.mdx ``` Resolution: keep beta's existing 1.0-beta docs files for those content conflicts, including `@daggerTypes` aliases, workspace/checks links, and `dagger-module.toml` wording. ```diff diff --git a/docs/current_docs/extending/types/container.mdx b/docs/current_docs/extending/types/container.mdx @@ import ContainerType from "@daggerTypes/_container.mdx"; ``` Signed-off-by: Solomon Hykes <solomon@dagger.io>
dagger-codex Bot
pushed a commit
that referenced
this pull request
Jun 6, 2026
Conflict resolution details with original conflict hunks and resolved hunks. 1. Module workspace config fields Related PRs: beta #13300, main #13329. Original conflict: main added legacy argument customizations to `Module`, while beta renamed and documented workspace settings from `dagger.toml`. ```diff diff --cc core/module.go @@ LegacyDefaultPath bool + // LegacyArgCustomizations are workspace dagger.json argument customizations + // applied through asModule. + LegacyArgCustomizations []*modules.ModuleConfigArgument + - // Config values from workspace config.toml [modules.<name>.config]. + // Workspace setting values from dagger.toml [modules.<name>.settings]. // Typed map: strings, bools, ints, floats as-is from TOML. // When set, constructor args are resolved from this map first. WorkspaceConfig map[string]any ``` Resolution: keep both fields: main's `LegacyArgCustomizations` is still used by merged `modulesource.go`, and beta's `WorkspaceConfig` comment reflects the current 1.0-beta `dagger.toml` settings model. ```diff diff --git a/core/module.go b/core/module.go @@ LegacyDefaultPath bool // LegacyArgCustomizations are workspace dagger.json argument customizations // applied through asModule. LegacyArgCustomizations []*modules.ModuleConfigArgument // Workspace setting values from dagger.toml [modules.<name>.settings]. // Typed map: strings, bools, ints, floats as-is from TOML. // When set, constructor args are resolved from this map first. WorkspaceConfig map[string]any ``` 2. Dang API rename vs beta closure fix Related PRs: beta #13296, main #13318. Original conflict: main upgraded Dang and renamed class APIs to object APIs; beta used the constructor closure to preserve imports in rehydrated method calls. ```diff diff --cc core/sdk/dang_helpers.go @@ parentConstructor := parentModBase.(*dang.ConstructorFunction) +<<<<<<< HEAD + parentModType := parentConstructor.ClassType + // Use the class file's captured env so rehydrated method calls keep the + // imports that were in scope when the type was declared. + parentClosure := parentConstructor.Closure +======= + parentModType := parentConstructor.ObjectType +>>>>>>> origin/main @@ +<<<<<<< HEAD + bodyEnv := dang.CreateCompositeEnv(parentModEnv, parentClosure) +======= + bodyEnv := dang.CreateOverlayValueScope(parentModEnv, env) +>>>>>>> origin/main bodyEnv.EnterSelf(parentModEnv) - _, err = dang.EvaluateFormsWithPhases(ctx, parentConstructor.ClassBodyForms, bodyEnv) + _, err = dang.EvaluateFormsWithPhases(ctx, parentConstructor.ObjectBodyForms, bodyEnv) ``` Resolution: take main's newer Dang API names, but keep beta's captured `Closure` for conversion and body evaluation. ```diff diff --git a/core/sdk/dang_helpers.go b/core/sdk/dang_helpers.go @@ parentConstructor := parentModBase.(*dang.ConstructorFunction) parentModType := parentConstructor.ObjectType // Use the class file's captured env so rehydrated method calls keep the // imports that were in scope when the type was declared. parentClosure := parentConstructor.Closure @@ bodyEnv := dang.CreateOverlayValueScope(parentModEnv, parentClosure) bodyEnv.EnterSelf(parentModEnv) _, err = dang.EvaluateFormsWithPhases(ctx, parentConstructor.ObjectBodyForms, bodyEnv) ``` 3. Current docs restructure vs main docs updates Related PRs: beta #11812, main #13320 and #13223. Original conflict: beta's current docs have been restructured and versioned for 1.0-beta, while main still modified or imported content from the older current-docs layout. The modify/delete conflicts were all old current-docs pages such as cookbook pages, old module pages, old quickstarts, old type pages, and old best-practice pages. ```diff diff --git a/docs/current_docs/cookbook/containers.mdx b/docs/current_docs/cookbook/containers.mdx deleted in HEAD, modified in origin/main ``` Resolution: keep beta's current-docs restructure and deletions. Non-conflicting main additions such as versioned docs and static reference assets stay in the merge, but old pre-restructure `current_docs` pages are not reintroduced. ```diff diff --git a/docs/current_docs/cookbook/containers.mdx b/docs/current_docs/cookbook/containers.mdx deleted file mode 100644 ``` 4. Existing 1.0-beta docs pages vs main old imports/links Related PRs: beta #13338, main #13320 and #13223. Original conflict: for pages that still exist on both sides, main tried to import old cookbook partials or link to old `dagger.json`/core-concepts pages, while beta uses current 1.0-beta aliases and workspace-era wording. ```diff diff --cc docs/current_docs/extending/types/container.mdx @@ +<<<<<<< HEAD:docs/current_docs/extending/types/container.mdx +import ContainerType from "@daggerTypes/_container.mdx"; +======= +import ContainerType from "../../partials/types/_container.mdx"; +import BuildImageFromDockerfile from '../../partials/cookbook/builds/_image-from-dockerfile.mdx'; +>>>>>>> origin/main:docs/current_docs/getting-started/types/container.mdx ``` Resolution: keep beta's existing 1.0-beta docs files for those content conflicts, including `@daggerTypes` aliases, workspace/checks links, and `dagger-module.toml` wording. ```diff diff --git a/docs/current_docs/extending/types/container.mdx b/docs/current_docs/extending/types/container.mdx @@ import ContainerType from "@daggerTypes/_container.mdx"; ``` Signed-off-by: Solomon Hykes <solomon@dagger.io>
dagger-codex Bot
pushed a commit
that referenced
this pull request
Jun 6, 2026
Conflict resolution details with original conflict hunks and resolved hunks. 1. Module workspace config fields Related PRs: beta #13300, main #13329. Original conflict: main added legacy argument customizations to `Module`, while beta renamed and documented workspace settings from `dagger.toml`. ```diff diff --cc core/module.go @@ LegacyDefaultPath bool + // LegacyArgCustomizations are workspace dagger.json argument customizations + // applied through asModule. + LegacyArgCustomizations []*modules.ModuleConfigArgument + - // Config values from workspace config.toml [modules.<name>.config]. + // Workspace setting values from dagger.toml [modules.<name>.settings]. // Typed map: strings, bools, ints, floats as-is from TOML. // When set, constructor args are resolved from this map first. WorkspaceConfig map[string]any ``` Resolution: keep both fields. Main's `LegacyArgCustomizations` is still used by merged `modulesource.go`, and beta's `WorkspaceConfig` comment reflects the current 1.0-beta `dagger.toml` settings model. ```diff diff --git a/core/module.go b/core/module.go @@ LegacyDefaultPath bool // LegacyArgCustomizations are workspace dagger.json argument customizations // applied through asModule. LegacyArgCustomizations []*modules.ModuleConfigArgument // Workspace setting values from dagger.toml [modules.<name>.settings]. // Typed map: strings, bools, ints, floats as-is from TOML. // When set, constructor args are resolved from this map first. WorkspaceConfig map[string]any ``` 2. Dang API rename vs beta closure fix Related PRs: beta #13296, main #13318. Original conflict: main upgraded Dang and renamed class APIs to object APIs; beta used the constructor closure to preserve imports in rehydrated method calls. ```diff diff --cc core/sdk/dang_helpers.go @@ parentConstructor := parentModBase.(*dang.ConstructorFunction) +<<<<<<< HEAD + parentModType := parentConstructor.ClassType + // Use the class file's captured env so rehydrated method calls keep the + // imports that were in scope when the type was declared. + parentClosure := parentConstructor.Closure +======= + parentModType := parentConstructor.ObjectType +>>>>>>> origin/main @@ +<<<<<<< HEAD + bodyEnv := dang.CreateCompositeEnv(parentModEnv, parentClosure) +======= + bodyEnv := dang.CreateOverlayValueScope(parentModEnv, env) +>>>>>>> origin/main bodyEnv.EnterSelf(parentModEnv) - _, err = dang.EvaluateFormsWithPhases(ctx, parentConstructor.ClassBodyForms, bodyEnv) + _, err = dang.EvaluateFormsWithPhases(ctx, parentConstructor.ObjectBodyForms, bodyEnv) ``` Resolution: take main's newer Dang API names, but keep beta's captured `Closure` for conversion and body evaluation. ```diff diff --git a/core/sdk/dang_helpers.go b/core/sdk/dang_helpers.go @@ parentConstructor := parentModBase.(*dang.ConstructorFunction) parentModType := parentConstructor.ObjectType // Use the class file's captured env so rehydrated method calls keep the // imports that were in scope when the type was declared. parentClosure := parentConstructor.Closure @@ bodyEnv := dang.CreateOverlayValueScope(parentModEnv, parentClosure) bodyEnv.EnterSelf(parentModEnv) _, err = dang.EvaluateFormsWithPhases(ctx, parentConstructor.ObjectBodyForms, bodyEnv) ``` 3. Current docs promotion vs beta current-docs surface Related PRs: beta #13338, main #13345. Original conflict: main promoted 1.0-beta docs into `current_docs`, while beta already had the active 1.0-beta current-docs surface with beta links and `dagger.toml` workspace wording. ```diff diff --cc docs/current_docs/adopting/workspace-setup.mdx @@ +<<<<<<< HEAD +You've seen Dagger work on [hello-dagger](/quickstart). Now set it up on your own project. +======= +You've seen Dagger work on [hello-dagger](../getting-started/quickstart.mdx). Now set it up on your own project. +>>>>>>> origin/main @@ +<<<<<<< HEAD +`dagger mod install` creates a workspace configuration (`dagger.toml`) if needed and adds the selected module. +======= +`dagger mod install` creates a workspace configuration (`.dagger/config.toml`) if needed and adds the selected module. +>>>>>>> origin/main ``` Resolution: keep the previously resolved beta/current-docs tree for `docs/current_docs` and `docs/sidebars.ts`. That preserves the current 1.0-beta links, aliases, and `dagger.toml` terminology while still accepting main's non-current docs payload. ```diff diff --git a/docs/current_docs/adopting/workspace-setup.mdx b/docs/current_docs/adopting/workspace-setup.mdx @@ You've seen Dagger work on [hello-dagger](/quickstart). Now set it up on your own project. @@ `dagger mod install` creates a workspace configuration (`dagger.toml`) if needed and adds the selected module. ``` 4. Versioned docs archive vs beta docs deletions and test-fixture moves Related PRs: beta #13217 and #13338, main #13345. Original conflict: main archived old current docs under `docs/versioned_docs`, while beta had deleted those old current-docs pages or moved some snippets into integration test fixtures. ```diff diff --cc docs/current_docs/getting-started/ci-integrations/github-actions.mdx @@ +<<<<<<< HEAD +deleted in 1.0-beta current docs +======= +renamed to docs/versioned_docs/version-0.21.4/getting-started/ci-integrations/github-actions.mdx +>>>>>>> origin/main diff --cc docs/current_docs/cookbook/snippets/secret-variable/java/.gitignore @@ +<<<<<<< HEAD +renamed to core/integration/testdata/modules/java/path-context-git-04/.gitignore +======= +renamed to docs/versioned_docs/version-0.16.3/api/snippets/functions/arguments-array/java/.gitignore +>>>>>>> origin/main ``` Resolution: keep beta's current-docs deletions and integration test fixture moves, and keep main's versioned docs/archive files under `docs/versioned_docs`. ```diff diff --git a/core/integration/testdata/modules/java/path-context-git-04/.gitignore b/core/integration/testdata/modules/java/path-context-git-04/.gitignore @@ +# beta integration fixture path remains diff --git a/docs/versioned_docs/version-0.21.4/getting-started/ci-integrations/github-actions.mdx b/docs/versioned_docs/version-0.21.4/getting-started/ci-integrations/github-actions.mdx @@ +# main versioned docs archive path remains ``` ## Notes - No separate `dagger generate -y` commit was added for this fresh merge. Current `origin/main` already includes the generated outputs that should be represented by the merge tree. Signed-off-by: Solomon Hykes <solomon@dagger.io>
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.
What
Fixes
dagger check --scale-outfor workspace checks and generated checks that are executed in a remote per-module session.Why
The current CI failures are the intersection of a few earlier changes:
go:generate-dagger-runtimesandtest-split:test-cli-engine.Module.check/Module.generatorusingnode.PathString().dagger check --generate, so CI now runs generated checks likego:generate-dagger-runtimesthrough the workspace check tree.ci:bootstrapwas fixed/rerun.Example failing trace from the broken
--scale-outpath before this fix: https://dagger.cloud/dagger/traces/0487042a5119c63599a8efa19877e611 (go:generate-dagger-runtimesfails withgenerator "go:generate-dagger-runtimes" not found in module "go").Scale-out first loads the specific module remotely, then asks that loaded module to run a check/generator. Once the module has been loaded directly, the remote lookup name must be module-local. Passing
go:generate-dagger-runtimesinto the loadedgomodule fails because the generator is namedgenerate-dagger-runtimesthere. Same fortest-split:test-cli-engine, which istest-cli-engineinside thetest-splitmodule.There was a second scale-out-only failure in
golang:check: remote module reconstruction dropped the workspaceasModulecontext/customizations, including theselectModule = "e2e/*"default. That caused thegithub.com/dagger/gomodule to fail initialization before the check could run.Changes
Module.checkandModule.generatorduring scale-out.asModuleoptions when reconstructing the module for scale-out: name override, legacy default-path mode, default-path context source, workspace config defaults, dotenv default behavior, and legacy argument customizations.Modulevalues so scale-out can replay them later.Test
Per
skills/engine-dev-testing/SKILL.md, engine changes should be tested through the Daggerengine-devharness, not by runninggo test ./coredirectly.Validated on this branch:
Result: passed at
9024cbbd740bed0727a03f64a0a8578c46e87312.Trace: https://dagger.cloud/dagger/traces/b6a3eeb1d01c4803e2acb95d16034733
Useful live repro/verification commands for the CI path, once a dev engine from this branch is available:
Note
This is intentionally limited to the scale-out execution path. It does not change check discovery, workspace display names, or local check/generator execution.