Skip to content

Say the Core ML encoder packages download on first use, not once published - #142

Merged
alaineid merged 1 commit into
mainfrom
docs-encoder-packages-published
Oct 6, 2026
Merged

alaineid merged 1 commit into
mainfrom
docs-encoder-packages-published

Conversation

@alaineid

@alaineid alaineid commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

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-models since 2026-10-01, and every manifest OpenJevEncoders embeds has packageDownloadsEnabled: true. Both rows of docs/10-other-models.md now say what happens: the packages are downloaded on first use and checked by SHA-256.

Changed lines

Line Said Says now Evidence
docs/10-other-models.md:17 (Verdict, Swift feasibility) The package, tokenizer and calibrator are downloaded on first use, once the package is published, and checked by SHA-256 (D-033). The package, tokenizer and calibrator are downloaded on first use and checked by SHA-256 (D-033). EncoderPackageManifest+Verdict.swift:19 has packageDownloadsEnabled: true for verdict-m18-fp16; its release verdict-m18-fp16-v1 was published on 2026-10-01 with 3 assets.
docs/10-other-models.md:29 (Laya, Swift feasibility) Once the packages are published, the Mac's is downloaded on first use; an iPhone downloads a per-length package only when the app asks with prefetch(lengths:), ... The Mac's package is downloaded on first use; an iPhone downloads a per-length package only when the app asks with prefetch(lengths:), ... EncoderPackageManifest+Laya.swift:19, 69, 114, 159, 204 have packageDownloadsEnabled: true for laya-m18-fp16 and laya-f18-b1s128-fp16 to laya-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.noPackage until then", where "then" is the app's prefetch(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:359 to 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:

Release Published (UTC) Assets
verdict-m18-fp16-v1 2026-10-01 16:17:10 3
laya-m18-fp16-v1 2026-10-01 18:29:24 3
laya-f18-b1s128-fp16-v1 2026-10-01 18:30:45 3
laya-f18-b1s256-fp16-v1 2026-10-01 18:31:56 3
laya-f18-b1s512-fp16-v1 2026-10-01 18:33:44 3
laya-f18-b1s1024-fp16-v1 2026-10-01 18:35:21 3

Each holds Manifest.json, Data--com.apple.CoreML--model.mlmodel and Data--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's digest as its SHA-256: none is missing on either side and none differs.

Manifest line (in Sources/OpenJevEncoders/Store/) Package packageDownloadsEnabled
EncoderPackageManifest+Verdict.swift:19 verdict-m18-fp16 true
EncoderPackageManifest+Laya.swift:19 laya-m18-fp16 true
EncoderPackageManifest+Laya.swift:69 laya-f18-b1s128-fp16 true
EncoderPackageManifest+Laya.swift:114 laya-f18-b1s256-fp16 true
EncoderPackageManifest+Laya.swift:159 laya-f18-b1s512-fp16 true
EncoderPackageManifest+Laya.swift:204 laya-f18-b1s1024-fp16 true

Other 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 mentions openjev-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: the packageDownloadsUnavailable error text (line 563), the case's doc comment (line 535) and the doc comment at lines 175 to 176.
  • Tests/OpenJevEncodersTests/EncoderPackageStoreTests.swift (downloadsOff) and LayaPackageStoreTests.swift (tokenizerWithoutPackage), which clear the flag on a copy of a manifest.
  • docs/05-architecture.md:554 to 555 ("a manifest whose downloads are off, as a new package's is before its release exists"), and Tools/encoders/README.md:65 to 66 and Tools/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 in docs/spikes/.

Already current: README.md:31, docs/deployment.md:56 and 79, the DocC articles (GettingStarted.md, RunningTheServer.md, ReadingVerdictAndLaya.md), Tools/jevbench/README.md:157 and docs/quality.md:566 describe the downloads as they happen now.

The open pull requests #137 and #140 do not touch docs/10-other-models.md.

Checks

  • make lint passes.
  • The full swift test was not run: no Swift code changed, and on this Mac it loads 33 GB of models.

…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.
Copilot AI balanced review requested due to automatic review settings October 6, 2026 16:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@alaineid
alaineid merged commit a18995f into main Oct 6, 2026
1 check passed
@alaineid
alaineid deleted the docs-encoder-packages-published branch October 6, 2026 16:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants