[Homebrew/VFS] Define bottle-owned composable layer contract#1076
[Homebrew/VFS] Define bottle-owned composable layer contract#1076brandonpayton wants to merge 2 commits into
Conversation
Bind each VFS Formula ordinary dependency closure to a fixed, URL-free manifest and rootfs payload inside its keg. Validate canonical payload ownership and preflight selected layers before the existing atomic runtime-layer consumer sees them. Deduplicate a shared dependency only when both layers resolve the exact same immutable bottle, link projection, and provenance. Record the remaining direct-bottle versus derived-rootfs transport choice without claiming publication or browser support.
Phase B-1 matrix build status —
|
| Package | Arch | Status | Sha |
|---|---|---|---|
| homebrew-bootstrap | wasm32 | built | 5abead30 |
| kandelo-sdk | wasm32 | built | 2f07a46b |
| mariadb-test | wasm32 | failed | — |
| mariadb-vfs | wasm32 | failed | — |
| mariadb-vfs | wasm64 | failed | — |
| shell | wasm32 | built | feffb1d8 |
| lamp | wasm32 | failed | — |
| node-vfs | wasm32 | built | e12fabca |
| wordpress | wasm32 | failed | — |
Auto-generated; replaced on each push. Raw data in the publish-status workflow artifact.
|
Maintainer approval recorded from Brandon Payton on 2026-07-22: this PR may be progressed and merged after it is restacked on the landed dependency stack and its exact final Node, Chromium, package-index, and staging validation is green. |
c29c38f to
4055542
Compare
4055542 to
0fd06b9
Compare
|
Integration checkpoint (not final merge evidence): both #1076 commits replay cleanly on the current #1074 + #1069 rehearsal tree. The rehearsal also regenerates composite-image package identities after the generic VFS changes. On rehearsal head |
Why
Kandelo should be able to compose VFS features from ordinary Homebrew Formulae instead of creating one permanently bundled image per application or runtime. Formula dependencies should remain the only dependency graph, and each selected layer should carry its own system files without inventing package-specific browser rules.
This PR defines and validates that source contract before choosing a transport or publishing any layer.
What changes
share/kandelo/vfs-layer.jsonmanifest inside a VFS Formula keg.libexec/kandelo-vfs-layer/rootfs/as the Formula-owned payload projected onto/.Stack and current boundary
This draft is stacked on #1069, which is itself stacked on #1074.
It does not yet:
Those remain explicit acceptance steps. This generic host/VFS change will not merge without explicit approval after its parents land and final CI is green.
Evidence
Exact head:
0fd06b95ecc68a0a528aeb2e2c10b1ab7adda2eagit diff --check: passedNo kernel, libc, or ABI contract changes.