Record the paired ggml commit as a first-class manifest field#1
Merged
Conversation
Slim bundles link the ggml runtime out of the paired llama.cpp prebuilt, and the installer pairs on the ggml commit (the -mix-<sha> suffix of the llama tag) rather than the whole tag, so a newer llama build that keeps the same ggml still backs the bundle. Record that ggml commit explicitly: paired_ggml_commit at the manifest top level and requires_ggml_commit per slim artifact, both derived from the paired llama tag. This makes the ABI key first-class and auditable in the manifest instead of only implicit in the tag string. Additive and backward compatible: existing consumers that read requires_llama_tag are unaffected.
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.
Summary
Records the paired ggml commit as a first-class field in the whisper prebuilt manifest, so the slim pairing key is explicit rather than only implicit in the llama tag string.
Slim bundles are ggml-less:
whisper-serverlinks the ggml runtime (libggml.so.0,libggml-base.so.0, backend modules) out of the pairedunslothai/llama.cppprebuilt. llama fork tags areb<upstream_build>-mix-<ggml_commit>, and the-mix-<ggml_commit>suffix is the ABI the slim bundle links against; the build number only tracks upstream llama and fork PRs outside ggml. The Studio installer therefore pairs on the ggml commit, not the whole tag, so a newer llama build that keeps the same ggml still backs the bundle.Change
scripts/package_bundle.pyderives the ggml commit from the paired llama tag and records it:paired_ggml_commitat the manifest top level.requires_ggml_commiton each slim artifact entry.Both come from the same
llama_tagthe bundle was built against, so they cannot disagree withrequires_llama_tag. The change is additive and backward compatible: consumers that readrequires_llama_tag/requires_ggml_sonamesare unaffected. The README manifest schema and pairing notes are updated to document the field and the ggml-keyed pairing.Context
This is the belt-and-suspenders companion to the Studio installer fix (unslothai/unsloth#7381), which relaxes the pairing gate to key on the ggml commit. That PR fixes the live symptom (curated dictation going unavailable when llama advances to a newer build with the same ggml); this PR makes the ABI key first-class and auditable in the manifest for any future consumer.
Testing
No Python tests exist for
package_bundle.py; thepaired_ggml_commithelper was smoke-tested directly across the real tag forms (b10079-mix-fb3d4catofb3d4ca,b10043-mix-0ac9dfbto0ac9dfb, non--mix-and empty inputs to null). The manifest and sha256 sidecars are regenerated by the release workflow from the bundles' embedded info, so the field flows into the next published release.