Delivery group fix/toolchain-majority (mesh-sdk, mesh-delivery, mesh-catalog), one check, one Approve. Issue 1578. Decision: ADR 0584 (accepted 2026-11-01, chosen by the operator): the agreed toolchain of a language is the version a strict majority of build nodes report; a build waits only when no version has a strict majority; a node on another version builds nothing of that language (it declines build and check asks instead of failing them) and is named in the build's Step ("ace sits out: typescript 26.12.1, agreed 26.13.0"), readable through builder_builds. Changes ADR 0477 §2.
Why: on 2026-11-01 ace reported Node.js 26.12.1 and the other three 26.13.0, and no TypeScript module built from about 09:00 (36 modules, gitea among them). Quick fix (pause ace's TypeScript builder or upgrade ace) weighed against the thorough fix (this group): thorough chosen, the second time a version gap stalled builds.
This member: delivery.ToolchainAgreement (strict majority, SittingOut, Wait), AgreedToolchain kept as a wrapper; CheckJob.Toolchain; buildstep askrun declines a build or check ask for another toolchain (*Declining) and the Puller ends it declined instead of refusing it. Tests: the AgreedToolchain tests folded into one table; rows added to existing askrun and pull tests; net test functions -2.
Reviewed-by: reviewerA@shanks at 67354f8e01
Pushed-by: lead-47@shanks
Delivery group fix/toolchain-majority (mesh-sdk, mesh-delivery, mesh-catalog), one check, one Approve. Issue 1578. Decision: ADR 0584 (accepted 2026-11-01, chosen by the operator): the agreed toolchain of a language is the version a strict majority of build nodes report; a build waits only when no version has a strict majority; a node on another version builds nothing of that language (it declines build and check asks instead of failing them) and is named in the build's Step ("ace sits out: typescript 26.12.1, agreed 26.13.0"), readable through builder_builds. Changes ADR 0477 §2.
Why: on 2026-11-01 ace reported Node.js 26.12.1 and the other three 26.13.0, and no TypeScript module built from about 09:00 (36 modules, gitea among them). Quick fix (pause ace's TypeScript builder or upgrade ace) weighed against the thorough fix (this group): thorough chosen, the second time a version gap stalled builds.
This member: delivery.ToolchainAgreement (strict majority, SittingOut, Wait), AgreedToolchain kept as a wrapper; CheckJob.Toolchain; buildstep askrun declines a build or check ask for another toolchain (*Declining) and the Puller ends it declined instead of refusing it. Tests: the AgreedToolchain tests folded into one table; rows added to existing askrun and pull tests; net test functions -2.
Reviewed-by: reviewerA@shanks at 67354f8e019af88ceccf3d042ec4aea35ae89d0a
Pushed-by: lead-47@shanks
https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
One build node on another version stopped every build of the language. The agreed toolchain is now the strict majority's; a tie still waits and names the versions.
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
With the toolchain agreed by majority, a node on the minority version can pull an ask for the agreed one. It now declines it (the issue 890 path) for the asker to put again, so it never fails a build.
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
A check ask named no toolchain, so a node on the minority version could run it and its pass be recorded as run on the agreed one. CheckJob now carries the toolchain; a node on another declines it before it fetches, as for a build ask.
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
Deliverynovox/mesh-sdk@67354f8e019a — merged since 2026-11-01T15:04:09Z
Source — source.main moved to novox/mesh-sdk@621984614d. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
composed together: pass — the checker's verdict at the members' heads (5d22d9ea466d)
Transitions
2026-11-01 14:42 (new) → proposed (announced): novox/mesh-sdk#154's head announced
2026-11-01 14:42 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-11-01 15:04 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-sdk@67354f8e019a` — **merged** since 2026-11-01T15:04:09Z
**Source** — source.main moved to novox/mesh-sdk@621984614dc6. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/toolchain-majority`: novox/mesh-catalog@f06335cf7eff, novox/mesh-delivery@d739516056dd, novox/mesh-sdk@67354f8e019a
- composed together: pass — the checker's verdict at the members' heads (5d22d9ea466d)
**Transitions**
- 2026-11-01 14:42 (new) → proposed (announced): novox/mesh-sdk#154's head announced
- 2026-11-01 14:42 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-11-01 15:04 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delivery group fix/toolchain-majority (mesh-sdk, mesh-delivery, mesh-catalog), one check, one Approve. Issue 1578. Decision: ADR 0584 (accepted 2026-11-01, chosen by the operator): the agreed toolchain of a language is the version a strict majority of build nodes report; a build waits only when no version has a strict majority; a node on another version builds nothing of that language (it declines build and check asks instead of failing them) and is named in the build's Step ("ace sits out: typescript 26.12.1, agreed 26.13.0"), readable through builder_builds. Changes ADR 0477 §2.
Why: on 2026-11-01 ace reported Node.js 26.12.1 and the other three 26.13.0, and no TypeScript module built from about 09:00 (36 modules, gitea among them). Quick fix (pause ace's TypeScript builder or upgrade ace) weighed against the thorough fix (this group): thorough chosen, the second time a version gap stalled builds.
This member: delivery.ToolchainAgreement (strict majority, SittingOut, Wait), AgreedToolchain kept as a wrapper; CheckJob.Toolchain; buildstep askrun declines a build or check ask for another toolchain (*Declining) and the Puller ends it declined instead of refusing it. Tests: the AgreedToolchain tests folded into one table; rows added to existing askrun and pull tests; net test functions -2.
Reviewed-by: reviewerA@shanks at
67354f8e01Pushed-by: lead-47@shanks
https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
Delivery
novox/mesh-sdk@67354f8e019a— merged since 2026-11-01T15:04:09ZSource — source.main moved to novox/mesh-sdk@621984614d. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/toolchain-majority: novox/mesh-catalog@f06335cf7e, novox/mesh-delivery@d739516056, novox/mesh-sdk@67354f8e01Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.