The Noul is the smallest primitive and the one people misread the most. It returns a single number from 0 to 1 and nothing else, which is exactly why it needs care: there is no separate confidence to fall back on, and the number is both the decision and the uncertainty at once.
The value is a probability, not a level
A Noul asks whether a statement is true. 0.9 means a 90% chance of yes, not "quite true." 0.5 means yes and no are equally likely, not "medium." If you want intensity, that is a Score; a Noul cannot measure how much, only whether.
The mistake this creates is reading the middle of the range as a weak signal. It is not weak; it is a genuine coin flip, and treating it as a soft yes is how a wrong action gets taken with false confidence.
Pin the boundary with criteria
criteria.true and criteria.false are optional descriptions of what a yes and a no mean. They matter when a question reads two ways. "Is this urgent" is ambiguous; adding a true description of blocks the customer today and a false one of can wait for the normal queue moves the boundary where you want it.
Use the structured form with a what, a not_for, and a couple of examples when the edge cases are the whole problem. The advanced primitives guide treats the criteria as an extension of the instruction, and warns that the two must agree: a Noul whose true maps awkwardly to no performs worse than one phrased the way people actually speak.
One question per Noul
"Is this urgent and about billing" is two questions in a coat. Split them. Each Noul is one judgment, and a compound one makes the probability mean something you cannot threshold cleanly.
Choose the threshold by the cost of being wrong
The Noul docs are direct that the threshold is policy, not a default. Use 0.5 when a false yes and a false no are equally easy to act on. Raise it when a false yes is expensive — an auto-refund, an auto-send — so the model has to be genuinely sure. Lower it when missing a real positive is the costly error.
A single global threshold across every Noul in a system is almost always wrong. The right value depends on what the branch does, which the model does not know.
Use the band, not just the edge
The self-consistency cookbook turns a 0.30–0.70 band into an explicit uncertain outcome, so values near the threshold route to a person without another call. The band is illustrative rather than calibrated, but making the abstain path a first-class result beats hiding it inside a threshold.
Do not assume the confidence carries over
A structural warning worth repeating: confidence thresholds tuned on a Choice do not transfer to a Noul, and vice versa. The jaggedness notes call out that identities between primitives are not guaranteed, so calibrate each question type on your own data.
Log the probability, not the boolean
Store the raw value next to the branch you took. The boolean alone cannot tell you, later, whether a rule was too aggressive or a question was ambiguous. The number can.
Threshold in code, keep the number, split compound questions, and set the threshold per action. That is the whole discipline of a Noul.