Member-only story
Seven open-weight models. Seven suppression rates of exactly 100%. Tool invocation went from 100% to 0% the moment a JSON schema was attached to the same request, and not one line in any log said so.
That is the finding in a June 2026 paper out of Focus Technology’s AI lab, and the first time I read it I assumed it was a prompt bug. It is not. It is arithmetic, and once you see the arithmetic you cannot unsee it: response_format={"type":"json_schema"}
compiles your schema into a token bitmask, and the engine executes exactly one line that ends the argument.
logits[mask == 0] = -inf
Your model wanted to call a tool. The mask deleted the option before sampling ever ran.
I spent this morning rebuilding the mask math from scratch to check whether the claim survives contact with a calculator. It does, and the numbers are worse than the paper’s headline. On a routine five-field extraction schema, the grammar writes 72.4% of the response bytes and the model does not get a single free choice until byte 17. We stopped calling this “generation” a while ago and nobody updated the mental model.