Skip to content

Finish the bake/gate split: the PR lane and the satellite lane still bake through a mesh #2064

Closed

Description

@rbuergi

#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:

mw-plugin-test compile "$STAGE" --output "$BAKE" --allow .github/doc-gate.allow --source-sha "$GITHUB_SHA"
mw-plugin-test         "$STAGE" --seed   "$BAKE" --allow .github/doc-gate.allow

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:

  1. 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");
  2. 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;
  3. 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.

Activity

  1. added a commit that references this issue on Aug 25, 2026
  2. rbuergi commented on Aug 25, 2026

    @rbuergi
    ContributorAuthor

    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 = adopted with 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:

    1. 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;
    2. the two-step, replacing :487-551, keeping both steps inside publish-bake (node-repo-gate.yml has no --seed input — do not add one);
    3. "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:

  3. added a commit that references this issue on Aug 27, 2026
  4. rbuergi commented on Aug 28, 2026

    @rbuergi
    ContributorAuthor

    Closing — both lanes named by this issue no longer bake through a mesh.

    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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions