ci(parity): establish BuildKit as an explicit precondition of the parity lane#369
Open
pofallon wants to merge 1 commit into
Open
ci(parity): establish BuildKit as an explicit precondition of the parity lane#369pofallon wants to merge 1 commit into
pofallon wants to merge 1 commit into
Conversation
…ity lane Lands the buildx setup + verification step BEFORE the runner starts depending on it, so the runner change is never the thing that reddens the lane. Declarative cases with a `build` operation need BuildKit. The GitHub runner ships buildx today, so this is mostly an assertion — which is the point. The alternative was an outcome-conditional assertion inside the case data, tolerating "succeeded OR failed" because BuildKit's presence was unknown, and that shape was nearly vacuous: every one of those invocations passes `--output-format json`, and deacon's JSON ERROR document also contains `"outcome"`, so the assertion held either way. Establishing the precondition here — and checking it in the harness for local runs, which follows — dissolves the need for that assertion shape entirely rather than arguing about how to express it. The verify step bootstraps the builder and fails loud, so a missing builder cannot surface later as a `build` case reporting a divergence that is really a missing builder. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017UCGzJEFZd85HJqz1Wx2kE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Lands the buildx setup + verification step before the runner starts depending on it, so the runner change is never the thing that reddens the lane. First of step 7.
Why a precondition instead of a cleverer assertion
Declarative cases with a
buildoperation need BuildKit. Without a precondition, the only way to express those cases was an outcome-conditional assertion — tolerating "succeeded OR failed" because BuildKit's presence was unknown.That shape was nearly vacuous. Every one of those invocations passes
--output-format json, and deacon's JSON error document also contains"outcome"— so the assertion held whichever way the build went. Establishing the precondition dissolves the need for that assertion shape entirely, rather than arguing about how to express it.What the steps do
docker/setup-buildx-action@v3docker buildx version+inspect --bootstrapbuildcase reporting a divergence that is really a missing builderThe matching in-harness check (
prereq::require_buildkit(), called for any case with abuildop) follows in the next PR, so local runs get the same guarantee.Verification
parity_registry_check10/10 pass, includingno_surface_globs_a_removed_path— the guard added in 023 T116 after two workflow steps silently globbed a removed path and kept exiting 0.This PR touches only
.github/workflows/parity.yml; the lane's existing redness (the 51chan-structured-outputT113 cases) is unchanged.🤖 Generated with Claude Code
https://claude.ai/code/session_017UCGzJEFZd85HJqz1Wx2kE