# X_FINITE_BOUND_UNCHECKED

## Means

a numeric option is defaulted with `??` and never checked for finiteness

## Typical cause

`??` guards **nullish**, and `NaN` is not nullish — so `Number(process.env.X)` on an unset variable, a `parseInt` of a typo and an untyped config value all walk past the default and land on the bound intact. `Math.max`/`Math.min`/`Math.floor` are not validators either: all three **propagate** `NaN`, and this repo relied on all three as guards. Four measured outcomes — a comparison that reads false forever (a dead worker's job never reclaimable, an `AcceptBudget` admitting the whole herd), an `Array.from({ length: NaN })` or `slice(0, NaN)` that is `[]` (zero workers, reported as success), a `setTimeout(fn, NaN)` that is `setTimeout(fn, 0)` (a poll becomes a spin), and a loop that never terminates, synchronously, past every `AbortSignal`. Matched on the missing CHECK, never on the option's name

## Fix

`assert(Number.isFinite(value), '…', '…')` where the option is read — `packages/jobs/src/limits.ts`'s `concurrencyLimiter` is the form. `bun run finite-bounds --explain --json` lists every site

[CLI and verify](/error-codes#cli-and-verify)
