A bundle stands on the toolchain it is compiled in (hq issue 211) #243

Closed
mesh-admin wants to merge 1 commits from fix/issue-211-a-bundle-stands-on-its-toolchain into main
Contributor

hq issue 211. A manifest names its toolchain by language, not in build.on, and bundle builds record no "built against" for the toolchain image, so the dependency relation had no edge from a bundle to the module publishing its toolchain. A merge moving both (mesh-tools: the images and node-tools) planned them in one tier, and node-tools was built against the old toolchain (old SDK) while recorded as built from the new commit.

Fix: dependenciesOf adds a stands-on edge from every module with a bundle artifact to ToolchainFor(language).Base (mesh-tools for TypeScript, mesh-tools-go for Go, …), read from the manifest so it holds before any build recorded anything. Consequence, intended: a toolchain merge rebuilds every bundle compiled in it, a tier later — which a toolchain carrying a bundle's dependencies requires (see also issue 212).

Tests: a TypeScript bundle stands on mesh-tools and a Go bundle on mesh-tools-go, an image on neither; a merge moving the toolchain and a bundle plans them in two tiers. Full suite passes (in sibling worktrees at origin/main).

hq issue 211. A manifest names its toolchain by `language`, not in `build.on`, and bundle builds record no "built against" for the toolchain image, so the dependency relation had no edge from a bundle to the module publishing its toolchain. A merge moving both (mesh-tools: the images and node-tools) planned them in one tier, and node-tools was built against the old toolchain (old SDK) while recorded as built from the new commit. Fix: `dependenciesOf` adds a `stands-on` edge from every module with a `bundle` artifact to `ToolchainFor(language).Base` (mesh-tools for TypeScript, mesh-tools-go for Go, …), read from the manifest so it holds before any build recorded anything. Consequence, intended: a toolchain merge rebuilds every bundle compiled in it, a tier later — which a toolchain carrying a bundle's dependencies requires (see also issue 212). Tests: a TypeScript bundle stands on mesh-tools and a Go bundle on mesh-tools-go, an image on neither; a merge moving the toolchain and a bundle plans them in two tiers. Full suite passes (in sibling worktrees at origin/main).
mesh-admin added 1 commit 2026-10-03 20:20:03 +00:00
A manifest names its toolchain by language, not in build.on, so the planner did not know a bundle
depends on the module that publishes its toolchain and built the two in one tier: the bundle
against the old toolchain, recorded as built from the new commit. The edge is read from the
manifest, so it holds before any build recorded it, and a toolchain that moves rebuilds every
bundle compiled in it.
mesh-admin closed this pull request 2026-10-03 21:16:14 +00:00

Pull request closed

Please reopen this pull request to perform a merge.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#243