Repository navigation
[Fix] Pin Jev on the direct TypeSafe path (jev-1.13.0), honour TYPESAFE_MODEL, record requested_model - #95
Merged
Merged
Conversation
…EL there, record requested_model (#93)
hsliuustc0106
approved these changes
Oct 24, 2026
hsliuustc0106
left a comment
Contributor
There was a problem hiding this comment.
Maintainer review (light-impact + self-review)
Tip: 62ebc820da90b903c1456b467df8d225d40cb55f · MERGEABLE · required checks green on this head (core 3.11/3.13, full, benchmarks).
Impact
- changed:
TYPESAFE_DEFAULT_MODELpin,client_from_envhonouringTYPESAFE_MODEL,requested_modelprovenance - callers/dependents (first hop):
JevModel.from_env, browser tick recording viaDecision.provenance - related tests:
tests/test_decision_models_jev.py,tests/test_browser_policy.py - not expanded: OpenRouter proxy path beyond existing override behaviour
Risk: low · Missing tests: none obvious · Regression: default id change for direct TypeSafe callers who relied on moving jev-latest (intentional; override documented).
Self-review readiness: Template answers traceable to #93; demo N/A appropriate for config/provenance chore. No blocking gaps.
Verdict: APPROVE — correct, scoped, CI green on tip.
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.
Required human contributor answers
Per the repo owner's standing instruction (Danyang, see #71 discussion), the intent items below are filled from issue #93 rather than waiting for a human answer.
What outcome are you trying to achieve?
Answer: (from [Deps] Pin Jev on the direct TypeSafe path (it sends jev-latest) and re-run benchmarks on jev-1.14.0 #93) Saved runs and published numbers say which Jev answered them, and two runs a week apart don't differ just because
jev-latestmoved.What is the highest-leverage variable for that outcome?
Answer: The model id the direct TypeSafe path sends by default (
jev-latest, a moving alias, with no override).How will this work move that variable rather than create busywork?
Answer: It pins the default to
jev-1.13.0(the version every recorded number used), letsTYPESAFE_MODELchoose another version on that path, and records the requested id in each step.Who is the customer or user, and what do they actually need?
Answer: Users with a direct
TYPESAFE_API_KEYand anyone comparing benchmark runs; they need reproducible runs and to know which version answered.After answering the four questions: is a PR needed at all to achieve this outcome?
Human decision and rationale (or explicit source reference): Yes, the default is a code constant in
s1a/decision_models/wire.py(#93 scope items 1, 2 and 4).For a bug fix: link actual observed failure evidence.
Evidence: Not a crash. Before this PR
client_from_env("typesafe", ...)always usedTYPESAFE_DEFAULT_MODEL = "jev-latest"and ignoredTYPESAFE_MODEL(see the table in #93 and the oldwire.py). TypeSafe's 1.14 post saysjev-latestmoves tojev-1.14.0a week after 2026-10-14.Why
Closes #93 (items 1, 2 and 4; item 3, the 1.13.0 vs 1.14.0 benchmark re-run, needs live TypeSafe keys and is left for a follow-up, see below).
The direct TypeSafe path sent the moving alias
jev-latest, while the OpenRouter path and every published number use 1.13.TYPESAFE_MODELwas ignored on the direct path.How
s1a/decision_models/wire.py:TYPESAFE_DEFAULT_MODEL = "jev-1.13.0"; thetypesafebackend readsTYPESAFE_MODELand falls back to the pin. An OpenRouter id (typesafe/...) there is aMODEL_SERVICE_CONFIG_ERRORthat says to use a TypeSafe name or setTYPESAFE_API_URL, instead of a request TypeSafe would reject.s1a/decision_models/jev.py+types.py:JevModelkeepsrequested_modelin the reply's raw payload, and it is a provenance key, so tool-front ticks get it throughdecision.provenance.modelstays the id the response reports, else the one sent.s1a/browser/decision_model.py: browser ticks now recordmodeland (for Jev)requested_model.What
jev-latestchanges tojev-1.13.0. SetTYPESAFE_MODEL=jev-1.14.0to try 1.14.requested_model(tool and browser ticks),model(browser ticks).docs/configuration.md(both defaults, override, 60-day deprecation notice for 1.13.0),.env.example,docs/why.md,docs/browser-front.md, a note indocs/benchmarks.mdthat the 2026-09-19jev-latestrun was on 1.13; CHANGELOG under Changed.Verification
uv run ruff format --check . && uv run ruff check . && uv run ty check: all passuv run pytest -q(996 passed, 127 skipped) andscripts/smoke.sh(exit 0)CHANGELOG.mdand the docs say what the code does nowNew tests: no default is
jev-latest/jev-preview;TYPESAFE_MODELoverrides the pin on the direct path and the empty value falls back; an OpenRouter id on the direct path is a config error (intests/test_decision_models_jev.pyandtests/test_browser_policy.py);requested_modelis recorded next to a response-reportedmodel; browser ticks carry both.Demo / evidence
main5693f51. Follow-up for [Deps] Pin Jev on the direct TypeSafe path (it sends jev-latest) and re-run benchmarks on jev-1.14.0 #93 item 3: re-run public231,s1a probeand the--order reverseflip rate onjev-1.13.0andjev-1.14.0with a TypeSafe key, then decide whether to move the default.