# 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 on a Mac, unless a line says the engine's authors measured it. 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 77 bank intents, 63.8% against 37.3% among 672 functions); 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, `experiments/stanford/RESULTS.md`).
- **Option order matters.** The engine's authors report 15 to 23% of answers changing when the options of a 20-option choice 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. 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 (`measurements/jepela-recall-size-2026-09-23.json`). `"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

- **The engine's authors report:** moderation 0.53, jailbreak detection 0.70 to 0.76, spam and phishing 0.98 to 0.99; Swedish 0.57 against English 0.78; the base checkpoints near chance on multi-question workflow decisions (0.36 and 0.34 against a 0.46 majority baseline), the typed-decisions checkpoint 0.77 on its own workflows.
- **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.
