Repository navigation
feat(builder): negotiate immutable environment image bindings - #874
Merged
Merged
Conversation
antoinetoussaint-byte
marked this pull request as ready for review
October 29, 2026 15:47
antoinetoussaint-byte
enabled auto-merge (squash)
October 29, 2026 16:59
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.
Environment image policy cannot currently reach service builders. Add the optional
base-image-bindings/v1contract to the existing BuildCapabilities/Build RPCs: the loaded agent declares roles and recipe variants, and a caller can select immutable replacements. The client refuses missing executor support and incompatible, ambiguous or mutable selections before Build.This is a fix at the contract owner, reusing the existing capability negotiation and recipe flow. The agent renders its recipe; the CLI must not rewrite Dockerfiles. No static agent compatibility roster, global protocol bump, fleet repin, package adaptation or deployment change.
Docs:
docs/build-image-bindings.mdanddocs/agent-contract.mddescribe the contract and its limits. Go and Python bindings regenerated throughcodefly generate proto.Validation: full local
go test ./...passes, focused services/contract race tests pass, and pinnedmake buf-lint buf-breakingpasses. The CLI and go-grpc consumer exercised real builds, image execution, service-over-type selection, input invalidation/reuse and unsupported-variant refusal. The Go hosted six-case image matrix passes on native amd64 and arm64. All Core CI checks pass. Related existing plan: obin-ai/infra-base#1485; this change covers image selection only.Release: bumps
version/info.codefly.yamlto 0.19.18. The existing version-tag workflow will publish v0.19.18 only after the exact merged main commit passes CI. The optional base-image-bindings/v1 capability does not change the global startup/lifecycle protocol.