Skip to content

Module registry hand-over must wait for the full source validation verdict #3878

Description

@rbuergi

Part of #3842, requirement 3: a red or cancelled source build must not become visible to portals.

The shared node-repo-module-pack.yml workflow hands each module bundle to the live registry inside its pack matrix entry, immediately after that module's own suite. A sibling module, the portal-host suite, compile-check or the runtime gate can still fail afterwards. modules-floor artifacts are inputs to those later gates, so adding their jobs as dependencies of the existing pack job creates a cycle.

Evidence from the current workflow:

  • Hand the bundle to the registry runs under inputs.publish && steps.plan.outputs.need_publish == 'true' inside pack.
  • The module-bundle-<module> artifact is uploaded before the hand-over and already supplies downstream compile/runtime checks.
  • Plugins modules-floor and modules-rest enable publishing on main push, schedule and repository dispatch. Their dependencies cover initial validation and platform selection, not the later full-source verdict.
  • The core main-CD caller uses publish: false for its compose artifacts and independently publishes a NodeType/module set through plugins-bake. That separate publication path is outside this early module hand-over fix and remains in No platform pins in module repos — build against the released platform, and be TOLERANT of drift (same major serves) #3842.

Repair contract:

  1. Keep packing, artifact upload and tests available before the full source verdict; move only live-registry hand-over into a downstream shared publication operation.
  2. The caller must provide a positive verdict from every required validation job. Failed, skipped, cancelled, missing and unknown results must prevent every publication request.
  3. Publish the exact validated artifact bytes for the selected source, framework identity, module and version. Refuse missing, substituted or foreign-lane receipts and artifacts. Reuse existing credential scope; no access-control or credential changes are included.
  4. Preserve ledger reuse/coalescing and test ownership. A staged artifact is not a Published ledger record, and a failed hand-over must not be recorded as published.
  5. Exercise both directions: green validation publishes the expected bytes, and a later sibling/source failure leaves the registry untouched even though the module was successfully packed. Mutation tests must detect a missing required dependency or a status-function override.
  6. Carry the core and Plugins caller changes through green review/CI and verify supported production publication before closing this issue.

This issue removes publication before the source validation verdict. Atomic visibility if publication itself fails or is cancelled, all publishers' source provenance, and last-green source selection remain obligations of #3842 and the generation work in #3461. They must not be described as solved by moving this one hand-over step.

Related: Plugins #1583 blocks its bake publisher on the portal-host aggregate; it does not cover this earlier registry hand-over. Core #3876/#3877 repairs HTTP behavior while a publication seal is absent, not whether the producer was entitled to publish that source.

Activity

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