fix(deps): pin ort to =2.0.0-rc.11 so cargo install doesn't break#116
Merged
Conversation
Reported by @gianpaj after trying \`cargo install ck-search\` on 0.7.6: 36 errors cascading out of ck-embed::mixedbread, all of the form "cannot convert ort::Error<SessionBuilder> to anyhow::Error". Root cause: cargo install (without --locked) ignores Cargo.lock and re-solves dependencies from scratch. Our \`ort = "2.0.0-rc.11"\` is a caret range that lets cargo pick 2.0.0-rc.12. rc.12 made SessionOptionsPointer wrap a NonNull<OrtSessionOptions> which is !Sync, which propagates up: SessionBuilder is no longer Sync, so ort::Error<SessionBuilder> is no longer Send+Sync, so it can't be ?-converted into anyhow::Error (which requires both). Workaround for users: \`cargo install ck-search --locked\` honors the published lockfile. But that's a footgun we shouldn't ship with. Real fix: pin to \`=2.0.0-rc.11\` exact so any resolution path picks the version we tested against. Follow-up: evaluate rc.12 upgrade separately — likely needs ck-embed::mixedbread to map ort errors manually via .map_err instead of relying on `From` blanket impl. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
runonthespot
added a commit
that referenced
this pull request
May 24, 2026
Hotfix release for #116: pinning ort to =2.0.0-rc.11 so users running \`cargo install ck-search\` (without --locked) don't get 36 compile errors from a rc.12 upgrade they didn't ask for. See CHANGELOG.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 24, 2026
Closed
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.
Problem (severity: HIGH, user-facing)
@gianpaj hit this trying `cargo install ck-search` on 0.7.6:
```
error[E0277]: `?` couldn't convert the error: `NonNull: Sync` is not satisfied
--> ck-embed-0.7.6/src/mixedbread.rs:50:69
```
36 errors cascade out of `ck-embed::mixedbread`.
Root cause
`cargo install ck-search` without `--locked` ignores the published `Cargo.lock` and re-solves deps from scratch. Our workspace had `ort = "2.0.0-rc.11"` which is a caret range — cargo picks the latest matching release, which is now `2.0.0-rc.12`.
`ort 2.0.0-rc.12` changed `SessionOptionsPointer` to wrap a `NonNull` which is `!Sync`. That removes `Send + Sync` from `SessionBuilder`, which propagates to `ort::Error`, which means it can no longer be `?`-converted into `anyhow::Error` (which requires both).
Users hitting this can work around with `cargo install ck-search --locked`, but that's a footgun we shouldn't make them know about.
Fix
Pin to `=2.0.0-rc.11` exact. `cargo install` (with or without `--locked`) is forced to use the version we tested against. Cargo.lock unchanged.
Follow-up
Evaluate upgrade to `ort 2.0.0-rc.12` properly in a separate PR — likely needs `ck-embed::mixedbread` to map ort errors via `.map_err(anyhow::Error::msg)` or similar, since the `From` blanket impl no longer fires.
Test plan
🤖 Generated with Claude Code