Skip to content

Homebrew: Publish deterministic lazy shell layers#1023

Draft
brandonpayton wants to merge 1 commit into
mainfrom
codex/homebrew-publish-lazy-shell-layer
Draft

Homebrew: Publish deterministic lazy shell layers#1023
brandonpayton wants to merge 1 commit into
mainfrom
codex/homebrew-publish-lazy-shell-layer

Conversation

@brandonpayton

Copy link
Copy Markdown
Member

Why

Homebrew bottles are GHCR gzip tar artifacts, which are not a practical browser layer transport: direct browser fetching is constrained by registry authentication and CORS, while publishing one complete VFS image per language would duplicate the Kandelo base image.

This PR publishes one browser-fetchable ZIP containing the exact dependency closure selected by required Homebrew VFS acceptance. The ZIP is derived from the same dependency-first plan, verified bottle bytes, and reviewed link manifests as the eager VFS image.

What changes

  • Build a deterministic kandelo-homebrew-shell-layer.zip from a fresh empty filesystem, so the layer cannot accidentally include files from the platform base image.
  • Publish a separate kandelo-homebrew-shell-layer.json descriptor that binds package provenance, the source VFS digest, every ZIP entry, and the immutable release URLs.
  • Validate path safety, entry count, a 256 MiB uncompressed ceiling, POSIX modes, symlink targets, canonical timestamps and ordering, ZIP CRCs, and archive digest before publication.
  • Extend immutable release publication and anonymous readback from five assets to seven.
  • Raise required acceptance filesystem capacity to 256 MiB for a combined Perl, Python plus zlib, and Erlang proof closure.

Deliberate scope boundary

This is the publisher half only. It does not register the ZIP with the browser runtime, does not add language-specific gallery images, and does not claim these packages are available in the default shell yet. Runtime integrity checking and lazy mounting belong in the consumer follow-up.

Validation

  • bash scripts/dev-shell.sh bash scripts/test-homebrew-publish-workflow.sh
  • bash scripts/dev-shell.sh bash scripts/test-homebrew-tap-native-sidecars.sh
  • bash scripts/test-homebrew-vfs-release.sh
  • bash scripts/dev-shell.sh ruby scripts/check-homebrew-publish-workflow-trust.rb
  • bash scripts/dev-shell.sh bash -c "cd host && npm run typecheck"
  • Focused Vitest coverage: host/test/homebrew-vfs-builder.test.ts (16 tests)

No kernel, syscall, or ABI contract changes are included.

Build a browser-fetchable ZIP closure from the exact verified Homebrew plan, bottle bytes, and link manifests used by required VFS acceptance. Publish the archive and its provenance-bound descriptor as immutable release assets with strict ZIP validation and anonymous readback.\n\nThis intentionally does not register the layer in the runtime or add per-language gallery images.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant