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
Final-main E2E currently tries source-SHA base-image tags and can then fall back to a mutable or locally rebuilt image. It does not first prove that every required base-image publisher succeeded for the most recent applicable base-image input commit in the exact E2E checkout. As a result, final validation can fan out against stale or mixed base images after publication failed.
Current evidence
On 2026-07-22:
Base-image run 29891942278 failed for commit 6b29277260b056b7bb18cf1e0490ad82f4d55c45: OpenClaw and Deep Agents Code published successfully, but Hermes failed.
The two preceding base-image push runs, 29886835260 and 29889945761, also concluded with partial publication failures.
The immediate publisher failures were the same code-ordering regression: curl was invoked before it existed in the slim base image. #7280 already owns the remaining Hermes fix. This issue owns the independent sequencing defect: failed or incomplete publication did not prevent E2E fanout.
Proposed behavior
Add a standalone base-image-publication preflight job before E2E matrix generation that:
Runs only for trusted NVIDIA/NemoClaw main scheduled or manual E2E with an empty controller checkout_sha.
Reads the exact checked-out .github/workflows/base-image.yaml push paths and derives the newest applicable first-parent main commit.
Bounded-polls the Images / Base Images workflow for that exact source SHA.
Requires one trusted main-push run and one successful completed publisher job for each required image: OpenClaw, Hermes, and Deep Agents Code.
Fails closed on missing, failed, cancelled, ambiguous, malformed, or partial publication and reports the expected SHA plus authoritative run URL.
Completes successfully without publication checks for controller-selected PR E2E, preserving its separate trust and image-resolution path.
Gates generate-matrix through an explicit dependency so every downstream fanout is transitively blocked.
Keep the publication wait outside generate-matrix: #7262 gives matrix generation a 10-minute budget, while a base-image publication can legitimately take up to 45 minutes.
fix(images): lock OpenClaw production graph #6830 owns current base-image publisher and OpenClaw lock-input changes. Read publisher paths dynamically from the checked-out workflow; do not modify publisher or resolver files here.
The intended implementation slice is limited to .github/workflows/e2e.yaml, one focused verifier under tools/e2e/, and focused verifier/workflow contract tests. Start from fresh main after perf(ci): shorten main and E2E feedback loops #7262 settles.
Acceptance criteria
Final-main scheduled and manual E2E fanout cannot start until all required base images for the exact applicable source revision are published successfully.
A partial matrix publication blocks fanout; it cannot silently select latest.
Missing, queued, in-progress, failed, cancelled, duplicate, and malformed workflow evidence have deterministic bounded outcomes.
The failure message identifies the expected SHA and links the authoritative base-image run when one exists.
Parent epic: #7140
Summary
Final-main E2E currently tries source-SHA base-image tags and can then fall back to a mutable or locally rebuilt image. It does not first prove that every required base-image publisher succeeded for the most recent applicable base-image input commit in the exact E2E checkout. As a result, final validation can fan out against stale or mixed base images after publication failed.
Current evidence
On 2026-07-22:
6b29277260b056b7bb18cf1e0490ad82f4d55c45: OpenClaw and Deep Agents Code published successfully, but Hermes failed.6d0bc582ab85b11ab688c35aeb4d615151d6ebde.The immediate publisher failures were the same code-ordering regression:
curlwas invoked before it existed in the slim base image. #7280 already owns the remaining Hermes fix. This issue owns the independent sequencing defect: failed or incomplete publication did not prevent E2E fanout.Proposed behavior
Add a standalone
base-image-publicationpreflight job before E2E matrix generation that:NVIDIA/NemoClawmain scheduled or manual E2E with an empty controllercheckout_sha..github/workflows/base-image.yamlpush paths and derives the newest applicable first-parent main commit.Images / Base Imagesworkflow for that exact source SHA.generate-matrixthrough an explicit dependency so every downstream fanout is transitively blocked.Keep the publication wait outside
generate-matrix: #7262 gives matrix generation a 10-minute budget, while a base-image publication can legitimately take up to 45 minutes.Non-overlap and sequencing
spawnSync curl ENOENTpublisher failure. Do not reproduce that fix here..github/workflows/e2e.yaml, one focused verifier undertools/e2e/, and focused verifier/workflow contract tests. Start from freshmainafter perf(ci): shorten main and E2E feedback loops #7262 settles.Acceptance criteria
latest.