[Homebrew/Build] Stop incomplete VFS images before publication#1068
Draft
brandonpayton wants to merge 12 commits into
Draft
[Homebrew/Build] Stop incomplete VFS images before publication#1068brandonpayton wants to merge 12 commits into
brandonpayton wants to merge 12 commits into
Conversation
Phase B-1 matrix build status —
|
| Package | Arch | Status | Sha |
|---|---|---|---|
| kandelo-sdk | wasm32 | built | 2f07a46b |
| mariadb-test | wasm32 | built | 1ec82027 |
| mariadb-vfs | wasm32 | built | 6de85a49 |
| mariadb-vfs | wasm64 | built | b3dc3d08 |
| shell | wasm32 | built | feffb1d8 |
| lamp | wasm32 | failed | (prev e922dc30) |
| node-vfs | wasm32 | built | e12fabca |
| wordpress | wasm32 | failed | (prev 6632c846) |
Auto-generated; replaced on each push. Raw data in the publish-status workflow artifact.
brandonpayton
force-pushed
the
homebrew/language-shell-revision-18-qk044
branch
from
July 23, 2026 02:14
7409e99 to
6b7a9f9
Compare
Base automatically changed from
homebrew/language-shell-revision-18-qk044
to
main
July 23, 2026 03:51
A package can contain several executable outputs, runtime data files, or both. Publishing those paths one at a time can expose a mixture of builds, and a direct local copy can accidentally follow a fetched mirror symlink into the shared cache. Validate the complete declared closure before changing its live package directory, stage fetched mirrors beside the destination, and replace the directory as one transaction. Collect direct local builds into create-once session generations with one-shot publication claims, while retaining safe atomic replacement for one-member packages and legacy aliases. Treat outputs plus runtime files as one package identity so executable-plus-runtime packages such as CPython and Erlang use the same contract.
A complete package path could previously mix files from different builds or retarget after validation. Malformed and legacy spellings could bypass the package closure, while the browser development server exposed the entire program cache instead of only the files selected by the resolver. Project the registry into one closed, cached package model; resolve outputs and runtime files as one verified generation; return canonical member paths; and preserve truthful not-found versus invalid-state errors. Narrow Vite serving to exact resolver-approved regular files so Node.js and browser hosts consume the same package generation without exposing neighboring cache content.
Install the reviewed shell VFS with install-local-artifact under a run-unique generation session, then resolve and compare the canonical installed bytes before browser validation. Strengthen the shell workflow contract so direct local-binaries writes cannot return.
Require shell-derived images to match the reviewed capacity profile as well as its data and inode reserves. Keep a deliberate expected-capacity override for a future larger product profile. Make host-tree composition fail on every read, unsupported-entry, and VFS-write error; intentional omissions remain explicit excludes. Cover the complete copy-option surface, ENOSPC propagation, capacity drift, and larger-profile escape path.
Validate the serialized image capacity before compression or output writes, require intentional symlink handling, and propagate MariaDB test source failures. Add contract coverage for masked capacity, failed host reads, and shell profile constraints.
Bind the Homebrew main-shell serializer to its encoded capacity contract before output writes. Require every declared MariaDB test and fixture tree instead of preserving best-effort omissions, and remove the stale simple_select entry that the pinned source archive does not contain. Add executable failure-path, selection-parity, and package-input coverage.
Regenerate the atomic program projection after replaying the VFS integrity series. This binds MariaDB's new source-copy input and every VFS package that consumes the hardened shared image helpers to their current cache keys.
brandonpayton
force-pushed
the
emdash/vfs-product-integrity-qk044
branch
from
July 23, 2026 13:18
5aadb71 to
bfd033c
Compare
This was referenced Jul 23, 2026
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.
Why
A VFS image is a product artifact. If its builder cannot read a required source file, runs out of image capacity, drops a required symlink, or cannot copy a declared test fixture, the build must fail before any partial image can be published.
Several image paths checked these conditions only after writing an output, or treated missing inputs as optional. That could produce an incomplete artifact whose missing files were discovered only much later at runtime.
What changes
includeandstd_datafixture trees instead of silently skipping missing inputs.Validation
Validated at exact head
bfd033c46c45ca332c98175d062a7073efbb6e83:xtasktest passed.git diff --checkpassed.A fresh staging package rebuild and browser gate are intentionally delegated to CI.
Stack and rollout
This draft is stacked on #1073, which introduces the atomic package projection used here. It must land after #1073.
Successful source trees still produce complete VFS images through the normal builder. This PR does not change the kernel, libc, guest syscall behavior, or Kandelo ABI.