Repository navigation
Say the Core ML encoder packages download on first use, not once published - #142
Merged
Merged
Conversation
…ished docs/10-other-models.md still said Verdict's package, tokenizer and calibrator are downloaded "once the package is published", and Laya's Mac package "once the packages are published". All six packages have been published releases of Algorythm-Canada/openjev-models since 2026-10-01, and every manifest OpenJevEncoders embeds has packageDownloadsEnabled: true, so both rows now say the packages are downloaded on first use and checked by SHA-256. The texts about a manifest whose downloads are off (EncoderPackageStore.swift's packageDownloadsUnavailable and its doc comments, the store tests, docs/05-architecture.md) describe a condition and stay. docs/06-decisions.md stays too: a decision records what was true when it was written.
Contributor
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The documentation now accurately matches the published releases and enabled manifests.
Review effort: Balanced
Findings: None
What changed in this PR
Updates encoder documentation to reflect published Core ML packages.
Changes:
- Removes stale publication caveats for Verdict and Laya.
- Clarifies first-use and prefetch download behavior.
| File | Description |
|---|---|
docs/10-other-models.md |
Documents current Core ML package availability and downloads. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
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.
Fixes the two stale claims that the Core ML encoder packages are not yet published. Docs only: no Swift code changes.
All six packages have been published releases of
Algorythm-Canada/openjev-modelssince 2026-10-01, and every manifestOpenJevEncodersembeds haspackageDownloadsEnabled: true. Both rows ofdocs/10-other-models.mdnow say what happens: the packages are downloaded on first use and checked by SHA-256.Changed lines
docs/10-other-models.md:17(Verdict, Swift feasibility)EncoderPackageManifest+Verdict.swift:19haspackageDownloadsEnabled: trueforverdict-m18-fp16; its releaseverdict-m18-fp16-v1was published on 2026-10-01 with 3 assets.docs/10-other-models.md:29(Laya, Swift feasibility)prefetch(lengths:), ...prefetch(lengths:), ...EncoderPackageManifest+Laya.swift:19, 69, 114, 159, 204havepackageDownloadsEnabled: trueforlaya-m18-fp16andlaya-f18-b1s128-fp16tolaya-f18-b1s1024-fp16; their five releases were published on 2026-10-01 with 3 assets each.The rest of each row is unchanged. Line 29 keeps "refused with
EncoderLoadError.noPackageuntil then", where "then" is the app'sprefetch(lengths:)call, and "The tokenizer and rl_agent_config.json come from the checkpoint at any time", which still holds: with the iPhone's per-length set,LayaBackend.load(from:packageSet:functionCapacity:)fetches them while the device holds no package (LayaBackend.swift:359to 360).The releases and the manifests
ghp api 'repos/Algorythm-Canada/openjev-models/releases?per_page=20'on 2026-10-06 lists six releases, none a draft or a prerelease:verdict-m18-fp16-v1laya-m18-fp16-v1laya-f18-b1s128-fp16-v1laya-f18-b1s256-fp16-v1laya-f18-b1s512-fp16-v1laya-f18-b1s1024-fp16-v1Each holds
Manifest.json,Data--com.apple.CoreML--model.mlmodelandData--com.apple.CoreML--weights--weight.bin. The 18 package files the two manifests list (release tag, asset name, bytes, SHA-256) are exactly the 18 uploaded assets the API lists, taking each asset'sdigestas its SHA-256: none is missing on either side and none differs.Sources/OpenJevEncoders/Store/)packageDownloadsEnabledEncoderPackageManifest+Verdict.swift:19verdict-m18-fp16trueEncoderPackageManifest+Laya.swift:19laya-m18-fp16trueEncoderPackageManifest+Laya.swift:69laya-f18-b1s128-fp16trueEncoderPackageManifest+Laya.swift:114laya-f18-b1s256-fp16trueEncoderPackageManifest+Laya.swift:159laya-f18-b1s512-fp16trueEncoderPackageManifest+Laya.swift:204laya-f18-b1s1024-fp16trueOther copies
I searched all 649 tracked files twice: as they are, and with comment markers (
///,//,#,*,<!--) dropped at line starts, so a phrase split across a line break or across comment lines still matches. The patterns were "once the package(s) is/are published", "not yet published" and "until the package(s) is/are published", plus rewordings: "unpublished", "not (yet) published, uploaded, hosted or released", "yet to be published", "once", "until", "when" or "before" followed by a package, release or asset being published, uploaded, hosted or available, "downloads are off", and "until" or "before its release exists". I then read every sentence that mentionsopenjev-models, D-033,packageDownloadsEnabled, "first use",OPENJEV_ENCODER_MODELS,prefetch(lengths:)or "until then", and every Markdown sentence that names Verdict, Laya, an encoder or a package together with a download, release or hosting word. Only the two rows above stated the current state wrongly.Left as written, because they describe a manifest whose downloads are off, a condition rather than the current state:
Sources/OpenJevEncoders/Store/EncoderPackageStore.swift: thepackageDownloadsUnavailableerror text (line 563), the case's doc comment (line 535) and the doc comment at lines 175 to 176.Tests/OpenJevEncodersTests/EncoderPackageStoreTests.swift(downloadsOff) andLayaPackageStoreTests.swift(tokenizerWithoutPackage), which clear the flag on a copy of a manifest.docs/05-architecture.md:554to 555 ("a manifest whose downloads are off, as a new package's is before its release exists"), andTools/encoders/README.md:65to 66 andTools/encoders/manifest.py, which already say all six are published and describe the step for a new package.Also left as written:
docs/06-decisions.md, since a decision records what was true when it was written, and the spike reports indocs/spikes/.Already current:
README.md:31,docs/deployment.md:56and 79, the DocC articles (GettingStarted.md,RunningTheServer.md,ReadingVerdictAndLaya.md),Tools/jevbench/README.md:157anddocs/quality.md:566describe the downloads as they happen now.The open pull requests #137 and #140 do not touch
docs/10-other-models.md.Checks
make lintpasses.swift testwas not run: no Swift code changed, and on this Mac it loads 33 GB of models.