# Jaggedness

What Jepela gets wrong, as measured, so that you design around it rather than find out later. Measured on 2026-09-22 and 2026-09-23 with the Jepela checkpoints, unless a line gives another date. Other versions differ.

## Reading

- **It reads a window, not the whole state.** About 475 tokens of state on `jepela-english`, about 990 on the 1024-token checkpoints, less when the question has many options (State has the table). The rest is cut, and every answer says so (`state_truncated`, a `state_cut` warning). Send the part that matters, or `"windows": true`.
- **Large choices collapse in one pass.** Above about 20 options the engine's one-pass answer concentrates on a few options. Jepela matches those by vectors instead (Choice: 65.2% against the engine's 62.2% on 600 messages with 77 bank intents, 2026-09-27; 60.0% against 37.3% on 150 questions among 672 functions, 2026-09-26); with `"method": "engine"` it asks in two rounds.
- **Matching finds the closest label, it does not judge.** It is right for picking one of many named options, not for weighing a situation; and a trained matcher would only know the options it was trained on (42% against 63% untrained on functions it never saw, measured on public data on 2026-09-26).
- **Option order matters.** Answers to a large choice can change when its options are reordered. `"robust": true` averages fixed orders for choices of up to 20 options; above 20 the groups follow your order and robust does not apply.
- **Text only.** Images, audio and video are not read; put a description in the state.

## Memory

- **Numbers are not compared.** A numeric condition written as a line does not fire at the limit: a stop-loss of 30 as a line left the stop answer at 0.22 to 0.30 when the loss reached 30; as a rule with `when` it was 0.75 (`cookbooks/rules_in_memory.py`). Use a rule with `when`, or `derive`.
- **Negation is not read.** Naming a forbidden option makes it more likely: gold coins 83% to 94% in the Dungeon (measured 2026-09-23). A positive line helps sometimes (the Dungeon's Stone Hall: old bridge 94% without memory, muddy path 70% with the room's line) and sometimes not at all (roulette states where 17 had just come up: 9 to 10 of 10 on 17 whatever the memory said). Leave options that must never be chosen out of the question, or let an exclusion rule remove them in code (Rules in memory); Jepela warns about negative lines and suggests the rule.
- **Presence moves answers.** Lines move an answer by being there, not only by what they say, in either direction: five neutral lines moved an escalation answer from 0.46 to 0.28 (measured 2026-09-23). `"memory": {"placebo": true}` shows which questions move only because lines are present.
- **Similar lines interfere.** With lessons about three rooms in one memory, reading all of them could pull one room's answer back to the trap; reading only that room's line (`min_share` 0.5) fixed it.
- **Unrelated facts can move an answer.** In the Forgetting cookbook two lines unrelated to mail ("Fabrikam pays yearly; the next invoice is due in December." and "Fabrikam's support tickets go to the enterprise desk.") lowered "send this launch mail?" from 0.68 with no memory to 0.14. Keep a subject's memory to what matters for the decisions you make about it, check with `compare`, `placebo` and `explain`, and use `focus` to keep lines that match only on the name out.
- **Recall is lexical.** A fact worded without the names or terms in the state is not recalled. The subject's own name and aliases are searched with the state, and pinned lines are always sent (Memory).

## Accuracy and confidence

- **Some tasks are harder.** Screening for spam and phishing is the strong case; moderation and jailbreak detection are weaker; languages other than English are weaker than English; on multi-question workflow decisions the English and multilingual checkpoints are weak, and `jepela-typed-decisions` is the one to use. Measure on your own labels (Quality).
- **Calibration differs per task.** On a constructed 60-case support set the English checkpoint was 83% right with a calibration error of 0.17, lowered to 0.13 by a fitted temperature; typed-decisions 85% right, 0.34 lowered to 0.10. The engine was under-confident there. Measure on your own labels: see Quality.
- **Threshold noise.** Answers near a threshold flip on small changes of the state; require a fired rule or two answers in a row for expensive actions.

## Operations

- **One server.** Keys, ledgers and memories are files on one Jepela server; right for a handful of tenants, a database when there are more.
