Skip to content

main-cd: plugins-bake fails with CS0234 since MeshWeaver.Maps left the platform — no plugins publication sealed since 2026-09-01T06:43Z #3069

Closed

Description

@sierragolflima

Summary

The plugins-bake job in main-cd.yml terminates with a non-zero exit status on every
platform build whose commit contains e7f88b566. No plugins publication has been sealed
for any framework identity resolved from an image built since then. The most recent sealed
publication is identity sd64a09253f0720ffe02e2e5ccc255776, written 2026-09-01T06:43:41Z
by run 33475049052.

Every other leg of CD succeeds. From run 33587509969:

LEGS: preflight=success portal-image=success migration-image=success
      plugin-test-image=success promote=success publish-bake=success
      notify-platform-update=success verify-images=success
      plugins-modules=success plugins-bake-image=success
      plugins-bake=failure notify-dependents=skipped

Failure

Four node sources in MeshWeaver.Plugins fail to compile:

RED AppleMaps/Gallery
RED GoogleMaps/Gallery
RED OpenStreetMap/Gallery
RED Cornerstone/Pricing

CS0234: The type or namespace name 'Maps' does not exist in the namespace 'MeshWeaver'
CS0246: MapControl / MapOptions / LatLng / MapMarker / MapCircle could not be found

Confirmed on runs 33585729083 (2026-09-02T03:05Z), 33586021199 (03:10Z) and
33587509969 (03:33Z), all on platform commit 71869075f.

Cause

  1. MeshWeaver.Maps was removed from this repository in e7f88b566 (author
    2026-09-01T08:01:19Z, "refactor(maps,cornerstone): the map control and its one gated
    consumer leave"). src/MeshWeaver.Maps/ now holds no tracked source.
  2. It was added to MeshWeaver.Plugins in 98f944a8 ("feat(indexing,maps): the indexing
    pipeline and the map control move in").
  3. plugins-bake (main-cd.yml:2217) compiles the Plugins node sources inside
    mw-plugin-test. The reference assembly set available to that compilation is the
    assemblies shipped in the image plus the module bundles named by module-artifacts,
    currently module-bundle-MeshWeaver.{AI,Markdown.Collaboration}.
  4. After (1), MeshWeaver.Maps is in neither. Cornerstone/Pricing is the "one gated
    consumer" named in the subject of e7f88b566; the three gallery nodes bind the map
    control types directly.

Why MeshWeaver.Plugins CI does not detect this

MeshWeaver.Plugins pins mw-plugin-test by digest at core fe7166c (2026-08-30), which
predates e7f88b566 and still ships MeshWeaver.Maps. Its Compile every NodeType (vs core) gate therefore passes. This is the condition described in that repository's
.github/workflows/ci.yml:31: the pin caps what the gates can observe.

Impact

  1. No consumer can adopt a plugins publication for any identity newer than
    sd64a09253f0720ffe02e2e5ccc255776.
  2. Satellite repositories that seed their upstream from the sealed publication cannot move
    their pin past that identity. e2e/mesh/fetch-upstream.sh terminates with exit status 1
    when the publication for the resolved identity is absent, and provides no option to
    compile the upstream from source. MeshWeaver.Education#246 is one such consumer.
  3. notify-dependents is skipped on every affected run, so the release wave does not reach
    dependent repositories.

Suggested resolution

Either:

  1. Produce a module bundle for MeshWeaver.Maps in MeshWeaver.Plugins and add it to
    module-artifacts in main-cd.yml:2217, and to the corresponding input of that
    repository's own publish-bake; or
  2. Retain MeshWeaver.Maps in the platform image closure.

Option 1 is consistent with the direction of e7f88b566; option 2 reverses it.

Separate, unrelated failure in the same job

Between 2026-09-01T06:33Z and 07:54Z plugins-bake also failed on commits that predate
e7f88b566 (runs 33478101112, 33478995085, 33482171187), with Store/Installer reporting
compile=Ok render=ok tests=FAILED. That is a different defect and is not covered here.

Activity

  1. rbuergi commented on Sep 2, 2026

    @rbuergi
    Contributor

    The predicted red, confirmed — and explicitly NOT a verdict on #3071.

    CD run 33606528599 reached the seal at ~09:0x and failed exactly as forecast:

    Bake (compiler --output), then gate a mesh against it (--seed)   FAILED
    CS0234 Error (line 33): The type or namespace name 'Maps' does not exist in the namespace 'MeshWeaver'
    CS0234 Error (line 53): …
    CS0234 Error (line 79): …
    

    Ten occurrences across the affected galleries, then exit 1.

    🚨 Read the built commit, not the run's head. That run built 1b044e5, which predates #3071 (19035c1ea, merged 08:31:56). Its bake therefore ran the OLD lane — compiling against the tester image's /app, which has no MeshWeaver.Maps — so this failure is the bug reproducing, not the fix failing. A run's head_sha is the trigger ref and is never a claim about what it built; conflating the two is what cost #3022 a reopen earlier today.

    The acceptance is still outstanding. It is the first CD run that publishes a commit at or after 19035c1ea, where #3071 makes the bake and its gate compile against the portal image's /app (the reference set) with the tester supplying only the CLI.

    Two attempts have not produced it yet, both for reasons unrelated to the fix:

    main's required check has since completed, and no PRs are queued behind it, so the next push-path or reconcile run should publish and produce the verdict.

  2. rbuergi commented on Sep 2, 2026

    @rbuergi
    Contributor

    Fixed — the acceptance run sealed green. #3071's lane works.

    CD run 33610520524, which built 17ee6d9f (after #3071's 19035c1ea), completed success with the whole chain green:

    success  Promote: tag the full set (all-or-nothing)
    success  Bake platform content in the shipped image + publish (linux-x64)
    success  Plugins: bake + seal the publication for this identity
    

    The decisive steps inside the seal are the ones #3071 introduced, and the one that used to fail:

    success  Resolve the platform image (the reference set, the identity, the …)
    success  Pull the tester and the platform image and extract their /app
    success  Resolve the framework identity this bake will target — the PORTAL …
    success  Compose the gate host (the portal's /app + the tester CLI)
    success  Bake (compiler --output), then gate a mesh against it (--seed)   ← was CS0234
    success  Publish bundles to every portal target
    

    And it genuinely published rather than no-opping:

    sealed: …/prebuilt-bundles/sd245cf578b98012064a52e3b3bbb19f1/plugins/_complete
            (36 bundle(s), source 3993c83fa56c87e36428bef7ab41e1d42e3fa802)
    bake published: identity=sd245cf578b98012064a52e3b3bbb19f1 arch=linux-x64
            source=plugins bundles=36 targets-published=2
    

    Nothing to bake (this content is already sealed for this identity) was skipped, so this was a real bake, not a re-assertion of an existing seal.

    Why it works

    MeshWeaver.Maps is a MeshWeaver.Plugins project referenced by Memex.Portal.Gui, so it exists in the portal image and nowhere else. The old lane compiled the content inside the tester image, whose /app never carried it — hence CS0234 on the galleries. #3071 composes the gate host from the portal's /app (the reference set) with the tester supplying only the CLI, so the assembly is present at compile time.

    One thing this does NOT mean

    The seal proves the bake now compiles against the image that carries Maps. It does not mean Maps is riding as a module. platform-shipped.txt still lists MeshWeaver.Maps, while core dropped the projects in #2941 — the halfway state that file's own header forbids ("Step 3 must land with step 2, not after it"). That remains MeshWeaver.Plugins#1061 step 3, and the 409 hazard its body describes is still live for whoever takes it.

    Also worth noting for the next reader: the earlier red on run 33606528599 was not a verdict on #3071 — that run built 1b044e5, which predates it, and therefore ran the old lane. A CD run's head_sha is the trigger ref, never a claim about what it built.

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