# Lossless integers JavaScript `number` is IEEE-754 float. Integers above 2^53 (9_007_199_254_740_991) cannot be represented exactly. Comfy seeds are 64-bit. `JSON.parse` / `JSON.stringify` will silently change them. Journey: ``` JS bigint ↓ Graph IR: { "$int": "18446744073709551615" } ↓ compiler ↓ raw exact JSON numeric literal in the /prompt body ↓ Comfy (Python) ``` IR stays safe under ordinary `JSON.parse` because of the tag. The wire form is assembled by string concatenation so bigints never pass through `JSON.stringify`. Use `42n` in TypeScript. `cwf run --param seed=42` parses as integer; large seeds should be passed without going through JS `Number`. `run.json.compiledJson` is stored as a **string** for this reason. Do not parse it if you need the seed intact.