When Jev fails (TypeSafe AI)
What do real Jev implementations do when Jev returns an error, a malformed answer or an unsure answer, when no API key is set, or when a code path skips Jev? This page counts the answers across 64 implementations in eleven use cases, already published row by row on their domain pages, and turns them into an eight-question checklist for your own code. The title is an internal label: six failure phrases ("jev fallback", "jev timeout", "jev error handling", "jev fail open", "jev retry", "typesafe api error") got no relevant autocomplete suggestion on Google, YouTube, Bing or DuckDuckGo when the pool checked on .
Of 64 Jev implementations read in source, on a Jev error 35 stop or hold the action, 13 fall back to another model, rule or default, 8 are advisory or return no decision, and 8 let it through: 4 moderation bots, 2 agent hooks, a passage filter and an eval tool.
The eval tool is openlayer jevals: its report counts an errored eval as passed and its gate allows by default. Counting 5 fallbacks that can still end in the action as well, the action goes ahead on a Jev error in 13 of 64 (8 fail-open plus 5 fallbacks; details). The "8 are advisory or return no decision" are 3 advisory and 5 no-decision rows.
The 2 agent hooks are danna-zhou/jev-mcp for Claude Code and jev-judge for Hermes Agent, in enforce mode (its default is shadow).
Implementations were picked per domain page as stated there, not as a survey. The counts describe these 64 implementations at their pinned commits; they are not a rate for Jev integrations in general. "Not recorded" means the domain page and its research note do not record the cell; it is never inferred. n = 64 in every count. The official TypeSafe Claude Code plugin makes no runtime Jev call, so it is excluded from every denominator; the trycua/cua jev-use example calls a mock provider by default and is not counted either. Judge tools count from 7 Oct 2026: a judge whose own code turns Jev's answer into a score, pass/fail or gate is an action (an error that becomes a pass is fail-open; a dropped item is no-decision). The four judge tools on Jev as a judge form the LLM as a judge domain. The Jevals harness on Jev as a judge is not counted: its code is not public, so its failure cells are Reported from its methodology page, not read at a pinned commit. n8n nodes are counted with Continue On Fail (COF) off, the default; the COF-on result is given beside them. The pool ran nothing for this page: no bot, no browser agent, no eval, no Jev call.
What the 64 do, condition by condition
64 implementations per condition: each bar is split by what the code does (default settings)
- Jev error or timeoutHTTP error, rate limit, timeout; n8n with Continue On Fail off · n = 64 · not recorded 0/64
- 35/64 fail-closed
- 13/64 fallback
- 3/64 advisory
- 5/64 no-decision
- 8/64 fail-open
- 0/64 not recorded
action goes ahead 13/64 on a Jev error: the 8 fail-open rows (4 content-moderation bots, the danna-zhou hook, jev-judge in enforce mode, the Spring AI passage filter and openlayer jevals, whose report counts an errored eval as passed) plus 5 fallbacks that can still end in the action (QuantDinger after its LLM fallback; btc-hft-jev through rules-only; jev-permission-gate, where Claude Code's built-in classifier can still allow; rh-guard, where its lexical detectors can still allow; opencode-tool-gate, where OpenCode's default rules allow every tool, checked at v1.18.35). Not counted here: the 4 routing fallbacks and the LlamaIndex reranker, which return another model or the retriever's order by design; osuki, whose fallback routes to the default tier (the same routing-fallback convention; on the coding-agents page its tool call still runs); second-look, which shows a recommendation to a person and takes no action; jev-approvals and jev-curator, which hold; DeepEval, which aborts the run; and did-they-answer and competitor-hunter, which drop the item.
- Malformed answerunknown option, missing field, bad probability · n = 64 · not recorded 3/64
- 29/64 fail-closed
- 16/64 fallback
- 3/64 advisory
- 3/64 no-decision
- 10/64 fail-open
- 3/64 not recorded
- Below thresholdJev answers but is unsure; separate terms, never added to the error totals · n = 64 · not recorded 6/64
- 13/64 held
- 7/64 fallback
- 4/64 advisory
- 4/64 no-decision
- 13/64 acts-anyway
- 17/64 no-threshold
- 6/64 not recorded
- No API key configuredn = 64 · not recorded 19/64
- 29/64 fail-closed
- 9/64 fallback
- 3/64 advisory
- 0/64 no-decision
- 4/64 fail-open
- 19/64 not recorded
- Bypassa code path that acts without asking Jev · n = 64 · not recorded 33/64
- 31/64 recorded
- 33/64 not recorded
The same numbers as tables:
| Condition | n | fail-closed | fail-open | advisory | fallback | no-decision | not recorded |
|---|---|---|---|---|---|---|---|
| Jev error or timeout | 64 | 35 | 8 | 3 | 13 | 5 | 0 |
| Malformed answer | 64 | 29 | 10 | 3 | 16 | 3 | 3 |
| No API key configured | 64 | 29 | 4 | 3 | 9 | 0 | 19 |
| Condition | n | held | acts-anyway | fallback | no-decision | advisory | no-threshold | not recorded |
|---|---|---|---|---|---|---|---|---|
| Below threshold | 64 | 13 | 13 | 7 | 4 | 4 | 17 | 6 |
| Condition | n | recorded | not recorded |
|---|---|---|---|
| Bypass | 64 | 31 | 33 |
Counting judgements in the 5, 6 and 7 Oct recounts
- second-look is counted as a browser row although it never acts: it recommends, and a person buys.
- The JS
autoModeMiddleware(@langchain/typesafe0.0.2) is counted under frameworks, separately from the Python AutoModeMiddleware already counted on Claude Code / MCP guards. - Pydantic AI
TypeSafeModelis not a decision row: it raises Jev errors to the agent the builder writes. Its behaviour is on framework integrations. - ironbee-express with no key is counted fail-open (conditional: a cached recording replays unjudged), following the 4 Oct convention for conditional cells.
- 6 Oct: gulbaki/jev-llm-guard is not counted: it returns a verdict; it is not a decision. Its
jev-guardCLI exits 0 whatever the verdict (allow, review or block) and exits 1 only on errors. - 6 Oct: jev-judge (Hermes Agent) is counted although its default is shadow (logs only); its cells describe enforce mode.
- 6 Oct: osuki (OpenCode) is not counted in the "action goes ahead" line: its fallback routes to a default tier, under the same routing-fallback convention as the model routers and LlamaIndex.
- 7 Oct: the four judge tools on Jev as a judge are counted as the "LLM as a judge" domain (4 rows), with the same cells and colours as on that page. DeepEval counts although it is a library: its own test runner in the same repository aborts the run or fails the test case. The Jevals harness is not counted: its code is not public.
- 7 Oct: conditional judge cells follow the 4 Oct convention (the default configuration counts; the condition is in the note). openlayer: a Jev error is fail-open (the report says
passed; the gate allows by default), and its no-key cell is not recorded because neither the page nor its research note says which backend branch is the default. did-they-answer: malformed is fail-closed (missing answer keys stop the run); the missing-usagecase alone gives no-decision. competitor-hunter: a Jev error is no-decision; above 5% errors the run aborts. - 7 Oct: the Hermes plugins jev-approvals and jev-curator are now counted (they were "not settled" on 6 Oct). Hermes core v2026.9.24 runs an APPROVE without a person and sends errors to a person. Both do nothing until switched on: jev-approvals is off after install (core default
manual), and jev-curator observes by default. Their cells describe the switched-on modes. - 7 Oct: settled without a count change: rh-guard's default mode is
enforce; opencode-tool-gate's "action goes ahead" holds under OpenCode's default rules (v1.18.35: every tool allowed); osuki checked at 0.2.8, failure path unchanged.
The same counts by domain
Open a condition to see its counts per domain. Opening one closes the others. Each row sums to its n; "not recorded" is a column of its own. The domain name links to the page with the per-project rows.
Jev error or timeoutfail-closed 35, fail-open 8, advisory 3, fallback 13, no-decision 5 (of 64)
| Domain | n | fail-closed | fail-open | advisory | fallback | no-decision | not recorded |
|---|---|---|---|---|---|---|---|
| Ticket triage | 5 | 4 | 0 | 0 | 1 | 0 | 0 |
| Model routing | 6 | 1 | 0 | 0 | 4 | 1 | 0 |
| Content moderation | 6 | 1 | 4 | 0 | 0 | 1 | 0 |
| Claude Code / MCP guards | 6 | 1 | 1 | 3 | 1 | 0 | 0 |
| Email and lead | 5 | 4 | 0 | 0 | 0 | 1 | 0 |
| n8n nodes (COF off) | 5 | 5 | 0 | 0 | 0 | 0 | 0 |
| Trading and fraud | 7 | 5 | 0 | 0 | 2 | 0 | 0 |
| Browser and computer use | 8 | 7 | 0 | 0 | 1 | 0 | 0 |
| Frameworks | 4 | 2 | 1 | 0 | 1 | 0 | 0 |
| Coding agents | 8 | 4 | 1 | 0 | 3 | 0 | 0 |
| LLM as a judge | 4 | 1 | 1 | 0 | 0 | 2 | 0 |
| All | 64 | 35 | 8 | 3 | 13 | 5 | 0 |
n8n with COF on: fallback 4, no-decision 1 (of 5). The action goes ahead on a Jev error in 13 of 64: the 8 fail-open rows plus 5 fallbacks (2 trading, jev-permission-gate, rh-guard, opencode-tool-gate). osuki's default-tier fallback is not counted there (routing-fallback convention).
Malformed answerfail-closed 29, fail-open 10, advisory 3, fallback 16, no-decision 3, not recorded 3 (of 64)
| Domain | n | fail-closed | fail-open | advisory | fallback | no-decision | not recorded |
|---|---|---|---|---|---|---|---|
| Ticket triage | 5 | 4 | 0 | 0 | 1 | 0 | 0 |
| Model routing | 6 | 0 | 0 | 0 | 4 | 1 | 1 |
| Content moderation | 6 | 0 | 5 | 0 | 0 | 1 | 0 |
| Claude Code / MCP guards | 6 | 1 | 1 | 3 | 1 | 0 | 0 |
| Email and lead | 5 | 3 | 0 | 0 | 1 | 1 | 0 |
| n8n nodes (COF off) | 5 | 5 | 0 | 0 | 0 | 0 | 0 |
| Trading and fraud | 7 | 3 | 2 | 0 | 2 | 0 | 0 |
| Browser and computer use | 8 | 6 | 0 | 0 | 2 | 0 | 0 |
| Frameworks | 4 | 2 | 1 | 0 | 1 | 0 | 0 |
| Coding agents | 8 | 3 | 1 | 0 | 3 | 0 | 1 |
| LLM as a judge | 4 | 2 | 0 | 0 | 1 | 0 | 1 |
| All | 64 | 29 | 10 | 3 | 16 | 3 | 3 |
The 2 trading fail-open cells (jev-trader, fraud-jev) depend on the shape of the bad answer. jev-agent-browser is counted as a fallback (semantic target resolver), but the target it picks by word overlap is then clicked.
Below thresholdheld 13, acts-anyway 13, fallback 7, no-decision 4, advisory 4, no-threshold 17, not recorded 6 (of 64)
| Domain | n | held | acts-anyway | fallback | no-decision | advisory | no-threshold | not recorded |
|---|---|---|---|---|---|---|---|---|
| Ticket triage | 5 | 4 | 0 | 0 | 0 | 0 | 1 | 0 |
| Model routing | 6 | 1 | 0 | 2 | 1 | 0 | 2 | 0 |
| Content moderation | 6 | 1 | 3 | 0 | 0 | 1 | 1 | 0 |
| Claude Code / MCP guards | 6 | 1 | 1 | 1 | 0 | 3 | 0 | 0 |
| Email and lead | 5 | 1 | 1 | 2 | 1 | 0 | 0 | 0 |
| n8n nodes (COF off) | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 5 |
| Trading and fraud | 7 | 2 | 2 | 1 | 0 | 0 | 2 | 0 |
| Browser and computer use | 8 | 0 | 0 | 0 | 2 | 0 | 6 | 0 |
| Frameworks | 4 | 0 | 2 | 0 | 0 | 0 | 2 | 0 |
| Coding agents | 8 | 3 | 3 | 1 | 0 | 0 | 0 | 1 |
| LLM as a judge | 4 | 0 | 1 | 0 | 0 | 0 | 3 | 0 |
| All | 64 | 13 | 13 | 7 | 4 | 4 | 17 | 6 |
Counted with the below-threshold terms and never added to the error totals. n8n: the low-confidence outputs are optional, so all 5 are not recorded. jev-android (below 0.65) and computer-use-jev (mutating actions below 0.5) stop with BLOCKED or an error for the caller: no-decision, not held, because no person or review queue receives the item.
No API keyfail-closed 29, fail-open 4, advisory 3, fallback 9, not recorded 19 (of 64)
| Domain | n | fail-closed | fail-open | advisory | fallback | no-decision | not recorded |
|---|---|---|---|---|---|---|---|
| Ticket triage | 5 | 5 | 0 | 0 | 0 | 0 | 0 |
| Model routing | 6 | 0 | 0 | 0 | 1 | 0 | 5 |
| Content moderation | 6 | 0 | 1 | 0 | 0 | 0 | 5 |
| Claude Code / MCP guards | 6 | 1 | 1 | 3 | 1 | 0 | 0 |
| Email and lead | 5 | 4 | 0 | 0 | 0 | 0 | 1 |
| n8n nodes (COF off) | 5 | 0 | 0 | 0 | 0 | 0 | 5 |
| Trading and fraud | 7 | 3 | 0 | 0 | 3 | 0 | 1 |
| Browser and computer use | 8 | 6 | 1 | 0 | 1 | 0 | 0 |
| Frameworks | 4 | 4 | 0 | 0 | 0 | 0 | 0 |
| Coding agents | 8 | 3 | 1 | 0 | 3 | 0 | 1 |
| LLM as a judge | 4 | 3 | 0 | 0 | 0 | 0 | 1 |
| All | 64 | 29 | 4 | 3 | 9 | 0 | 19 |
Bypassrecorded 31, not recorded 33 (of 64)
| Domain | n | recorded | not recorded |
|---|---|---|---|
| Ticket triage | 5 | 0 | 5 |
| Model routing | 6 | 3 | 3 |
| Content moderation | 6 | 1 | 5 |
| Claude Code / MCP guards | 6 | 5 | 1 |
| Email and lead | 5 | 1 | 4 |
| n8n nodes (COF off) | 5 | 1 | 4 |
| Trading and fraud | 7 | 7 | 0 |
| Browser and computer use | 8 | 4 | 4 |
| Frameworks | 4 | 1 | 3 |
| Coding agents | 8 | 8 | 0 |
| LLM as a judge | 4 | 0 | 4 |
| All | 64 | 31 | 33 |
Pages published before 4 Oct had no bypass column, so "not recorded" here does not mean "none".
Domains with 3 or more implementations: 11 of 11 (4 to 8 each). How the pages picked their implementations is stated on each domain page.
Eight questions to ask of your own Jev integration
Apply each question to your own code. The counts show how the 64 answered it; the chips link to example rows on the domain pages. Chip colours: green holds or stops, red acts anyway, blue falls back, amber is advisory.
- When Jev errors or times out, does the action still happen?jev-judge: fail-open in enforce modeWordPress Jev Comment Triage: holds, retries, then a persondanna-zhou/jev-mcp: the command runsSpring AI JevDocumentFilter: unscreened passages keptopenlayer jevals: errored eval counted as passedjev-ultrafast: "no action executed"
35 of 64 stop or hold it. 8 let it happen unchecked: 4 content-moderation bots, 2 agent hooks (danna-zhou for Claude Code, jev-judge for Hermes), the Spring AI passage filter and openlayer jevals, whose report counts an errored eval as passed. None of the 7 browser agents clicks or types on a Jev error. 13 of 64 fall back, 3 of 64 are advisory, 5 of 64 return no decision; not recorded 0 of 64.
- What is your timeout, and what happens when it fires?btc-hft-jev: 0.40 s, then rules-onlyjkudish/jev-mcp: 60 s, error to the agent
Timeouts set in code range from 0.40 s (btc-hft-jev) to 180 s per task (DeepEval JevEval). Some set none: jev-for-chrome and Ulka have no request timeout. Coding-agent hooks and providers use 1.2 s (rh-guard) to 25 s (the two Hermes plugins; Hermes core's own default is 30 s). Timeouts were not tallied across all 64. Status codes and retries: errors and rate limits.
- If Jev answers in the wrong shape, do you treat it as "no" or as "yes"?fraud-jev: a non-numeric probability → allowjev-trader: any answer other than "sell" → buygbesse/zammad-jev-triage: checks model, option and probability
10 of 64 let the action go ahead on a malformed answer. 1 more (jev-agent-browser) guesses a target by word overlap and clicks it. 29 of 64 fail closed; 16 of 64 fall back (openlayer reads a non-numeric answer as 0.5); 3 of 64 are advisory; 3 of 64 return no decision; not recorded 3 of 64. Validate before acting.
- What happens when Jev is unsure?vynnlee/jev-mail: Review labelgbesse: review groupbackmeupplz/jev_antispam_bot: below 0.81, kept
13 of 64 send unsure items to a person or a review queue. 13 act anyway below their cut. 17 have no threshold at all, including 5 of the 7 browser agents and 3 of the 4 judge tools. 7 of 64 fall back, 4 of 64 are advisory, 4 of 64 return no decision; not recorded 6 of 64. Choosing a cut: confidence thresholds.
- What happens with no API key?WordPress triage: WordPress's own decision standsdanna-zhou hook: proceedsjev-fraud-shield: mock
29 of 64 refuse to start, error or hold the call. 4 proceed as if allowed: WordPress triage, the danna-zhou hook, ironbee-express when it replays a cached recording, and jev-judge. 9 fall back to an LLM, a mock, a heuristic or the host's own permission rules. 19 not recorded. 3 of 64 are advisory. Test it: testing without a key.
- Which code paths never ask Jev?jev-trader: the mock model trades without Jevbackmeupplz: group admins' messages skippedJevmail:
31 of 64 have a recorded bypass, including passthrough and replay modes in 4 browser agents, read-only or permission-request-only paths in 2 coding-agent gates (opencode-tool-gate, jev-kit), and the off or observe modes of the 2 Hermes plugins. Not recorded 33 of 64. List yours: exits, allow-lists, admin users, kill switches, "mock" modes.
/previewsimulator, no mailbox actioncomputer-use-jev: passthrough mode clicks with no Jev and no key - Is your fallback cheaper or riskier than failing?0xNatoshi/jev-codex-router: bills the frontier model on every Jev failureQuantDinger: asks an LLM, then allows
13 of 64 fall back to another model, scorer, rule set or default on a Jev error. second-look shows "Good deal — buy it" from a heuristic when Jev is unavailable. Not recorded 0 of 64.
- Is the failure written down, and does a failed log write block the action?QuantDinger: logs "audit persistence skipped" and continuesjev-trader: writes its log after the order is sentBillionsBobby/JevRouter: attaches
Not counted across the 64: the domain tables have no logging column. Record every failure with its reason.
provider_errorSpring AI JevDocumentFilter: logs a WARN with the number of unscreened passages
The questions are a design reading of the 64 rows, not a measured result. No count on this page comes from anywhere but the map below.
Checklist to paste
Select the block and copy it into your review.
- [ ] When Jev errors or times out, does the action still happen? (35 of 64 stop or hold it. 8 let it happen unchecked: 4 content-moderation bots, 2 agent hooks (danna-zhou for Claude Code, jev-judge for Hermes), the Spring AI passage filter and openlayer jevals, whose report counts an errored eval as passed. None of the 7 browser agents clicks or types on a Jev error. 13 of 64 fall back, 3 of 64 are advisory, 5 of 64 return no decision; not recorded 0 of 64.) - [ ] What is your timeout, and what happens when it fires? (Timeouts set in code range from 0.40 s (btc-hft-jev) to 180 s per task (DeepEval JevEval). Some set none: jev-for-chrome and Ulka have no request timeout. Coding-agent hooks and providers use 1.2 s (rh-guard) to 25 s (the two Hermes plugins; Hermes core's own default is 30 s). Timeouts were not tallied across all 64.) - [ ] If Jev answers in the wrong shape, do you treat it as "no" or as "yes"? (10 of 64 let the action go ahead on a malformed answer. 1 more (jev-agent-browser) guesses a target by word overlap and clicks it. 29 of 64 fail closed; 16 of 64 fall back (openlayer reads a non-numeric answer as 0.5); 3 of 64 are advisory; 3 of 64 return no decision; not recorded 3 of 64.) - [ ] What happens when Jev is unsure? (13 of 64 send unsure items to a person or a review queue. 13 act anyway below their cut. 17 have no threshold at all, including 5 of the 7 browser agents and 3 of the 4 judge tools. 7 of 64 fall back, 4 of 64 are advisory, 4 of 64 return no decision; not recorded 6 of 64.) - [ ] What happens with no API key? (29 of 64 refuse to start, error or hold the call. 4 proceed as if allowed: WordPress triage, the danna-zhou hook, ironbee-express when it replays a cached recording, and jev-judge. 9 fall back to an LLM, a mock, a heuristic or the host's own permission rules. 19 not recorded. 3 of 64 are advisory.) - [ ] Which code paths never ask Jev? (31 of 64 have a recorded bypass, including passthrough and replay modes in 4 browser agents, read-only or permission-request-only paths in 2 coding-agent gates (opencode-tool-gate, jev-kit), and the off or observe modes of the 2 Hermes plugins. Not recorded 33 of 64.) - [ ] Is your fallback cheaper or riskier than failing? (13 of 64 fall back to another model, scorer, rule set or default on a Jev error. second-look shows "Good deal — buy it" from a heuristic when Jev is unavailable. Not recorded 0 of 64.) - [ ] Is the failure written down, and does a failed log write block the action? (Not counted across the 64.) Counts: 64 Jev implementations read in source, 11 domains, 7 Oct 2026. Source: /p/jev-catalog/build/when-jev-fails/
All 64 rows
Show the full map: 64 implementations × 5 conditions, plus the 2 excluded entries
Each implementation links to its row on the domain page (the older Claude Code / MCP rows link to that page's failure matrix and jev-permission-gate to its own row; browser and framework rows link to their rows on the domain pages published 5 Oct; coding-agent rows link to their rows on coding agents, 6 and 7 Oct; judge rows link to their rows on Jev as a judge, read 4 Oct and counted from 7 Oct). The commit link opens the source tree at the pinned commit; file paths and line ranges for each cell are on the domain page. Documented source at the pinned commit, checked on the date of the domain page (see sources).
| Domain | Implementation (commit) | Jev error or timeout | Malformed | Below threshold | No key | Bypass |
|---|---|---|---|---|---|---|
| Ticket triage | CyrilBaah/jev-triage-desk commit 63913177 | fallback-archive lane | fallback-archive lane | no-thresholdno confidence gate | fail-closedHTTP 500 | not recorded |
| Ticket triage | tuhinmitra888/ai-jev-ticket-triage commit 3e8b83a8 | fail-closed502 | fail-closed500 | held< 0.5 → human triage | fail-closeddoes not start | not recorded |
| Ticket triage | enderkus/zammad-jev-dispatcher commit f999eca7 | fail-closed502; ticket stays Unclassified | fail-closed502 | held< 0.55 → Unclassified + note | fail-closedfails at boot | not recorded |
| Ticket triage | gbesse/zammad-jev-triage commit 5d2a0a78 | fail-closed503, retried; 20 s | fail-closedvalidated → 503 | held< 0.9 → review group | fail-closed503 | not recorded |
| Ticket triage | veermshah/jev-support-desk commit aef8fa0c | fail-closedbatch aborts; 10 s / 30 s | fail-closed | held< 0.6 → triage review | fail-closedexit 2 | not recorded |
| Model routing | LiteLLM complexity router commit 8d28e8d | fallback-configured tier or local scorer3 s | fallback-configured tier or local scorersame path as an error | no-thresholdconfidence logged only | not recorded | not recorded |
| Model routing | gargpratyush/jev-router commit 38da6b8 | fallback-current model3 s deadline | fallback-current model | fallback-current model< 0.3 | not recorded | recordedprompt phrases ("use opus") override Jev |
| Model routing | BillionsBobby/JevRouter commit e11084c | no-decision15 s / 20 s | no-decision | no-decision< 0.55 | not recorded | not recorded |
| Model routing | 0xNatoshi/jev-codex-router commit 8701ef7 | fallback-frontier model4 s | fallback-frontier model | no-thresholdconfidence logged only | fallback-frontier model | recordedkill-switch file; shadow mode |
| Model routing | nidhi-singh02/agent-router commit fb24d06 | fail-closedexits; nothing launched | not recorded"not traced" | held< 0.75 and consequential → you pick | not recorded | not recorded |
| Model routing | thinkany-ai/autojev commit d5d5731 | fallback-local selection2 s / 8 s | fallback-local selection | fallback-local selection< 0.5 | not recorded | recordedexplicit model request kept |
| Content moderation | WordPress Jev Comment Triage commit d848a5b | fail-closedcomment held, retried, then left for a person | fail-openread as 0.0; WordPress approval can stand | heldmiddle band | fail-openno provider → WordPress decides | not recorded |
| Content moderation | brainstormity/Jev-Moderation-Bot commit 325ea7f | fail-openmessage left up action goes ahead | fail-open→ legitimate | acts-anyway< 0.70 left up | not recorded | not recorded |
| Content moderation | frolleks/soter commit 756579a | fail-open"never blocks chat" action goes ahead | fail-open | advisory0.5–0.8 → mod-log review, no action | not recorded | not recorded |
| Content moderation | backmeupplz/jev_antispam_bot commit 0b07e88 | fail-openmessage kept action goes ahead | fail-open | acts-anyway< 0.81 kept | not recorded | recordedgroup admins skipped |
| Content moderation | CodeAlive-AI/mastra-jev-moderation commit 8735ea8 | fail-open5 s action goes ahead | fail-open | acts-anyway< 0.7 passed | not recorded | not recorded |
| Content moderation | Zafer-Liu/jev-demo-moderator commit cc47b25 | no-decisionerror field; batch 502 | no-decision | no-thresholdJev's Choice decides; code only tightens | not recorded | not recorded |
| Claude Code / MCP guards | danna-zhou/jev-mcp PreToolUse hook commit 436469a | fail-open8,000 ms; the command runs action goes ahead | fail-open | held"dangerous" < 0.6 → ask | fail-openthe hook proceeds Tested offline no Jev call, 29 Sep 2026, as published on the Claude Code page | recordednon-matching commands never sent |
| Claude Code / MCP guards | jev-claude 0.1.0, shadow mode as installed commit 7d7e876 | advisory | advisory | advisory | advisoryflags only | recordedread-only tools with a clean rule check not sent |
| Claude Code / MCP guards | jkudish/jev-mcp (audited 0.11.0; checked 0.13.0) commit 53fe575 | advisoryerror to the agent; 60 s | advisory"review" | advisory | advisoryerror to the agent | not recorded |
| Claude Code / MCP guards | LangChain AutoModeMiddleware (Python) 0.0.1a3 commit 4af7ab8 | fail-closedrun ends; 30 s | fail-closed | acts-anywayis_risky < 0.5 → tool runs; fixed cut | fail-closedmiddleware cannot be constructed | recordedtools not listed |
| Claude Code / MCP guards | oh-my-claudecode (v5.5.0; checked v5.6.0) commit 9fd35ec | advisoryshadow by default; the heuristic decides; 2,000 ms | advisory | advisoryno gate; shadow | advisorypoint off; heuristic | recordedpoints not listed; cap; open circuit |
| Claude Code / MCP guards | madisonrickert/jev-permission-gate commit 7349bc9 | fallback-built-in classifier1.5 s action goes ahead | fallback-built-in classifier | fallback-built-in classifierdefers | fallback-built-in classifier | recordedengine already decided or not auto mode; tools other than Bash, WebFetch, WebSearch; secrets or too-long input; measure mode; cache |
| Email and lead | Jevmail commit f6f20af | no-decisionemail stays unclassified | fallback-promotional | acts-anywayflagged; lane still assigned | fail-closed | recorded/preview simulator (no Jev call; no mailbox action) |
| Email and lead | ilyamk Gmail labeler commit ade42bf | fail-closedjob pauses | no-decisionskipped | fallback-full-body callthen its label is applied unchecked | fail-closed | not recorded |
| Email and lead | parth-kp IMAP classifier commit db96194 | fail-closedrun stops; 15 s | fail-closedno range check | no-decisionmarked processed | fail-closed | not recorded |
| Email and lead | vynnlee/jev-mail commit 61e346f | fail-closedretry later | fail-closed | heldReview label, kept in the inbox | fail-closed | not recorded |
| Email and lead | spam-leadgen-pipeline commit 78a7592 | fail-closedscript ends | fail-closed | fallback-not qualified | not recorded"not determined": depends on the SDK | not recorded |
| n8n nodes | Official node 0.9.0 commit c12537b | fail-closedCOF on: fallback-first route (or Fallback/Uncertain if set) | fail-closedRoute; Evaluate unvalidated | not recordedFallback/Uncertain outputs optional | not recorded | not recorded |
| n8n nodes | DomMonte 0.1.1 commit ff2afca | fail-closedCOF on: no-decision | fail-closed | not recorded | not recorded | not recorded |
| n8n nodes | vibe-with-me-tools 0.2.3 commit ddbfe85 | fail-closedCOF on: fallback-first route (or Low Confidence) | fail-closed | not recordedlow-confidence output optional | not recorded | not recorded |
| n8n nodes | taifoon 2.0.5 commit cdcc0f3 | fail-closedCOF on: fallback-review output | fail-closed"Fail Closed" on by default | not recorded | not recorded | recordedno routing configured → everything to pass |
| n8n nodes | zampierid4p 0.3.3 commit 549a545 | fail-closedCOF on: fallback-question 1's branch | fail-closedmissing answer → empty branch | not recorded | not recorded | not recorded |
| Trading and fraud | QuantDinger commit a5a9f4c | fallback-LLMthen fail-open; 8 s action goes ahead | fallback-LLMthen fail-open | fallback-LLMthen acts-anyway | fallback-LLMthen fail-open | recordedexits; grid/DCA/martingale; credit denial |
| Trading and fraud | jev-trader commit b587759 | fail-closedno new order; a resting order stays | fail-openany other answer → buy; conditional | no-threshold | not recorded | recordedmock model trades without Jev |
| Trading and fraud | Jev Trade commit a3f2f83 | fail-closedno new order; 4,000 ms | fallback-hold | no-threshold | fail-closed | recordedmock model trades without Jev |
| Trading and fraud | btc-hft-jev commit 96f3541 | fallback-last judgment / rules-onlycan trade; 0.40 s action goes ahead | fail-closedrun stops | acts-anywayhalf size; < 0.50 | fallback-mockforced dry run | recordedrules-only path |
| Trading and fraud | jev-fraud-shield commit eeb4fc6 | fail-closedstep-up | fail-closed | heldstep-up | fallback-mock | recorded0 or ≥ 3 flags decided without Jev |
| Trading and fraud | fraud-jev commit aa33b97 | fail-closedreview, HTTP 500 | fail-opennon-numeric → allow; conditional | acts-anywayallow below the cuts | fail-closed401 | recordedOFAC destination → review without Jev |
| Trading and fraud | expense-policy gate commit 161c33b | fail-closedbatch aborts; 30 s | fail-closed | heldmanual review | fail-closed | recordeddeterministic rejects skip Jev |
| Browser and computer use | browser-use/jev-ultrafast commit 1231850 | fail-closed25 s; "no action executed" | fail-closed | no-thresholdconfidence recorded only | fail-closed | not recorded |
| Browser and computer use | ironbee-ai/ironbee-express commit 05079b4 | fail-closed25 s, 3 tries | fail-closed | no-threshold | fail-openconditional: a cached recording replays unjudged; fail-closed without one | recordedcached replay; LLM takeover |
| Browser and computer use | forvela/jev-agent-browser commit eb35251 | fail-closed30 s | fallback-semantic target resolverthen the action runs | no-thresholdstop cuts only | fail-closedstart URL opened first | recordedclassify-mode regex overrides |
| Browser and computer use | dougsong/jev-android commit be8364a | fail-closed25 s | fail-closed | no-decision< 0.65 → replan ×2 → BLOCKED | fail-closed | not recorded |
| Browser and computer use | paulsmith/computer-use-jev commit ff0ad8b | fail-closed60 s | fail-closed | no-decisionmutating < 0.5 → not executed | fail-closed | recordedpassthrough mode (no Jev, no key) |
| Browser and computer use | chy4pro/jev-for-chrome commit d5c24de | fail-closedno timeout; 3 retries | fail-closed | no-threshold | fail-closed | not recorded |
| Browser and computer use | razaanstha/ulka commit bb04433 | fail-closedno timeout | fail-closed | no-threshold | fail-closed | recordedcached replay; forced first action (both approval-gated) |
| Browser and computer use | KaushikSiva/second-look commit 0c05d16 | fallback-heuristic verdict15 s; recommendation only | fallback-heuristic verdict | no-threshold | fallback-heuristic verdict | not recorded |
| Frameworks | Spring AI TypeSafe JevDocumentFilter 0.4.0 commit 51993bb | fail-openunscreened passages kept; 10 s × 3 attempts, 30 s budget action goes ahead | fail-open | acts-anywayinjection < 0.70 → passage kept | fail-closedblank key: startup exception | not recorded |
| Frameworks | LlamaIndex JevRerank (community) commit 421afda | fallback-retriever ordertop_n; 2.5 s | fallback-retriever order | no-thresholdoptional flag only, never drops | fail-closedValueError at construction | not recorded |
| Frameworks | LangChain ModelRouterMiddleware (Python) 0.0.1a3 commit 4af7ab8 | fail-closedrun ends; 30 s | fail-closed | no-thresholdalways answer.choice | fail-closedconstruction | not recorded |
| Frameworks | LangChain autoModeMiddleware (JS) 0.0.2 commit 417ddcf | fail-closedtool not run; 30 s × 3 attempts | fail-closed | acts-anywayrisk < 0.5 → tool runs; fixed cut | fail-closedconstruction | recordedunlisted tools never sent |
| Coding agents | keiffff/jev-kit jev-agent-review commit 3d74b05 | fail-closedheld for the host's prompt; SDK 10 s, no retry; 4 s hook timeout in the examples | fail-closedheld | held | fail-closedheld | recordedsensitive input deferred unsent; only permission requests |
| Coding agents | bloudhood/codex-jev-approval-hook commit b6242c9 | fail-closedheld for Codex's approval; 5 s | fail-closedheld | held | fail-closedheld | recordedBash, apply_patch and mcp__ only; denial cap |
| Coding agents | 24601/rh-guard (default mode enforce, so a default install can block) commit c2e682e | fallback-lexical detectors1.2 s action goes ahead | fallback-lexical detectors | acts-anywaysteer only | fallback-lexical detectors | recordedMCP tools not matched on Codex; shadow mode |
| Coding agents | justmytwospence/opencode-tool-gate commit bdf1ef8 | fallback-opencode permission rules3 s; OpenCode v1.18.35 default rules allow every tool ("*": "allow") action goes ahead | fallback-opencode permission rules | acts-anyway | fallback-opencode permission rules | recordedread-only tools; enabled: false |
| Coding agents | @osuki-dev/opencode-osuki-agent 0.2.7, checked at 0.2.8 npm 0.2.7; tag commit c96ce03; 0.2.8 (tag 0ae9e88): failure path unchanged | fallback-default tier10 s; routing fallback, not counted as going ahead | fallback-default tier | fallback-default tier | fallback-default tier | recordedfixed roles; reuse; pruning limits |
| Coding agents | DoGMaTiiC/hermes-jev jev-judge (enforce mode; default shadow) commit 5dddbea | fail-open3 s action goes ahead | fail-open | acts-anyway | fail-open | recordedcache; circuit breaker; unlisted tools |
| Coding agents | anpicasso/hermes-jev-approvals with Hermes Agent core v2026.9.24 (off after install: core default approval mode manual) commit 28be98a; core f97608f | fail-closedheld for a person (escalate); plugin 25 s, core default 30 s | fail-closedempty or unknown answer escalates to a person | heldAPPROVE below confidence 0.55 becomes ESCALATE | fail-closedplugin raises; core escalates to a person | recordedapprovals off or manual (the default); allowlist; commands not flagged |
| Coding agents | anpicasso/hermes-jev-curator (guard or apply mode; default observe) commit 4e8626c | fail-closedbackground skill delete or patch blocked; 25 s | not recorded | not recorded | not recorded | recordedoff and observe modes inert; foreground operations; creates |
| LLM as a judge | DeepEval JevEval (deepeval 4.2.8) commit a200ece | fail-closedrun aborts (default ignore_errors=False); with ignore_errors=True the test case is a FAIL; 180 s per task | fail-closeda missing answer raises, handled like an error | no-thresholdminimum confidence recorded, not acted on | fail-closed"there is no LLM to fall back to" | not recorded |
| LLM as a judge | openlayer jevals 0.1.4 commit 0a8f895 | fail-openthe report's passed treats an errored eval as not failed; the runtime gate defaults to on_error="allow". Dataset summary: no score, left out of the denominator (no-decision). 15 s, 4 retries action goes ahead | fallback-0.5a non-numeric Noul is read as 0.5; a missing answer is skipped | no-thresholddefault; the gate holds only if you set escalate_below or escalate_above and an on_escalate handler | not recordedwhich branch is the default is not recorded: Jev backend named → error (fail-closed); auto-detect → other backends, then fallback-LLM | not recorded |
| LLM as a judge | did-they-answer commit e0ee60c | no-decisionitem not written; retried on the next daily run; 60 s, 5 tries | fail-closedmissing answer keys stop the run (traced, not executed); a missing usage field alone gives no-decision | no-thresholdtop option stored; "referred" split at 0.5 | fail-closedexits without a key | not recorded |
| LLM as a judge | competitor-hunter (loading claude-x-jev c8662b0) commit 40613ea | no-decisionerrored items left out of the ranking; above 5% errors the run aborts (fail-closed); 60 s, 4 retries | not recordeditem marked unsure; outcome not determined | acts-anywayunsure items flagged but still ranked | fail-closedOpenRouter key required | not recorded |
| Claude Code / MCP guards | Official TypeSafe plugin commit 65a39f3. Excluded from every count: no runtime Jev call | n/aexcluded | n/aexcluded | n/aexcluded | n/aexcluded | n/aexcluded |
| LLM as a judge | Jevals harness Excluded from every count: its code is not public, so its cells are Reported from a methodology page, not read at a pinned commit | n/aexcluded | n/aexcluded | n/aexcluded | n/aexcluded | n/aexcluded |
- fail-closed or held
- fallback-… (named)
- advisory: Jev never decides
- no-decision
- fail-open or acts-anyway
- no-threshold
- not recorded
Where this map differs from earlier notes and pages
The starting point was a prep map from the 3 Oct run. Each difference was decided from the published domain page and its research note. None adds a new failure claim.
| Item | Earlier map or page | Used here |
|---|---|---|
| oh-my-claudecode, all cells | Prep map: fallback-heuristic twin | advisory at default settings (shadow; the heuristic always decides). fallback-heuristic only with OMC_JEV=<point>:active. On the 32-row tally: fallback 6 → 5, advisory 2 → 3 |
| No key: jev-claude and jkudish/jev-mcp | Prep map: not mapped | advisory for both, as the Claude Code / MCP page records ("Flags only"). Claude Code / MCP no-key cells: 5 of 5 recorded |
| Below threshold, relabelled to the 4 Oct terms | Prep map: CyrilBaah fail-open; LiteLLM and 0xNatoshi "acts anyway"; Zafer-Liu "Jev's own Choice decides"; agent-router advisory; review-group and review-label rows (tuhinmitra888, enderkus, gbesse, veermshah, vynnlee) fallback; WordPress "held band" | CyrilBaah, LiteLLM, 0xNatoshi and Zafer-Liu → no-threshold; agent-router, the review rows and WordPress → held. Vocabulary only; no fact changes |
| Bypass | Prep map: email re-processing guards (ilyamk, vynnlee, spam-leadgen) and agent-router's secret-pattern refusal listed as bypasses | not recorded: they skip or refuse work, they do not act without Jev. Jevmail's /preview simulator stays a bypass |
| Jevmail, unsure answer | Email page (3 Oct): advisory | acts-anyway (flagged): the lane is still assigned. Relabel only; applied on the email page on 4 Oct |
| spam-leadgen-pipeline, unsure answer | Email page (3 Oct): fail-closed, which is not a below-threshold term | fallback-not qualified. Relabel only; applied on the email page on 4 Oct |
| vynnlee/jev-mail, unsure answer | Email page (3 Oct): "fallback: Review label" | held (a review label kept in the inbox), under the same relabel rule as the other review rows; applied on the email page on 4 Oct |
| Denominator | Prep map: 32 (+1 n/a) | 32 for the six domains published before 4 Oct; 39 with trading (4 Oct); 51 with browser and computer use and frameworks (5 Oct); 58 with jev-permission-gate and the six coding-agent rows (6 Oct); 64 with the four judge tools and the two Hermes plugins (7 Oct). The official plugin, the trycua/cua mock example, jev-llm-guard and the Jevals harness stay out |
No disagreement was found between a published page cell and its note for the error, malformed and no-key cells of triage, routing, moderation, email and n8n (page tables spot-read against the prep map).
What was not verified
- No-key behaviour is not recorded for 19 of 64, and bypass for 33 of 64. The pages published before 4 Oct had no bypass column.
- n8n: the below-threshold and no-key cells are not recorded for all 5 nodes, and n8n core's own error-output handling was not read.
- Rows from the six earlier domains were recomputed from their published tables and notes, not re-read from source in this run. The trading rows were read from source on 4 Oct; the browser and framework rows on 5 Oct (helper reads spot-checked by the runner; the Spring AI auto-configuration lines were read by a helper and not spot-checked).
- Browser and framework rows: SDK defaults were not read (for example the @langchain/core retry backoff); whether computer-use-jev sends
[secure]field values and how second-look's card words its fallback verdict are not recorded. - Coding-agent rows (6 and 7 Oct): osuki was read from the npm 0.2.7 tarball and checked at 0.2.8 (tag
0ae9e88); the tarballs and tags were not matched file by file. jev-judge is counted in enforce mode (default shadow), jev-approvals is off after install and jev-curator observes by default; their cells describe the switched-on modes. jev-curator's malformed, below-threshold and no-key cells and its cache lifetime are not recorded; the step in which Hermes core hands the question to the plugin (call_llm) was not read. How Codex handles jev-kit's exit 2 was not read. - Judge rows (7 Oct): mapped from the published Jev as a judge table and its 4 Oct research note at the 4 Oct pins, not re-read from source; HEADs were not rechecked. openlayer's default no-key branch needs a one-file read. None of the four has a bypass column.
- The 2 trading fail-open cells for malformed answers depend on the shape of the bad answer.
- Logging (question 8) and timeouts (question 2) were not tallied across all 64.
- How any of the 64 behaves in real use: none was run here (no agent, hook, plugin, eval or MCP server was installed or run; no Jev call), and how many people use them is unknown.
Sources and check times (UTC)
- Recount of 7 Oct 2026, 05:23–05:30 UTC (run 10): the 58-row base as published here (R10-S30), plus 4 judge rows mapped from Jev as a judge (R10-S31) and its 4 Oct note (R10-S32) at DeepEval a200ece, openlayer jevals 0a8f895, did-they-answer e0ee60c and competitor-hunter 40613ea; plus 2 Hermes rows. Every condition row and every domain sums to its n (script). No existing row changed a cell.
- Hermes rows, 7 Oct 2026, 05:19–05:26 UTC (helper reads; runner spot-checks 05:24–05:25 matched): jev-approvals 28be98a (
plugin/jev_policy.pyL13, L54–59; R10-S41) with Hermes Agent core v2026.9.24 f97608f (tools/approval.pyL774–790,tools/approval_smart.pyL115–131; R10-S101–R10-S105, R9-S61); jev-curator 4e8626c (plugin/engine.pyL91–94,plugin/guard.pyL57–74, L143–160,plugin.yamlL50–53; R10-S106–R10-S111). Settled without a count change: rh-guard default mode (src/lib/risk/kinds.tsL176–189 at c2e682e; R10-S117, R10-S118); OpenCode v1.18.35 default rules (packages/opencode/src/agent/agent.tsL119–136 at 53d1eab; R10-S114–R10-S116); osuki 0.2.8, tag0ae9e884a97a5539fef3f0772318a628c1f75e00(R10-S112, R10-S113). - Recount of 6 Oct 2026, 05:22–05:29 UTC (run 9): the 51-row base as published here, read 05:25:44, plus 7 new rows; every domain row and total sums to its n (script). No existing row changed.
- jev-permission-gate: madisonrickert/jev-permission-gate 7349bc9 (
hooks/policy.ts,hooks/register.ts,hooks/typesafe.ts), read 4 Oct 2026 (run 7); HEAD = that pin bygit ls-remote, 6 Oct 2026, 05:20:19 (R9-S70). Not counted: gulbaki/jev-llm-guard 7c7b1b5 (src/cli.js,src/web-server.js; R9-S70, R9-S71). - Coding agents: six rows read at pinned commits, 6 Oct 2026, 05:14–05:25 (helper reads spot-checked by the runner at 05:22): jev-kit 3d74b05 (
packages/hook-adapters/src/index.ts,packages/agent-review/src/index.ts,packages/decision-contract/src/index.ts,packages/cli/src/cli.ts; R9-S72, R9-S73); codex-jev-approval-hook b6242c9 (hook.ps1; R9-S81); rh-guard c2e682e (src/lib/risk/score.ts,jev.ts,hooks.ts,hosts.ts,hooks/run.ts; R9-S82); opencode-tool-gate bdf1ef8 (src/index.ts,src/jev.ts,src/judge.ts; R9-S74);@osuki-dev/opencode-osuki-agent0.2.7, tag commitc96ce03c1c7dfc5c6fdf9d966691549101c68080(dist/index.js; R9-S80); hermes-jev jev-judge 5dddbea (plugins/jev-judge/__init__.py,jev.py,gate.py,plugin.yaml; R9-S63). - Recount of 5 Oct 2026, 05:29 UTC (run 8): the 39-row base as published here, read 05:26, plus 12 new rows; every domain row and total sums to its n. No existing row changed.
- Browser and computer use: eight projects read at pinned commits, 5 Oct 2026, 05:12–05:24 (runner spot-check of 15 key lines): jev-ultrafast 1231850 (
jev_ultrafast/model.py,agent.py); ironbee-express 05079b4 (src/engine/systemone.ts,src/agent/policy.ts,agent.ts,run/runner.ts); jev-agent-browser eb35251 (src/decision.js,src/loop.js,src/classifier.js,cli.js); jev-android be8364a (JevProvider.kt,ProviderTransport.kt,JevAgent.kt,Models.kt); computer-use-jev ff0ad8b (decide/decide.go,typesafe/client.go,cmd/computer-use-jev/main.go); jev-for-chrome d5c24de (src/background/agent.ts,src/shared/providers/http.ts,typesafe.ts); Ulka bb04433 (apps/extension/src/agent/vercel-jev.ts,agent-runner.ts,approvals.ts,background.ts); second-look 0c05d16 (backend/app/jev.py,backend/app/research.py). Not counted: trycua/cua jev-use ba0033a (run.py: mock provider by default). - Framework integrations: four decision rows read at pinned tags or commits, 5 Oct 2026, 05:12–05:27 (runner spot-check of 26 key lines, plus its own read of the three decision paths): Spring AI TypeSafe 51993bb (
JevDocumentFilter.java,RetryPolicy.java,TypeSafeConstants.java); LlamaIndex JevRerank 421afda (base.py,utils.py); LangChain ModelRouterMiddleware 4af7ab8 (model_router.py,classifier.py); LangChain autoModeMiddleware 417ddcf (src/middleware/autoMode.ts,classifier.ts). - Domain tables re-read on 4 Oct 2026 at 05:19; counts recomputed 05:19–05:30. Each cell's file path and line range is on its domain page.
- Support-ticket triage: five projects read at pinned commits, 1 Oct 2026, 05:32–05:36.
- Model routing: six routers read at pinned commits, 2 Oct 2026, 05:16–05:21.
- Content moderation: six projects read at pinned commits, 2 Oct 2026, 05:23–05:27.
- Claude Code and MCP guards: integrations read in pinned source, 29 Sep 2026, 07:09–07:14; versions rechecked 3 Oct 2026, 05:21 (oh-my-claudecode at v5.6.0, jkudish/jev-mcp at 0.13.0). The danna-zhou no-key cell was also Tested offline there (no Jev call), 29 Sep 2026.
- Email and lead sorting: five projects read at pinned commits, 3 Oct 2026, 05:19–05:27.
- Jev in n8n: five nodes read at pinned commits, 3 Oct 2026, 05:20–05:27.
- Trading and fraud gates: seven projects read at pinned commits, 4 Oct 2026, 05:14–05:21: QuantDinger a5a9f4c (
backend_api_python/app/services/ai_decision_filter.py,services/strategy_v2/live_execution.py,routes/quick_trade.py,routes/quick_trade_ai.py,routes/alpaca.py,services/trading_executor.py,services/pending_order_worker.py,tests/test_ai_decision_filter.py); jev-trader b587759 (src/config.ts,model.ts,trader.ts,market.ts,server.ts); Jev Trade a3f2f83 (src/config.ts,model.ts,plan.ts,trader.ts,index.ts,market.ts,sleeves.ts,server.ts); btc-hft-jev 96f3541 (jevloop/client.py,loop.py,policy.py,battery.py,ladder.py,state.py,strategy.py,limits.py,execution/alpaca.py); jev-fraud-shield eeb4fc6 (jev_client.py,decision_engine.py,demo.py); fraud-jev aa33b97 (src/lib/fraud.ts,src/app/api/analyze/jev/route.ts); expense-policy gate 161c33b (src/jev_expense_gate/cli.py,jev_client.py,policy.py,pipeline.py,config.py,config/expense-policy.json). - Query wording: Google suggest (
client=firefox), YouTube (ds=yt), Bing (osjson) and DuckDuckGo (ac), 4 Oct 2026, 05:21:29, for "jev fallback", "jev timeout", "jev error handling", "jev fail open", "jev retry" and "typesafe api error": no relevant suggestion (the same result as 3 Oct). A suggestion is a demand signal, never a volume.