--- status: located opened: 2026-10-03 located-in: - mesh-controller fixed-by: amended-design: --- # 211 — A bundle is built in the same tier as the toolchain it is compiled in, against the old toolchain ## What was observed 2026-10-03, merging a runtime change that needed a new SDK release. The SDK was published first; then the merge of the tools repository planned two tiers, and the first held both the toolchain images and the runtime's own bundle: ``` > tier 0 mesh-tools asked node-tools built from 8e30ea9f ``` The bundle was built while its toolchain image was still being built. A TypeScript bundle's dependencies are copied from the toolchain image it is compiled in ([design 38](../../03-DESIGN/01-to-be/38-building-the-operators-machine.md) WP3), so this one was compiled and packed against the toolchain as it stood before the merge — carrying the old SDK — and was recorded as built from the new commit. ## Why it matters beyond this instance Every bundle compiled by a toolchain depends on the module that publishes that toolchain, and the planner does not know it: a manifest names its toolchain by `language`, not in `build.on`, so the dependency is implicit and the tiers are computed without it. Whenever a change touches the toolchain and a bundle in one merge — or the toolchain's own repository holds a bundle, as this one does — the bundle is built against the previous toolchain and reported current. Nothing fails; the bundle simply carries yesterday's dependencies under today's commit. ## Diagnosis Owner mesh-controller: the planner orders a merge's modules by `build.on`; the builder's toolchain for a bundle (`ToolchainFor(language)`: the module and artifact it is compiled in) is not part of that order. **Fix direction:** the planner treats a bundle's toolchain as a `build.on` it did not have to write — a bundle of language L depends on the module that publishes L's toolchain — so the bundle lands in the tier after it. A test: a merge touching the toolchain module and a TypeScript bundle plans the bundle one tier later. Worked around on the day by building the bundle again once the toolchain was built.