Handing off to Jev
Jev answers a typed judgment in ~250 ms at a judgment-model rate ($0.042/Mtok
in, $0 out) instead of LLM reasoning. It is a RATE win, not a token win: Jev
spends more tokens per decision, not fewer. So the saving is real only when
the decision leaves the conversation — which is what the routing below is
for. You stay the planner and the writer.
Route each decision: where are the facts × does it block?
| Where the facts are |
Nothing is blocked — you can keep working |
Blocked — nothing proceeds until this is decided |
| Already in your context |
jev_judge, every question about that state batched into ONE call (noul yes/no, choice next action, score quality) |
jev_gate on that one action before you run it — and if it is every tool call, wire jev-use hook gate as a PreToolUse hook once and the decision leaves the conversation for good: 24 gated commands, 17.1 s, zero LLM tokens, vs 46.9 s / $0.2366 through a supervisor LLM |
| Sitting in a file or tool output |
a script pipes the file to jev-use judge — the items never enter your context |
same CLI, from the script, then act on the verdicts it prints |
| To be written by you (new text, code, options you cannot enumerate) |
yours |
yours |
Rules that make it pay off
- Route bulk data by reference. When the items sit in a file or in tool
output, have a script pipe them to
jev-use judge — data pasted into a
jev_judge call travels through your context twice, as tool input and as
the verdict block back. Or route only the handful you genuinely cannot
settle yourself.
- Batch. Measured: 12 questions about one state in ONE call took 224 ms;
the same 12 one at a time took 2,662 ms. Never one call per item.
- State is everything Jev sees. Put the relevant facts (tool output, file
excerpts, task intent) into
state; Jev has no other context.
- Honor escalations. A verdict with
escalate: true hands that question
back to you: writing/open_ended mean it was structurally yours;
oversized means the state was too big to judge; unsure means Jev's
answer is only a prior (it's still in answer — use it as a hint);
unreachable means proceed as if Jev didn't exist.
- Don't route trivia. If you already know the answer, just act; a Jev
call you didn't need is still a call.
Numbers, lanes, variance and caveats: bench/RESULTS.md.
1---2name: jev-use3description: Handing off to Jev4---56# Handing off to Jev78Jev answers a typed judgment in ~250 ms at a judgment-model rate ($0.042/Mtok9in, $0 out) instead of LLM reasoning. It is a RATE win, not a token win: Jev10spends *more* tokens per decision, not fewer. So the saving is real only when11the decision **leaves the conversation** — which is what the routing below is12for. You stay the planner and the writer.1314## Route each decision: where are the facts × does it block?1516| Where the facts are | **Nothing is blocked** — you can keep working | **Blocked** — nothing proceeds until this is decided |17| --- | --- | --- |18| **Already in your context** | `jev_judge`, every question about that state batched into **ONE** call (`noul` yes/no, `choice` next action, `score` quality) | `jev_gate` on that one action before you run it — and if it is *every* tool call, wire `jev-use hook gate` as a PreToolUse hook **once** and the decision leaves the conversation for good: 24 gated commands, 17.1 s, **zero LLM tokens**, vs 46.9 s / $0.2366 through a supervisor LLM |19| **Sitting in a file or tool output** | a script pipes the file to `jev-use judge` — the items never enter your context | same CLI, from the script, then act on the verdicts it prints |20| **To be written by you** (new text, code, options you cannot enumerate) | yours | yours |2122## Rules that make it pay off2324- **Route bulk data by reference.** When the items sit in a file or in tool25 output, have a script pipe them to `jev-use judge` — data pasted into a26 `jev_judge` call travels through your context twice, as tool input and as27 the verdict block back. Or route only the handful you genuinely cannot28 settle yourself.29- **Batch.** Measured: 12 questions about one state in ONE call took 224 ms;30 the same 12 one at a time took 2,662 ms. Never one call per item.31- **State is everything Jev sees.** Put the relevant facts (tool output, file32 excerpts, task intent) into `state`; Jev has no other context.33- **Honor escalations.** A verdict with `escalate: true` hands that question34 back to you: `writing`/`open_ended` mean it was structurally yours;35 `oversized` means the state was too big to judge; `unsure` means Jev's36 answer is only a prior (it's still in `answer` — use it as a hint);37 `unreachable` means proceed as if Jev didn't exist.38- **Don't route trivia.** If you already know the answer, just act; a Jev39 call you didn't need is still a call.4041Numbers, lanes, variance and caveats: `bench/RESULTS.md`.