Published
Updated
swift-jev types Choice, Noul, and Score, and routes at 0.60 and 0.85
This topic was created 31 days ago, and the information it contains may have evolved or changed since then.
Daiki Matsudate posted a Swift client after a trial that paired Jev with another model did not go well. The library is MIT, has no dependencies, and returns enum cases, probabilities, and scores from one request. The sample policy escalates under 0.60 and acts at 0.85 or above. The README prints no scored set.
Daiki Matsudate posted a Swift client for Jev on September 22. The post says a trial that combined Jev with fm did not go well, and that the client is what came out of it. The repository is d-date/swift-jev, MIT.
The package needs Swift 6.2 and has no dependencies. It supports macOS 13 and later, plus iOS 16, tvOS 16, watchOS 9, and visionOS 1. Linux is declared in the package and is not in CI. A ChoiceQuestion is generic over an enum, so the answer comes back as a case. A NoulQuestion comes back as a probability. A ScoreQuestion comes back as a weighted position on a rubric, which can sit between two levels, such as 1.3 on a three-step scale. All three travel in one evaluate call. The README says extra questions on that call add almost no latency, because Jev runs them in parallel.
There is no confidence(of:) for a Noul question. The probability is the signal, and a value near 0.5 means the model is unsure. The sample RoutingPolicy escalates under 0.60 and treats 0.85 or above as automatic. The band in between asks a person first. For a Noul, the same policy uses a band instead of a cut at 0.5, so 0.49 and 0.51 do not become opposite answers by themselves. The README says the two defaults mirror figures in TypeSafe’s guidance and still have to be checked on the action you care about. A confidence that is enough to read a balance is not, on that page, enough to approve a transfer.
An earlier design derived the questions from a struct with a @JevQuery macro. The README’s comparison: the macro was 461 lines, depended on swift-syntax, and took 960 seconds to clean-build. The question values that replaced it are 120 lines, have no dependency, and clean-build in 21 seconds. Six of eight review defects were in the macro or caused by it, including instructions that contained a newline and were sent with literal backslashes. Questions can now be built at runtime from a database or a loop.
The CLI is jev. It reads a JSON request, writes the JSON response to standard output, and exits 2 on a bad request and 1 on an API or network error. The default model is jev-latest. Status 429 and 529 are retried with backoff, and Retry-After is honored. The client does not count tokens, so an oversized state shows up as the server’s 422. It also does not try to stay under 1,200 requests a minute on its own. The README prints no accuracy table. We did not build the package.
This site's reading
Editorial notes evaluating claims against primary sources, contextualizing findings alongside related implementations, and defining technical terms.
Verify
Primary post is @d_date, September 22, 2026, 23:39 UTC. The post says a trial that combined Jev with fm did not go well, and that the Swift client is a side product. Repository d-date/swift-jev is MIT.
Swift 6.2. No dependencies. macOS 13+, iOS 16+, tvOS 16+, watchOS 9+, visionOS 1+. Linux is declared and not covered by CI. Package version in the README example is from 1.0.0. ChoiceQuestion, NoulQuestion, and ScoreQuestion go out in one evaluate call.
A Noul answer has no separate confidence method; the probability is the signal. ScoreValue can land between rubric levels. RoutingPolicy sample: escalateBelow 0.60, autoAtOrAbove 0.85.
The README says those defaults mirror TypeSafe's guidance and still need validating. Noul uses a band so that 0.49 and 0.51 are not flipped by a hard cut at 0.5. An earlier @JevQuery macro was removed.
The comparison table: macro 461 lines and a 960 second clean build with swift-syntax; question values 120 lines and a 21 second clean build. CLI binary name jev. Exit 2 for input or configuration errors, exit 1 for API or network errors.
Default model jev-latest. 429 and 529 are retried. The client does not count tokens and does not enforce 1,200 requests a minute locally. We did not build the package.
Compare
jevctl is a shell over the same API, including a compact command with a 0.5 keep-threshold. jevelry stores act, mark, and fall_back in a JEVEL.md and timed three live calls at 2.49 seconds. This library's 0.60 and 0.85 cuts are a documented sample, not a measured error rate.
jevis is the Flutter test package, a different client.
Terms
- swift-jev
- Daiki Matsudate's MIT Swift package and CLI. Choice answers are enum cases. Noul answers are probabilities. Score answers can fall between rubric levels. One evaluate call sends every question.
- RoutingPolicy
- The sample in the README. Confidence under 0.60 escalates. Confidence at or above 0.85 is automatic. The band in between asks first. The page says the numbers mirror TypeSafe's guidance and are a starting point.