Evergreen concept
TypeSafe Jev Limitations: The 9 Failure Modes and Code Workarounds
The 9 documented failure modes in Jev 1.13—including math, counting, date comparisons, and context rot—with practical engineering workarounds.
While TypeSafe Jev delivers fast structured decisions, it operates within sharp architectural boundaries documented by TypeSafe as "model jaggedness." Jev cannot generate text, cannot reliably perform arithmetic or count items, treats dates as literal strings rather than chronological points, degrades under multi-hop indirection, and suffers accuracy drops when given noisy state payloads. Operating Jev reliably in production requires keeping deterministic calculations and chronological logic in traditional code while using Jev strictly for narrow perceptual classifications.
The 9 Documented Failure Modes and Code Workarounds
1. Literal Reading (Negation and Scope Traps)
- Failure Mode: Jev evaluates the literal surface syntax of a question rather than inferring implicit intent. Questions containing double negatives, ambiguous scope qualifiers ("almost always", "rarely"), or conversational sarcasm frequently produce inverted or uncalibrated probabilities.
- Production Workaround: Write question instructions as positive, declarative assertions. Avoid negatives. Instead of asking
"Is this customer not dissatisfied?", ask"Is this customer satisfied?".
2. Math and Arithmetic Failures
- Failure Mode: Jev is a non-autoregressive classifier, not a math engine. It cannot perform basic addition, calculate order subtotals, or count how many items exist in an array passed inside the
state. - Production Workaround: Perform all counting, aggregation, and mathematical operations in application code before passing values to Jev. Include the precomputed result in the state:
// Do not ask Jev: "Does the user have more than 3 failed attempts?"
// Precompute in code:
const failedCount = user.loginAttempts.filter(a => !a.success).length;
const state = { failedCount, isSuspiciousLocation: checkGeoIp(ip) };
3. Date and Time Comparison
- Failure Mode: Jev treats timestamps and dates (
2026-09-15vs2026-09-20) as literal alphanumeric strings rather than sequential temporal points. Asking Jev whether an event happened "before or after" a specific date produces erratic results. - Production Workaround: Compute elapsed duration or relative days in code. Pass relative metrics like
days_since_signup: 14oris_past_expiration: truedirectly into the state payload.
4. Multi-Hop Indirection
- Failure Mode: Jev’s single forward pass cannot perform chain-of-thought scratchpad reasoning. If answering a question requires looking up value A, cross-referencing value B, and deducing conclusion C, accuracy plummets.
- Production Workaround: Flatten relationship graphs in software. Resolve foreign keys, user tiers, and policy clauses into a flattened key-value dictionary before calling
/v1/systemone.
5. Large State with Irrelevant Detail (Context Rot)
- Failure Mode: Although Jev supports up to 32,000 tokens of state, passing massive uncurated payloads (such as raw HTML pages or entire database schemas) causes severe attention dilution. Decision accuracy degrades substantially on bloated inputs.
- Production Workaround: Filter state payloads strictly to the information required for the decision. Cap state objects to 500–1,500 relevant tokens.
6. Vulnerability to Adversarial Content
- Failure Mode: Because untrusted user input often populates the
statefield (e.g., customer support emails), prompt injection attacks embedded inside user text can attempt to override question criteria. - Production Workaround: Isolate untrusted input into dedicated sub-keys (e.g.
state.raw_untrusted_input) and clearly instruct Jev in the question criteria to evaluate the text as data rather than executable instructions.
7. Contradictory Criteria and Rule Conflicts
- Failure Mode: When developers provide criteria dictionaries with overlapping or contradictory definitions for different options, Jev cannot autonomously negotiate the conflict and splits probability masses unpredictably.
- Production Workaround: Ensure categorical criteria are mutually exclusive. Write unit test suites that assert option criteria do not share overlapping trigger words.
8. Lack of Structural Invariants Across Questions
- Failure Mode: Jev evaluates each question in the
questionsdictionary independently. It does not enforce mathematical consistency between separate questions. For instance, Question A might decideis_fraud: truewhile Question B on the same state decidesaccount_risk: "low". - Production Workaround: Never rely on Jev to synchronize answers across questions. If two decisions are logically coupled, combine them into a single
choicequestion with composite options (e.g.,fraud_and_high_risk,legitimate_and_low_risk).
9. Inability to Generate Text or Explanations
- Failure Mode: Jev does not possess a language generation head. It cannot explain why it made a choice, generate customer-facing explanations, or output formatted text summaries.
- Production Workaround: For workflows requiring human explanations (such as loan rejections or legal compliance), use Jev for the fast initial probability gate, and route cases needing narrative explanations to an autoregressive model (Claude, GPT-4o) with access to Jev's output confidence.