TypeSafe describes System One models as returning “typed answers and probabilities rather than generated text”, and says they “do not write replies, produce code, or generate explanations of their reasoning.”
What comes back from a Choice question is concrete. The docs show {"type":"choice","choice":"returns","confidence":1.0,"probabilities":{"returns":1.0,"shipping":0.0,"billing":0.0}}. In the JavaScript SDK you read it as response.answers.category.choice, and the value is one of the keys you supplied. A Noul answer is a bare number between 0 and 1.
The difference from a JSON-emitting chat model is where the guarantee lives. Constrained decoding generates tokens and then holds them to a grammar. Here the option set you passed in is the answer space, so a Choice cannot come back as an option you never defined, and the probabilities over those options sum to 1.
One practical consequence: your thresholds live in code, and TypeSafe puts that plainly as “Your code encodes the risk tolerance.” See structured outputs for the technique this gets confused with, and confidence-gated actions for acting on the numbers.