Skip to content

feat(imf): multi-part release assets + one-command publish - #11

Merged
ronaldtse merged 1 commit into
mainfrom
imf/multipart-assets
Aug 18, 2026
Merged

feat(imf): multi-part release assets + one-command publish#11
ronaldtse merged 1 commit into
mainfrom
imf/multipart-assets

Conversation

@ronaldtse

Copy link
Copy Markdown

Summary

  • models.yaml entries may carry parts: [{url, sha256, size}] for artifacts over GitHub's hard 2 GiB per-asset cap (heb-diac-1.0 fp32 is 2.59 GiB; its earlier upload failed HTTP 422)
  • Registry streams parts in order, verifies each part's sha256 as it lands, then checks the assembled file against the whole-file sha256 — cache-hit path identical to single-file models
  • scripts/split_release.py — split a zip into ≤1.5 GB parts with per-part sha256 + generated models.yaml block
  • scripts/publish_model.py — one command: strict-validate → split → GH Release → models.yaml entry → release branch → PR (idempotent re-runs; refuses to touch main)

Test plan

  • runtime/tests/test_registry.py — parts assembly, corrupt-part rejection by index, verified cache hit (6/6 pass)
  • CI green
  • heb-diac-1.0 published as two parts; Model.load("heb-diac-1.0") resolves over HTTP

…publish

heb-diac-1.0 fp32 (2.59 GiB) exceeds GitHub's hard 2GiB per-asset cap.
models.yaml entries may now carry parts: [{url, sha256, size}]; the
registry streams parts in order, verifies each sha256 as it lands, and
checks the assembled file against the whole-file sha256 — the cache
contract is identical to single-file models.

- scripts/split_release.py: split + per-part sha256 + models.yaml block
- scripts/publish_model.py: validate (strict) -> split -> GH Release ->
  models.yaml entry -> release branch -> PR; idempotent re-runs
- runtime registry: parts resolution + tests (assembly, corrupt-part
  rejection, verified cache hit)
@ronaldtse
ronaldtse merged commit 03ef178 into main Aug 18, 2026
7 of 10 checks passed
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.

1 participant