The local model returns 12500.00 as a JSON number, which the contract rejects
as a non-string decimal. A numeric value now matches a source span numerically
and the delivered value is rewritten to that span's decimal string (12500.00),
so precision is preserved instead of rounded. Exact string equality is still
required for string decimals, and ambiguous formats still go to review.