You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Finish the bake/gate split: the PR lane and the satellite lane still bake through a mesh #2064
#1763 split BAKE from GATE and moved the platform's own lane (main-cd.yml's publish-bake) onto both halves — PR #2059. Two lanes are deliberately still on the fused, mesh-driven bake, each for a different reason.
1. The PR lane (dotnet-test.yml, doc-gate)
It still runs mw-plugin-test <stage> --allow … --bake-output "$BAKE" for the Doc stage and again for the samples stage. Its own comment states the purpose:
--bake-output here is a SMOKE TEST of the bake stage, NOT a delivery lane (#1725). … it makes a bake-stage regression fail on the PR that causes it rather than in CD.
That is exactly right, and it is now aimed at the wrong code path: CD bakes with compile, so a regression in the compiler-driven bake reaches CD without ever reddening a PR.
Blocked on #2063. The tree baker discovers NodeTypes the gate's own discovery skips (BOM'd .json), so switching the lane today newly gates types absent from .github/samples-gate.allow and reds every PR for a reason that is not the change. Fix #2063 first, let the ratchet absorb what it reveals, then switch the lane to:
Roughly cost-neutral: the gate adopts instead of compiling, so the tree is compiled once either way.
2. The satellite lane (node-repo-publish-bake.yml)
Untouched on purpose, and #1763's own comment says why:
A satellite calls the reusable workflow with its own pinned image, which may predate the verb — that lane needs a version floor or a fallback before it can switch, and switching it blind is how a satellite's bake goes dark without failing.
So it needs, in order:
a way to ask an image whether it has the compile verb (a probe step, or a floor on the platform version the pin resolves to — mw-plugin-test framework-identity is the existing shape for "ask the image a question");
a RED failure when the pinned image is below the floor — never a silent fallback to --bake-output, because a satellite bake that quietly keeps using the mesh is precisely the thing that stayed invisible for months;
then the same two-step as the platform lane.
Why both are worth finishing
Until they are, "the estate bakes without a mesh" is true of one lane out of three, and the two remaining ones are the ones that gate PRs and that feed the satellites' portals.
Stage 1 landed in #2250 (merged). Narrowing to the satellite lane.
Done — the PR lane now bakes with the compiler..github/workflows/dotnet-test.yml no longer uses --bake-output; the plugins, doc and samples gates run the two-step compile … --output + <gate> … --seed, mirroring main-cd.yml:1232/1272. The acceptance is not "the job is green": the log is grepped for the compile-fallback family (no prebuilt bundle, carried no assemblies — compiling instead, could resolve NO artifact, no prebuilt assemblies adopted) and fails on a hit, and the --seed postcondition asserts declared = adoptedwith adopted > 0 — the > 0 being load-bearing, since the postcondition passes vacuously on an empty bake.
Also done — #2063, which was the prerequisite: gate discovery now matches the baker's parser tolerances (BOM and otherwise), so PensionFund reports 5 types where it previously reported 0. The gate had been passing over those types entirely.
What remains here: the satellite lane — .github/workflows/node-repo-publish-bake.yml still bakes through a mesh. Three parts, per the plan:
a capability floor probe (compile --help against the pinned image) that fails RED naming the pin, resolved digest and minimum digest — 🚨 never a fallback to --bake-output, since a satellite bake quietly reverting to the mesh is exactly what stayed invisible for months;
the two-step, replacing :487-551, keeping both steps inside publish-bake (node-repo-gate.yml has no --seed input — do not add one);
"published nothing" must go RED — every publish-bake in the estate is needs:-gated behind gates that can go red and therefore renders a grey skipped, which is indistinguishable from a pass. Education demonstrated this in production: nine consecutive runs, ~10 hours, zero bundles published, nothing red.
🚨 Sequencing constraint that has not changed: adopting the renamed reusable workflow renames the satellites' required-status-check contexts to <caller job> / <name>, and MeshWeaver.Plugins is the one repo with strict: true — a mismatch makes it unmergeable. Platform first, then Plugins (with its protection updated in the same change), then Education → Reinsurance → SocialMedia. Manufacturing is excluded by maintainer decision (2026-08-25).
Two findings from #2250 worth carrying into the satellite work:
Still in flight but not a mesh-bake: MeshWeaver.Plugins#745 extends the bake-reuse to the plugins repo's own lane (an efficiency change; the producer there is already the compiler).
Related open defects that are NOT this issue: #2543 (per-node hubs stop answering mid-bake — a wedge inside the consuming gate mesh, not a producer/consumer split question).
Activity
Merge pull request #2250 from Systemorph/fix/2063-gate-discovery-equa…
rbuergi commentedon Aug 25, 2026
Stage 1 landed in #2250 (merged). Narrowing to the satellite lane.
Done — the PR lane now bakes with the compiler.
.github/workflows/dotnet-test.ymlno longer uses--bake-output; the plugins, doc and samples gates run the two-stepcompile … --output+<gate> … --seed, mirroringmain-cd.yml:1232/1272. The acceptance is not "the job is green": the log is grepped for the compile-fallback family (no prebuilt bundle,carried no assemblies — compiling instead,could resolve NO artifact,no prebuilt assemblies adopted) and fails on a hit, and the--seedpostcondition assertsdeclared = adoptedwithadopted > 0— the> 0being load-bearing, since the postcondition passes vacuously on an empty bake.Also done — #2063, which was the prerequisite: gate discovery now matches the baker's parser tolerances (BOM and otherwise), so
PensionFundreports 5 types where it previously reported 0. The gate had been passing over those types entirely.What remains here: the satellite lane —
.github/workflows/node-repo-publish-bake.ymlstill bakes through a mesh. Three parts, per the plan:compile --helpagainst the pinned image) that fails RED naming the pin, resolved digest and minimum digest — 🚨 never a fallback to--bake-output, since a satellite bake quietly reverting to the mesh is exactly what stayed invisible for months;:487-551, keeping both steps insidepublish-bake(node-repo-gate.ymlhas no--seedinput — do not add one);publish-bakein the estate isneeds:-gated behind gates that can go red and therefore renders a greyskipped, which is indistinguishable from a pass. Education demonstrated this in production: nine consecutive runs, ~10 hours, zero bundles published, nothing red.🚨 Sequencing constraint that has not changed: adopting the renamed reusable workflow renames the satellites' required-status-check contexts to
<caller job> / <name>, and MeshWeaver.Plugins is the one repo withstrict: true— a mismatch makes it unmergeable. Platform first, then Plugins (with its protection updated in the same change), then Education → Reinsurance → SocialMedia. Manufacturing is excluded by maintainer decision (2026-08-25).Two findings from #2250 worth carrying into the satellite work:
.github/samples-gate.allow'sPensionFund idempotenceentry is intermittent debt, not stale — the gate reported it "now passing" on one run and a "new failure" on the next, because whether it fires depends on whether the Currency NodeType has compiled. Do not remove it on a single green run; the underlying defect is Second install rewrites default-valued nodes: default-suppression makes the stored node differ from the authored file, so the unchanged-skip misses #2271.Merge pull request #2456 from Systemorph/ci/node-repo-bake-without-mesh
rbuergi commentedon Aug 28, 2026
Closing — both lanes named by this issue no longer bake through a mesh.
dotnet-test.ymlto the two-stepcompile … --output+<gate> … --seed(recorded in the 2026-08-25 status comment above).node-repo-publish-bake.yml— the sharedworkflow_calllane every node repo (Plugins, Education, Reinsurance, SocialMedia) uses. Verified at HEAD: the workflow's bake step is annotated "THE BAKE — compiler-driven, NO MESH ANYWHERE IN IT (Finish the bake/gate split: the PR lane and the satellite lane still bake through a mesh #2064)" and runsmw-plugin-test … compile /repo --outputfollowed by the gate with--seed /bake; the fused--bake-outputis documented as forbidden in the same file.bake-run-id) — so the published bundles are the very bytes that were gated.Still in flight but not a mesh-bake: MeshWeaver.Plugins#745 extends the bake-reuse to the plugins repo's own lane (an efficiency change; the producer there is already the compiler).
Related open defects that are NOT this issue: #2543 (per-node hubs stop answering mid-bake — a wedge inside the consuming gate mesh, not a producer/consumer split question).