System One decisions, without decoding
An agent asks small questions all day: is this the right queue, did the test
pass, which of these three files matters. Answering each with a generated
completion is slow and hard to parse. ignis answers them through the System
One API, the typed-decision API the Jev model is served under: the same
POST /v1/systemone route and body, so a System One client points its base
URL at ignis and keeps working, here on a local model. It reads the answer
from the model’s distribution instead of generating one. The evidence is prefilled once, each option
gets a one-token label, and the answer is the restricted softmax over those
labels at the single position after the prompt. A decision costs one prefill
and decodes zero tokens: 36.5 ms at the median in the measured run.
How it works
Section titled “How it works”noul (yes/no), choice and score are pure logit readouts. The server gives
each option a single-token label, runs the prompt, and normalizes the
probability of the labels at the last position. The top probability comes back
as confidence, and the share of the full next-token distribution that the
declared options hold is the answer mass, exported as a histogram. A low
mass means the model wanted to say something else, the one failure nothing in
the answer itself can show.
number, point and box generate one constrained digit per step with the
prefix forced ({"x": then three digits), so they cost a prefill plus a round
per digit. locate finds a line in a log, an item in a list or a sentence in a
text without generating: calibrated attention heads at the end of the prompt
narrow the text to a few candidates and a labelled choice decides. A log is
first folded into templates plus values, so nothing near its length is
prefilled.
POST /v1/decide and POST /v1/systemone are the same handler, and the
errors follow System One’s own table; only model must be left out or name
the model ignis serves. A decision defaults to the agent lane class: it holds no residency and takes no
decode lane, so a fan-out of questions queues behind conversations instead of
cutting ahead of them. The request and response are in Decisions.

The numbers
Section titled “The numbers”| Figure | Measured on | Source |
|---|---|---|
| The declared options hold a median 99.8% of the distribution (p5 0.986, min 0.929); the unrestricted winner is a declared letter on 144 of 144 | 144 authored decisions, 27B, BF16 KV, thinking off | Typed-option logit readout |
| Prefill p50 36.5 ms, p95 40.7 ms, 28.0 decisions/s serial, no prefix reuse | same, prompts of about 132 tokens | same |
| Balanced accuracy 0.934, and 0.963 with the evidence moved into the system block (a difference of 4 rows) | same 144 rows | The evidence belongs in the system block |
point inside the target on 236/240, 240/240, 120/120 and 60/60 of the four pre-registered sets |
served endpoint, attention-head method | The sub-cell reading holds through decide |
point errors of 84, 18 and 32 px on three synthetic 4096 px screenshots, every point inside its button |
first constrained-digit experiment | Constrained digit readout |
locate on logs of 100K, 200K and about 1M tokens: 21 of 23 (91.3%) against a floor of 85% registered in advance; median 2.6 s, p90 6.2 s |
one cluster capture | Zero-decode locate, very long logs and prose |
locate on prose: 88.0% overall, but 7 of 12 (58.3%) at 1M tokens, which failed its per-group floor |
same | same |
See it, control it
Section titled “See it, control it”- The route:
POST /v1/decide, orPOST /v1/systemone; typesnoul,choice,score,number,point,boxandlocate, withwithinas a JSON Pointer forlocate. - In the response:
confidenceandranking; forlocatealsofound,segment,valueandpointers.usage.output_tokensis 0 for the three logit readouts. - Metrics:
ignis_decisions_total(by primitive),ignis_decision_answer_massandignis_locates_total, in the metrics. - Logs:
ignis.decide.locate,ignis.decide.locatedandignis.decide.pointing_head. - Playground: the Decide tab builds requests and shows the full distribution behind each answer; decisions are stored in the browser.
Limits
Section titled “Limits”- Only
noul,choiceandscoreare pure logit readouts.number,pointandboxdecode a digit per step, andlocateruns several prefills and head passes. locate’s 91.3% is for logs. On prose the 1M-token group failed its registered floor.- A decision has no reasoning: the loop guard does not apply, and the answer is the model’s first reading of the evidence.
- The wire shape is a third party’s, and the Decisions page says so.
Read more
Section titled “Read more”- Decisions: the primitives,
locateand the response. - Images as evidence: decisions over a screenshot.
- Lanes that know who is asking: why a decision defaults to
agent.
