Repository navigation
Releases: keltokhy/jsort
Releases · keltokhy/jsort
Release list
jev-sort 0.3.1
- The tool itself is unchanged from 0.3.0; this release brings its README on PyPI up to date.
- Compare the two local servers with Jev 1.13 in
docs/benchmarks/local-models-2026-09-22.md,
summarized in the README. The readability comparison moves there fromdocs/three-models-2026-09-22.md. - Add
bench/local_models.py, which runs the YC and Fed sorts on a local server and scores them
beside Jev's recorded runs. bench/fed.py checksets the saved statement scores against the rate move on action days alone
and against FedLock's published scores, without a model call; the README's Fed paragraph now
reports both.
jev-sort 0.3.0
- Add
--api diffusiongemmaand--api layafor System One servers running on your own machine,
throughjevkit-runtime0.3: chosen only by name, no key needed, and metered at zero API fees
unlessJEV_PRICE_PER_MTOKis set. The runtime'sdocs/explain how to run the servers.
jev-sort 0.2.0
- Move transport, configuration, the answer cache and metering to the shared
jevkit-runtime0.2. Answers are
keyed by provider, endpoint and model and stored beside who answered them; the cache written by earlier
versions is reset on first use and re-asked. - Save a run's scale with
--save-scale FILE: the description, the question as it was asked, the API, endpoint
and model ID that were asked, a count of the fit's answers by the model that gave them,--max-chars, a summary
of the fit and the anchors, each a text with its score and standard error.--anchors N(default 30) keeps the
highest and lowest texts and, between them, the text with the smallest reported error in each equal stretch
of the score range. Anchor texts are stored verbatim as shown to Jev; sharing the file shares those texts. - Only a text with at least half of
-kcomparisons can be an anchor, which excludes nothing in a complete sort.
--save-scalecannot be combined with--top, whose far end is barely measured, and a run the budget cut
short records how many texts qualified and says so. - Record which model gave each answer beside the answer in the shared cache. A scale is saved only when every answer behind it names the same model; one that
mixes two, or rests on answers that name none, is refused with the reason.--any-modelsaves it anyway, with
the counts as they are. - Place new texts on a saved scale with
--scale FILE. Each text is compared with anchors only, chosen
adaptively over about three rounds, and scored by the one-parameter version of the fit, with the anchors, the
first-position lean and the ridge held where the scale left them. Every text gets all-kof its comparisons.
The description comes from the file; a different one on the command line is an error. - A text placed in full scores the same alone or in any company, so
--scalecan stream:--keep-orderprints
each text once it and those before it are placed, with-jbounding the texts in hand as in jgrep, and
--unorderedprints as texts are placed. Sorted output still waits for the end of the input. - Under
--scalethe budget prices each request from its size before sending it, sends the first alone, widens
from one text in hand to-jas prices hold, and begins a text only if it can pay for all of it. When the money
runs out some texts are placed in full and the rest not at all. Calls in the air when a price rises can still
exceed it. - Flag a text placed beyond the anchors (
beyond) and one cut short of its comparisons (partial): in--json,
asNAME_beyondandNAME_partialwith-oon CSV and JSONL, and on stderr. - Refuse a scale built with another API, endpoint or model, or one that cannot name its model, before any call.
Every answer used is then checked against the scale's model, cached answers included, which is how an alias
that has moved is caught.--any-modeloverrides. - A scale file is validated field by field, and its question must be the one jsort asks for its description.
- Leave a new text's placement standard error empty below three successful comparisons or more than two logits
beyond an end anchor; keep its score and flags. Empty errors are blank in plain output and CSV, null in JSON
and JSONL. Document censoring beyond the anchors, noisy errors at small-k, and the limits of interval coverage. - Send the first uncached placement request alone until the answering model is confirmed, including with
--budget 0. Refuse batch output on a model mismatch even after valid cached answers. A confirmed reply with
zero reported cost releases the gate; budget reservations still use the list-price estimate. - Reuse a placement for duplicate shown texts within the run, including with
--no-cache. This retains a text
hash and result for each distinct shown text, including while streaming. - Warn when
--scaleloads a fit marked over budget or with failed comparisons. Require an integer schema version. - From Python:
Ranking.scale(),jsort.Scale,jsort.placeandjsort.aplace;Jev.ask(..., provenance={})
reports who gave each answer. bench/simulate.pyalso measures placement against a fit to every pair, offline.- A negative
--seedis a usage error, not a traceback. A closed pipe no longer raises while a CSV header is written.
jev-sort 0.1.3
- Isolate cached answers by provider, endpoint, and model, and reset per-run budgets.
- Handle exhausted budgets, trivial top results, and comparison caps without unnecessary calls.
- Validate ranking inputs, including malformed or non-finite values, before scheduling comparisons.
Validation: 73 tests passed on Python 3.10 and 3.13; package metadata checks, credential scans, and installed-wheel smoke checks passed. Published PyPI artifact hashes match the verified local builds.