[Homebrew/Validation] Keep fork imports under the shared ABI contract - #103
Closed
brandonpayton wants to merge 1 commit into
Closed
Conversation
brandonpayton
force-pushed
the
fix/dinit-abi-import-validator-qk044
branch
from
July 29, 2026 03:11
cb1b988 to
6a96b77
Compare
brandonpayton
changed the base branch from
main
to
homebrew/close-shell-demo-recipes-qk044
July 29, 2026 03:12
brandonpayton
force-pushed
the
fix/dinit-abi-import-validator-qk044
branch
3 times, most recently
from
July 29, 2026 08:19
3bfe530 to
12fa9fc
Compare
brandonpayton
force-pushed
the
homebrew/close-shell-demo-recipes-qk044
branch
4 times, most recently
from
July 29, 2026 12:13
e705a19 to
a9bddb5
Compare
brandonpayton
force-pushed
the
fix/dinit-abi-import-validator-qk044
branch
2 times, most recently
from
July 29, 2026 13:17
1eab59a to
a3243c7
Compare
Move Dinit’s and Redis’s unresolved-build-input checks before fork instrumentation. Keep generated fork imports and signatures under the shared ABI validator, where their contract cannot drift by Formula. Add a tap-wide regression that prevents later Formulae from parsing or naming fork imports after instrumentation.
brandonpayton
force-pushed
the
fix/dinit-abi-import-validator-qk044
branch
from
July 29, 2026 14:13
a3243c7 to
0a5f97b
Compare
Contributor
Author
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
Kandelo adds a generated import surface when it instruments a
WebAssembly program for
fork(). The shared artifact validator readsthat generated ABI contract. It checks the imports, their signatures,
the memory width, and the required exports together.
Dinit and Redis also audited unresolved build imports after
instrumentation. That forced each Formula to duplicate the generated
fork names. Those lists can drift when the fork contract changes, and
Dinit rejected a correct ABI 42 artifact after shared validation had
already proved the fork surface valid.
Moving the unresolved-import audits before instrumentation preserves
their useful protection against broken build inputs. It also leaves
generated fork imports under the one validator that owns their ABI.
What changed
dynamic-loader imports.
kandelo_validate_wasm_artifact.parsing or Formula-local
__wpk_fork_*names.Current stack
This draft is one commit atop tap #129:
82b620bd0135e44a73b6f9e6837a736e27cf07ed;0a5f97b16f70ebd495e0d454db6376badaa06a57;9d143c86b566478faa9be7cbb7a987c0b32f1a44.The restack preserved the Dinit patch exactly:
8bed8827bddb3ad0bdd03905f0025b5d4c3341c7;git range-diffreports the commits as equal;9d143c86b566478faa9be7cbb7a987c0b32f1a44, matching this tree;[Homebrew/Packages] Build seven programs from sealed tap recipes #129.
Validation
Local and repository checks passed:
git diff --check;Redis passes Homebrew style. Dinit retains three pre-existing findings:
dependency order, bottle-block placement, and one trailing class blank
line. The exact #129 base reports the same three findings.
The fresh exact-head dry run used this PR head and
Kandelo source
85d2efccdf55f02eb23fde4e9a3d075a4b267104. Planning, sourcevalidation, the Dinit source build, and its Node checks passed. The run
then stopped at the new sealed-Vite boundary before Chromium with:
That Kandelo commit predates #1138, which seals and attests the exact
Vite closure required by #129. This is the expected central-runtime
dependency, not a Dinit failure. The tap contract remains strict and
will be rerun after #1138 lands.
The pre-restack dry run passed the complete Dinit build
and Formula test against the same Kandelo source and the identical
Dinit patch. It passed:
Neither dry run published or anonymously downloaded a new package.
Public readback remains part of the later write publication.
Rollout
Keep this PR draft and unmerged while the central runtime lands:
main.brew test, Node and Chromiumexecution, sidecars, and Formula finalization.
Dinit is independent of the seven Formulae in #129. Its later
publication does not invalidate their artifacts or publication state.