Recipes: measured question shapes
What the recipes are
Section titled “What the recipes are”The recipes are eighteen everyday decisions an agent or a script hands to OpenJevX, each as a call you can run against your own server. 1
Every recipe is one POST /v1/systemone with a state and named questions. 2
Each recipe was run on 2026-10-03 against a local OpenJevX server (model 0.5.2, server 0.5.7, CPU, Apple M5 Pro), and the output was pasted unedited, including the wrong and unsure ones. 3
The calls themselves, ready to copy, are on the runnable recipes pages.
How to use them
Section titled “How to use them”Your inputs will score differently: copy the pattern, not the numbers, and test on your own data. 4
Act on noul at or above 0.8, or confidence at or above 0.6 for a choice or score. 5
Act on the no when noul is at or below 0.2. 6
For anything in between, rewrite the question more narrowly, check it yourself, or ask the user. 7
An HTTP error means the call failed; never treat it as a no. 8
These are the jevx CLI’s default thresholds. 9
The eighteen recipes
Section titled “The eighteen recipes”The verdict column uses three words: confident (right and over the thresholds above), unsure (between them), missed (wrong, or unsure where the recipe expects a clear answer).
| recipe | what it decides | type | answer the recipe recorded | run on | verdict |
|---|---|---|---|---|---|
| Find the failures in a log | Keep only the log lines an on-call engineer would act on | yes/no (noul) per line |
ERROR and FATAL lines yes (0.90); INFO lines no (0.08-0.09); slow-query WARN no (0.10) | model 0.5.2, server 0.5.7, CPU | confident: right on every line 10 11 12 |
| Route a ticket queue | Which team owns a ticket | pick-one (choice) |
all five tickets routed as expected; dark-mode ticket 0.71, the others 0.96-0.98 | model 0.5.2, server 0.5.7, CPU | confident 13 14 15 |
| Rank search results | Which search results to open, sorted by the probability of yes | yes/no (noul) per result |
best hit first (0.64); “Refund policy for annual plans” only 0.36 | model 0.5.2, server 0.5.7, CPU | unsure: the order is right, the scores are not; use the order, not a fixed cut-off 16 17 18 |
| Pick a value among candidates | Code parses the candidate dates; the model chooses which one is the due date | pick-one (choice) |
picks a (the issue date, 0.90 from curl and jevx) instead of b (2026-10-16) |
model 0.5.2, server 0.5.7, CPU | missed: wrong, and confidently; compute due dates in code 19 20 21 |
| Check a claim against the source | Does the document say what you are about to write? | yes/no (noul) |
no, P(yes) 0.12 | model 0.5.2, server 0.5.7, CPU | confident: right 22 23 24 |
| Before asking the user “A or B?” | What would the user want next, given what they already said | pick-one (choice) |
push at 0.66 (curl) and 0.67 (jevx) |
model 0.5.2, server 0.5.7, CPU | confident, barely: just over jevx’s 0.6 confidence line 25 26 27 |
| Is this command dangerous? | Is a command dangerous, asked before running it | yes/no (noul) |
P(yes) 0.55, jevx says unsure | model 0.5.2, server 0.5.7, CPU | missed; treat unsure as yes for anything that rewrites shared history 28 29 30 |
| Prompt injection in a fetched page | Does fetched text try to instruct an AI assistant? | yes/no (noul) |
P(yes) 0.34, jevx says unsure | model 0.5.2, server 0.5.7, CPU | missed; treat unsure here as yes 31 32 33 |
| Which file to open first | Which file to open first, sorted by the probability of yes | yes/no (noul) per path |
gateway.go first (0.62), retry.go (0.42); third pick store.go (0.15) is not a candidate | model 0.5.2, server 0.5.7, CPU | right order; open the first two 34 35 36 |
| Flaky test or real bug? | Is a CI failure a flaky test or a real bug | pick-one (choice) per failure |
rounding failure bug (0.63), network timeout flaky (0.78), nil pointer bug (0.90); websocket reset that passed on retry unsure (0.55) | model 0.5.2, server 0.5.7, CPU | three of four right; one unsure 37 38 39 |
| Sort PR review comments | Is a review comment must-fix, should, nit or none? | pick-one (choice), four ways |
five of six right; “nit: rename x to count” comes back should (0.66) instead of nit |
model 0.5.2, server 0.5.7, CPU | five of six right; one missed 40 41 42 |
| Do it here or hand it to a smaller model? | How much reasoning a task needs | rating (score) |
trivial (level 0 at 0.68, expected level 0.37) | model 0.5.2, server 0.5.7, CPU | confident: right 43 44 45 |
| Question or instruction? | Answer the message, or change code | pick-one (choice) |
answer (0.89) | model 0.5.2, server 0.5.7, CPU | confident: right 46 47 48 |
| Secret in a file before writing it | Does a line hold a secret, before it is written to disk or a commit | yes/no (noul) |
P(yes) 0.20, jevx says unsure | model 0.5.2, server 0.5.7, CPU | missed; for secrets use a pattern scanner, do not rely on this answer 49 50 51 |
| Did the build succeed? | Did the build succeed, over build output before reporting “done” | yes/no (noul) |
no, P(yes) 0.13 | model 0.5.2, server 0.5.7, CPU | confident: right; a grep FAIL is still cheaper 52 53 54 |
| Which tool should handle this? | Which function name should handle a natural-language request | pick-one (choice) |
refund_payment 0.97 | model 0.5.2, server 0.5.7, CPU | confident: right 55 56 57 |
| Several judgements in one call | Urgent, which team, and how severe, in one request | yes/no, pick-one and rating | urgent yes (0.91), severity high (0.93); team billing at only 0.55 from curl, api 0.79 from jevx | model 0.5.2, server 0.5.7, CPU | urgent and severity confident; team unsure 58 59 60 |
| Would the user accept this turn? | Would the user accept the agent’s own final message, before handing back | yes/no and rating | curl questions lean accept (0.86); jevx judge says reject (0.59), accept 0.09 |
model 0.5.2, server 0.5.7, CPU | unsure: neither is confident enough to act on alone 61 62 63 |
What the misses teach
Section titled “What the misses teach”When the answer is unsure, the fix is usually a narrower question. 64
Name the exact thing you are looking for, say what counts as yes, and let code do arithmetic and dates. 65
The model judges text, it does not do date arithmetic. 66
On the secret check, an unsure answer should be treated as yes: a missed secret costs more than a false alarm. 67
Never claim a build succeeded unless the answer is a confident yes; for a pass/fail line, a plain grep FAIL is cheaper and exact. 68
Guarding an agent’s shell commands: jevx bash-guard
Section titled “Guarding an agent’s shell commands: jevx bash-guard”The jevx bash-guard plugin acts before a shell command runs: it refuses one that would destroy data and asks about one that touches remote systems. 69
jevx ships four plugins, stop-judge, bash-guard, injection-screen and route, and all of them start off. 70 71
bash-guard runs before a shell command (PreToolUse:Bash) and asks three questions: destroys, remote and irreversible. 69
It denies a command when destroys >= 0.8 && irreversible >= 0.6, and warns when destroys >= 0.5 || remote >= 0.8. 72
$ jevx plugin list # stop-judge, bash-guard, injection-screen, route: all off$ jevx plugin test bash-guard "rm -rf / --no-preserve-root" # decision: deny (destroys 0.91, irreversible 0.87)$ jevx plugin enable bash-guard # shadow: logs what it would do$ jevx plugin mode bash-guard act # now it refuses for real$ jevx plugin log bash-guard # every decision, with the answersEnabling it starts in shadow mode, which only logs what it would do; jevx plugin mode bash-guard act makes it refuse for real. 73
In a real Claude Code session the guard refused rm -rf ./junk, and plugins speak Claude Code’s hook protocol. 74
See Question types for how each type is encoded and read, and Use cases for which questions work.
Sources
Section titled “Sources”Footnotes
Section titled “Footnotes”-
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/README.mdL3–4 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/README.mdL34–35 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/README.mdL45–46 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/README.mdL50 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/README.mdL77–79 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/README.mdL80 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/README.mdL81 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/README.mdL82 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/README.mdL84 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/01-find-failures-in-a-log.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/01-find-failures-in-a-log.mdL26 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/01-find-failures-in-a-log.mdL71 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/02-route-a-ticket-queue.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/02-route-a-ticket-queue.mdL25 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/02-route-a-ticket-queue.mdL56 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/03-rank-search-results.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/03-rank-search-results.mdL24 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/03-rank-search-results.mdL50 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/04-pick-a-value.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/04-pick-a-value.mdL24 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/04-pick-a-value.mdL48 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/05-check-a-claim.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/05-check-a-claim.mdL24 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/05-check-a-claim.mdL48 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/06-before-asking-a-or-b.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/06-before-asking-a-or-b.mdL13 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/06-before-asking-a-or-b.mdL37 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/07-is-this-command-dangerous.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/07-is-this-command-dangerous.mdL13 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/07-is-this-command-dangerous.mdL37 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/08-prompt-injection.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/08-prompt-injection.mdL25 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/08-prompt-injection.mdL49 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/09-which-file-first.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/09-which-file-first.mdL26 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/09-which-file-first.mdL52 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/10-flaky-or-real-bug.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/10-flaky-or-real-bug.mdL24 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/10-flaky-or-real-bug.mdL54 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/11-sort-review-comments.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/11-sort-review-comments.mdL26 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/11-sort-review-comments.mdL58 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/12-effort-level.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/12-effort-level.mdL13 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/12-effort-level.mdL37 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/13-question-or-instruction.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/13-question-or-instruction.mdL13 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/13-question-or-instruction.mdL37 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/14-secret-before-writing.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/14-secret-before-writing.mdL13 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/14-secret-before-writing.mdL37 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/15-did-the-build-succeed.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/15-did-the-build-succeed.mdL13 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/15-did-the-build-succeed.mdL37 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/16-which-tool.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/16-which-tool.mdL13 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/16-which-tool.mdL37 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/17-several-judgements.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/17-several-judgements.mdL13 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/17-several-judgements.mdL39 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/18-would-the-user-accept.mdL3 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/18-would-the-user-accept.mdL13 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/18-would-the-user-accept.mdL42 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/README.mdL84–85 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/README.mdL85 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/04-pick-a-value.mdL44 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/14-secret-before-writing.mdL33 ↩ -
openjevx @ v0.5.9 (ee2a1f4) ·
recipes/15-did-the-build-succeed.mdL33 ↩ -
jevx @ 4a4722d (4a4722d) ·
README.mdL147 ↩ -
jevx @ 4a4722d (4a4722d) ·
core/plugin.goL45 ↩ -
jevx @ 4a4722d (4a4722d) ·
core/plugin.goL50 ↩ -
jevx @ 4a4722d (4a4722d) ·
README.mdL149–150 ↩ -
jevx @ 4a4722d (4a4722d) ·
README.mdL154–157 ↩