“It was another jolt to find that each Board member had had somewhat different odds in mind and the low man was thinking of about 20 to 80, the high of 80 to 20. The rest ranged in between.”Sherman Kent · Words of Estimative Probability · 1964 · Sherman Kent, «Words of Estimative Probability», Studies in Intelligence 8(4), 1964, pp. 49–65, secțiunea «Early Brush with Ambiguity» (versiunea CIA aprobată pentru publicare în 1993)
The number is the judgement; the word is only its translation for the reader.
In March 1951 a US intelligence estimate said an attack on Yugoslavia ‘should be considered a serious possibility’. Sherman Kent, a member of the board that had approved it, had odds of 65 to 35 in favour of an attack in mind; readers at the State Department had understood something much lower. When he asked his colleagues on the board, the lowest had been thinking of about 20 to 80, the highest of 80 to 20. The same words, approved unanimously, hid a disagreement of 60 percentage points. Kent's remedy, published in 1964, was a table: ‘almost certain’ around 93%, ‘probable’ around 75%, ‘chances about even’ around 50%, ‘probably not’ around 30%, ‘almost certainly not’ around 7%. The US intelligence community's directive ICD-203, signed in 2015, does the same with seven terms and ranges: from ‘almost no chance’ (1–5%) to ‘almost certain’ (95–99%), with ‘likely’ between 55% and 80%. The practical rule has two halves. The analyst thinks in and writes the number; the word is only a translation for the reader, generated from the number. The reverse route — choosing the word first and turning it into a number later — loses information, because a word can cover a band up to 25 points wide. In the olivLaw engine the label is computed in Python by the function hedge(p); the AI model writing the analysis never chooses it.
Worked example: the same number, three vocabularies. Ana gave 0.35 for the question ‘Will the EUR/RON reference rate exceed 5.3000 by 31 December 2027?’. What word does the reader see? It depends on the table used. Below, a few probabilities translated into three scales: the bands coded in the olivLaw engine (11 steps, lower bound inclusive), the ICD-203 directive's table (7 terms) and Kent's 1964 scale (5 steps, with margins).
p olivLaw engine (hedge) ICD-203 (2015) Kent (1964)
0.15 very unlikely very unlikely 5–20 between steps
0.35 less likely than not unlikely 20–45 probably not 30±10
0.60 more likely than not likely 55–80 about even 50±10, at the edge
0.70 likely likely 55–80 probable 75±12
0.85 very likely very likely 80–95 probable 75±12
0.97 highly likely almost certain 95–99 almost certain 93±6Three observations. First, at 0.60 the engine says ‘more likely than not’ and the directive says ‘likely’: the same number, two words. Second, at 0.97 the engine says ‘highly likely’, the directive ‘almost certain’. Third, in Romanian the engine's scale puts «extrem de probabil» (from 0.80) below «foarte probabil» (from 0.90), although a Romanian reader usually hears «extrem» as stronger than «foarte». None of these mismatches matters if the number sits next to the word. All of them matter if the reader sees only the word.
That is why Ana publishes ‘less likely than not (35%)’. The parenthesis is not a matter of style: it is the only part of the sentence a reader can check, and a year from now the only part anyone can score.
In the olivLaw engine. What exists today: the icd203 module of the analysis kit holds the HEDGE_BANDS table, eleven bands with an inclusive lower bound, from ‘almost certain’ (from 0.99) to ‘almost no chance’ (from 0). The function `hedge(p, lang)` takes the probability, clamps it to [0, 1] and returns the label in Romanian or English. The label is computed in Python, not chosen by the model, and the forecast's verbal field is written from it. That is good and it is the right rule: the number leads.
The weakness: the module's docstring says the bands follow the canonical ODNI mapping, but the directive's table has seven terms (likely = 55–80%) while the engine has eleven (likely from 0.66). It is a legitimate in-house extension, but it should be named as one. The second weakness is the Romanian ordering of the two top steps. The proposal is small: the word never appears alone, and a gate checks in the published text that every estimative term is followed by the number it was computed from.
HEDGE_BANDS = [ # as in the analysis kit: (inclusive lower bound, EN label)
(0.99, "almost certain"), (0.90, "highly likely"), (0.80, "very likely"),
(0.66, "likely"), (0.55, "more likely than not"), (0.45, "even chance"),
(0.34, "less likely than not"), (0.20, "unlikely"),
(0.10, "very unlikely"), (0.01, "highly unlikely"), (0.00, "almost no chance"),
]
def hedge(p: float) -> str:
p = max(0.0, min(1.0, float(p)))
return next(label for lower, label in HEDGE_BANDS if p >= lower)
def verbal_with_number(p: float) -> str:
# Proposal: the published form always carries the number.
return f"{hedge(p)} ({round(p * 100)}%)"
def prose_is_honest(sentence: str, p: float) -> bool:
# Proposed gate: the sentence contains exactly the form computed from p.
return verbal_with_number(p) in sentence
print(verbal_with_number(0.35)) # less likely than not (35%)
print(prose_is_honest("It is likely (35%) that the threshold is crossed.", 0.35)) # FalseThe example on the last line is exactly the error the gate catches: a text that says ‘likely’ next to 35%. The word and the number contradict each other, and the reader has no way of knowing which to believe.
Why it matters A decision-maker reading ‘likely’ may hear 20% or 80%; the number removes the disagreement the word conceals.