Repository navigation
Say upstream's live tests pass on the mlx backend, list each package product's targets, bring CONTRIBUTING up to 0.1.0, and restore the README's read-speed bullet - #148
Merged
Conversation
…product's targets, bring CONTRIBUTING up to 0.1.0, and restore the README's read-speed bullet
Contributor
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The documentation-only changes align with the supplied implementation and release evidence, with no unresolved findings.
Review effort: Balanced
Findings: None
What changed in this PR
Updates release 0.1.0 documentation to reflect shipped functionality and current dependencies.
Changes:
- Records passing MLX live tests, including think and chat.
- Corrects dependency product and target documentation.
- Refreshes contributor guidance and restores the pending read-speed improvements.
| File | Description |
|---|---|
| README.md | Restores the read-speed improvement bullet. |
| docs/development.md | Updates dependency mappings and live-test results. |
| docs/05-architecture.md | Corrects module dependency descriptions and graph. |
| CONTRIBUTING.md | Updates release status and issue-reporting guidance. |
💡 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.
Refs #65.
Fixes the stale documentation lines found while preparing release 0.1.0 (#145), and restores a
README line that #145's merge with #144 dropped. Docs only: no Swift code, configuration or test
changes. CI does not run, because every changed file is Markdown that no test reads.
docs/development.md, The live suite (line 317)
Was: "Against the Swift server's
mlxbackend, itsthink, chat and stream tests fail until #52and #53 land, while the Swift suite skips them. The chat tests run there rather than skip because
the listing already names
diffusiongemma-26b, as upstream's does."Now:
test_encodercases.test_think,test_chatandtest_chat_streamamong them (The think option: thought generation before a read, prefix continuation, billing #52and /v1/chat/completions: OpenAI-compatible generation with streaming, JSON mode and cancellation #53 landed in Generate text, think and chat on the MLX backend: the diffusion sampler, the block loop, think and the chat model (#50, #51, #52, #53, D-059) #137, D-059).
diffusiongemma-26b.long-stream check.
Evidence: a run on 2026-10-06 at
bbab174(#137), on an M3 Max with macOS 27.0.1 and Swift 6.4,following the section's own steps. Since then main has changed only the version strings (#146)
and DocC Markdown (#147), so the result holds for
d176ce3.swift build -c release --product openjev, thenOPENJEV_MLX_CACHE_LIMIT_GB=4 OPENJEV_HOST=127.0.0.1 OPENJEV_PORT=8093 openjev serve --backend mlx.It loaded the default checkpoint,
mlx-community/diffusiongemma-26B-A4B-it-4bitata7a81407,from the Hugging Face cache.
/v1/modelslistedopenjev-latest,openjev-0.1anddiffusiongemma-26b.make upstream(dcd2094) andUpstream/.venvwith pytest 9.1.1 and httpx 0.28.1, thenOPENJEV_LIVE_URL=http://127.0.0.1:8093 Upstream/.venv/bin/python -m pytest Upstream/openjev/tests/test_live.py -v:12 passed, 4 skipped in 60.95s.OpenJevLiveTestsbundle thatswift test --filter OpenJevLiveTestsruns.It was built with
swift build --target OpenJevLiveTestsand run withswiftpm-testing-helper,so no other test target had to build.
test_live.pysuite passed 13: the same 12 plus "A long streamed reply arrives whole,with its finish and [DONE], as the reply unstreamed".
test_encodercases ("the server at OPENJEV_LIVE_URL does not list ...").pytest -v
docs/development.md, Dependencies (lines 99 to 106)
The "Products used" column now lists every product
Package.swiftuses, each with the targetsthat link it. It keeps the server rows' names (server, CLI, stub server) and adds DiffusionGemma,
encoders, JevK5 and bench, the names the Targets bullets above the table use. Test targets are
spelled out one by one ("server tests, CLI tests"), because a grouped "server, CLI and JevK5
tests" can be read two ways. A script parses the column back into target names and compares it
with every target's
.product(name:package:)entries inPackage.swift: 22 products in each, nomismatch.
Package.swiftMLX,MLXNNMLXLMCommon,MLXVLMMLXLLM(OpenJevLetterReadout) andMLXHuggingFace(OpenJevDiffusionGemmaTests) missing;MLXVLMis linked only by OpenJevDiffusionGemmaTests (D-054)TokenizersHub(OpenJevDiffusionGemma, OpenJevLetterReadout) missingJinjaHummingbird,HummingbirdCore(server),HummingbirdTesting(server and CLI tests)Hummingbirdis also linked by OpenJevCLITests and OpenJevLetterReadoutTests, andHummingbirdTestingby OpenJevLetterReadoutTestsArgumentParserHTTPTypes(server, server and CLI tests)Logging(server, CLI, server and CLI tests)The swift-nio, swift-service-lifecycle, async-http-client and swift-docc-plugin rows already
matched and are unchanged. The Requirement and Resolved columns match
Package.swiftandPackage.resolved: 35 pins, these 12 and 23 transitive, as the text under the table says.docs/05-architecture.md (lines 37 to 39, 70, and 132 to 135)
These are the same product facts, in the module tree and graph whose product names development.md
says it matches.
OpenJevDiffusionGemmamlx-swift-lm (MLXLMCommon, MLXVLM),though D-054 removed
MLXVLMfrom the library (the tree in the same file says "not MLXVLM").Neither the tree nor the graph named
Hub(import HubinSwiftTransformersTokenizer.swiftand
JevK5Tokenizer.swift) or swift-jinja (import JinjainSwiftTransformersTokenizer.swift).OpenJevDiffusionGemmadepends on mlx-swift,MLXLMCommon, swift-transformers'TokenizersandHub, and swift-jinja.OpenJevLetterReadoutalso depends onHub.CONTRIBUTING.md (lines 3 to 11)
package can depend on, which is Prepare release 0.1.0: versioning policy, changelog, security notes, Swift Package Index settings, code owners, issue templates, adopters and release notes (#65) #145's README Status wording. The opening then points to the
README's Status section for what is done and what is not there yet, rather than repeating that
list. The milestones API reports milestones 0 to 5 closed with no open issue ("5. Text
generation and think": 0 open, 5 closed).
.github/ISSUE_TEMPLATE/, described as their owndescriptionfields describe them (a bugreport and a compatibility report), and at SECURITY.md for vulnerabilities, as the templates'
config.ymldoes.README.md, Status (line 96)
version tag a package can depend on: Release 0.1.0: versioning, tag, Swift Package Index, changelog, security notes #65" under "Not there yet". That is Prepare release 0.1.0: versioning policy, changelog, security notes, Swift Package Index settings, code owners, issue templates, adopters and release notes (#65) #145's own change,
which its merge of main lost.
1daa94a("Merge branch 'main' into release-0.1.0-prep") then resolved the conflict by takingDefer CLM until someone asks for it: a D-011 addendum, and the pages that said it was coming (#59) #144's side whole (
git show --remerge-diff 1daa94a -- README.md), so Prepare release 0.1.0: versioning policy, changelog, security notes, Swift Package Index settings, code owners, issue templates, adopters and release notes (#65) #145's squashfaf33c0never changes the list.
depend on" in the paragraph above and lists it as not there yet. Expert matmuls take 61% of a read: measure the sort threshold, the gathered path and a compiled expert block #100, Long-prompt prefill: the rate falls from 1,300 to 760 tokens/s between 1,000 and 10,000 tokens #101 and Throughput stays at 3.0 to 3.4 requests/s from 1 to 16 concurrent reads: batch the decoder passes #102 are open
and are about read speed.
Not changed: docs/development.md lines 89 and 90 (a question)
The lines say: "A package opens in Xcode with autogenerated schemes, which are per-user and are
never written to disk, so this one is committed."
046a26f), eight autogenerated schemes are committedbeside
OpenJevCore-iOS.xcschemein.swiftpm/xcode/xcshareddata/xcschemes/: OpenJevCore,OpenJevDiffusionGemma, OpenJevEncoders, OpenJevLetterReadout, OpenJevSwift-Package, openjev,
openjev-bench and openjev-stub-server.
.gitignorelets any*.xcschemethere through.OpenJevCore-iOS.xcscheme), or they stay and the lines are reworded. That is the maintainer'scall.
Merge order
The
0.1.0tag does not exist yet. The README's Status paragraph (#145), this PR's CONTRIBUTINGopening and the restored bullet all describe the release as published, so they read right once
0.1.0 is tagged.
Sweep
Every tracked text file was searched with comment markers stripped, lines joined and the text split
into sentences. This was done again after rebasing onto #144 to #147.
thinkor chat behind The think option: thought generation before a read, prefix continuation, billing #52 or /v1/chat/completions: OpenAI-compatible generation with streaming, JSON mode and cancellation #53 are in two places, both left as written:docs/06-decisions.md, which records what was true at the time.docs/09-conformance-and-testing.md's dated run history, which already records the /v1/chat/completions: OpenAI-compatible generation with streaming, JSON mode and cancellation #53 run.That record gives the Swift suite 12 passes with chat. It was written in
265ebbb, beforeGenerate text, think and chat on the MLX backend: the diffusion sampler, the block loop, think and the chat model (#50, #51, #52, #53, D-059) #137's review added the long-stream test (
0b771b8), so today's 13 is that test, not achange in the others.