From c90c45e44024af550379986e61f784e9822e396e Mon Sep 17 00:00:00 2001 From: Vasek - Tom C Date: Thu, 23 Jul 2026 13:43:54 +0200 Subject: [PATCH 1/4] generate: stage local dependency closure before codegen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before generating each managed module, stage its transitive local dependency closure via ModuleSource.generateLocalDependencies and overlay it onto the workspace, so the module's codegen sees up-to-date dependency bindings — including dependencies owned by other SDKs. The staged dependency codegen is ephemeral: it appears in both the fork's before and after, so it cancels in the merge, leaving only each module's own changes. Signed-off-by: Vasek - Tom C --- go-sdk.dang | 7 ++++++- mod.dang | 5 ++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/go-sdk.dang b/go-sdk.dang index d766828..379279a 100644 --- a/go-sdk.dang +++ b/go-sdk.dang @@ -330,7 +330,12 @@ type GoSdk { modules(ws) .filter { mod => mod.skipGenerate(ws) == false } .reduce(pws.fork) { fork, mod => - fork.merge(pws.moduleSource("/" + mod.rootPath).generate) + # Stage this module's local dependency closure first (leaf-first, possibly + # across SDKs) so its codegen sees up-to-date dependency bindings. The dep + # codegen is ephemeral: it appears in both the fork's before and after, so + # it cancels in the merge, leaving only each module's own changes. + let stagedWs = ws.withChanges(pws.moduleSource("/" + mod.rootPath).core.generateLocalDependencies(ws)) + fork.merge(polyfill.workspace(stagedWs).moduleSource("/" + mod.rootPath).generate) } .changes } diff --git a/mod.dang b/mod.dang index c146bbd..2fdd162 100644 --- a/mod.dang +++ b/mod.dang @@ -62,7 +62,10 @@ type Mod { if (skipGenerate(ws)) { polyfill.workspace(ws).fork.changes } else { - polyfill.workspace(ws).moduleSource("/" + rootPath).generate.changes + # Stage the local dependency closure so this module's codegen sees + # up-to-date dependency bindings before generating it. + let stagedWs = ws.withChanges(polyfill.workspace(ws).moduleSource("/" + rootPath).core.generateLocalDependencies(ws)) + polyfill.workspace(stagedWs).moduleSource("/" + rootPath).generate.changes } } } From cacd5ead3ea494b1e9dc23435a7cd13da7464904 Mon Sep 17 00:00:00 2001 From: Vasek - Tom C Date: Thu, 23 Jul 2026 16:04:43 +0200 Subject: [PATCH 2/4] chore: use polyfill branch with module-generate scoping fix Temporary: point the polyfill dependency at fix/module-generate-scope-to-path (dagger/polyfill#5) so multi-module / workspace-root generate works. Revert to @main once that PR merges. Signed-off-by: Vasek - Tom C --- dagger.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dagger.json b/dagger.json index ee7e4dc..d5e9f66 100644 --- a/dagger.json +++ b/dagger.json @@ -7,8 +7,8 @@ "dependencies": [ { "name": "polyfill", - "source": "github.com/dagger/polyfill@main", - "pin": "b30eb839000fe179e5d0544a9b667b21817b8120" + "source": "github.com/dagger/polyfill@fix/module-generate-scope-to-path", + "pin": "c2a932275f0c14cab5542053250b2fddbad29c12" } ] } From baa40685c81af20f04ce1767ad137d6d42663cb8 Mon Sep 17 00:00:00 2001 From: Vasek - Tom C Date: Thu, 23 Jul 2026 16:22:30 +0200 Subject: [PATCH 3/4] chore: bump polyfill pin to amended commit Signed-off-by: Vasek - Tom C --- dagger.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dagger.json b/dagger.json index d5e9f66..4af1d03 100644 --- a/dagger.json +++ b/dagger.json @@ -8,7 +8,7 @@ { "name": "polyfill", "source": "github.com/dagger/polyfill@fix/module-generate-scope-to-path", - "pin": "c2a932275f0c14cab5542053250b2fddbad29c12" + "pin": "4357bc1ccd2a4621c20a2e4c037c4835632003a6" } ] } From 3c6a4c7e425a1cadb481f31e25f529c2a89bc728 Mon Sep 17 00:00:00 2001 From: Vasek - Tom C Date: Fri, 24 Jul 2026 13:16:28 +0200 Subject: [PATCH 4/4] chore: bump polyfill to merged main dagger/polyfill#5 merged; point the polyfill dependency at @main. Signed-off-by: Vasek - Tom C --- dagger.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dagger.json b/dagger.json index 4af1d03..f9a92fa 100644 --- a/dagger.json +++ b/dagger.json @@ -7,8 +7,8 @@ "dependencies": [ { "name": "polyfill", - "source": "github.com/dagger/polyfill@fix/module-generate-scope-to-path", - "pin": "4357bc1ccd2a4621c20a2e4c037c4835632003a6" + "source": "github.com/dagger/polyfill@main", + "pin": "16627066d1852106320bdc0cfa0e5f901efe5970" } ] }