# PP1 q transport and scheduling design Design only, OFF. No v1 wire/serving files changed. Correctness reference: [reference.py](reference.py); deployment boundary: [AUDIT.md](AUDIT.md). ## Distribution contract and precision The wire must describe the **same categorical q that sampled each token**, conditioned on the committed prefix and all earlier tokens of that proposal chain. Confidence/margin and q(x) alone cannot reconstruct a residual. The CPU oracle accepts full or sparse normalized weights. Its FP32 helper first rounds weights, then defines q as their exact rational normalization at both ends. It proves the semantics; arbitrary FP32 weights would require a carefully matched GPU normalization/sampling implementation. Do not send independently rounded probabilities after sampling from unrounded logits. Do not silently renormalize a different q on the verifier. Recommended bounded GPU prototype: **dyadic categorical q**, with total mass M=2^24. Define integer counts c_v≥0 whose exact sum is M; q(v)=c_v/M. Transmit q(v) as little-endian FP32. Every such value is exactly representable; all partial sums of nonnegative counts up to M are also exact in FP32 when scaled by M. Both sides can recover c_v by multiplying by M, require it to be an integer, and validate the sum using uint64. There is no receiver-only renormalization. Zero counts have exactly zero probability. Proposal construction (new implementation still required): obtain globally normalized draft weights after draft temperature and Markov bias, reject NaN, +inf, negative probabilities and zero effective mass; −inf masked logits are allowed before softmax. Allocate integer counts using floor plus largest remainders, ties by lowest global token ID. Use FP64 allocation arithmetic and assert 0≤remaining