homebrew: research builtin bottle publishing vs custom publish path#823
Draft
brandonpayton wants to merge 1 commit into
Draft
homebrew: research builtin bottle publishing vs custom publish path#823brandonpayton wants to merge 1 commit into
brandonpayton wants to merge 1 commit into
Conversation
Design/research artifact for kd-1i0u (blocks kd-1mr homebrew-all). Compares Homebrew's builtin bottle automation (brew test-bot / pr-pull / pr-upload, GHCR OCI layout) against Kandelo's as-built custom publish path. Finding: the custom path already uses Homebrew's builtin bottle primitives (install --build-bottle, test, bottle --json/--merge); its orchestration, state-locked tap commit, sidecars, VFS/gallery gating, cache-key skip, and bottles-abi-v<N> release assets have no builtin equivalent and fit Kandelo's cross-compiled-Wasm + push-to-main + VFS-consumer model. The one divergence worth converging is the GHCR upload layout: oras push is blob-addressable for the VFS fetcher but not the native version-tagged OCI layout a stock guest brew install resolves. Recommends keeping the custom path and adopting brew pr-upload --upload-only (or emitting a version-tagged OCI index) only when guest brew install becomes a goal; documents the latent blocker. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Purpose
Design/research artifact for kd-1i0u (blocks umbrella convoy kd-1mr, initiative
homebrew-all). Before thehomebrew-allfan-out multiplies the publish surface across ~73 packages, decide whether Kandelo should keep building its own bottle publishing automation, adopt Homebrew's builtin automation (brew test-bot/brew pr-pull/brew pr-upload), or converge on a hybrid.Docs-only. No runtime, ABI, package-archive, or code change.
Deliverable
docs/plans/2026-07-01-homebrew-builtin-vs-custom-bottle-publishing-research.mdPosition
Keep the custom path for orchestration, tap commit, and sidecars. Adopt one builtin — the GHCR upload layout — and only when guest
brew installbecomes a goal. Do not adoptbrew test-botorbrew pr-pull.brew install --build-bottle,brew test,brew bottle --json/--merge). What it wraps around them — matrix planning withcache_key_shaskip, sidecar generation/validation, VFS/gallery gating, last-green fallback, state-locked tap commits,bottles-abi-v<N>release assets — has no Homebrew builtin equivalent and fits Kandelo's cross-compiled-Wasm + push-to-main+ VFS-consumer model.brew test-bot/pr-pullassume (1) the CI runner's OS/arch is the bottle target, (2) bottles are merged from PRs, (3) the only metadata is thebottle doblock. Kandelo satisfies none of these; bending them costs more than it saves.oras pushproduces a blob-addressable upload that Kandelo's VFS fetcher reads, but it is not Homebrew's native OCI layout (manifest tagged by formula version). A stock guestbrew installagainst the same GHCRroot_urlcannot resolve it.brew pr-upload --upload-onlyproduces the native layout from the same locally-built bottle bytes — the low-risk convergence point, staged behind a real guest-install trigger.Review
Review gauntlet (6 lenses) recorded as a dated note on bead kd-1i0u.
🤖 Generated with Claude Code