jsconsumer: model AckWait as the ladder when BackOff is absent
Commit

An absent BackOff is not an absent ladder. The broker keeps redelivering, on the acknowledgement timeout, so the effective schedule is AckWait repeated up to MaxDeliver. Schedule scored that case as zero, which made every duration check pass vacuously for the configuration most likely to be written by accident — an omitted ladder. AckWait 1h with MaxDeliver 6 validated as an instant schedule against a 25m bound while really taking four hours to reach the dead-letter branch.
RungBefore now resolves the schedule in precedence order — ServerBackOff, then a client NakDelay (legacy consumers only; nothing here produces one), then AckWait — so every timing check measures the ladder that is actually running. That is the third time a check silently read the wrong ladder, which is why all of them go through one accessor.
Deliberately NOT requiring a non-empty BackOff alongside Retry: a modest AckWait is a perfectly good ladder, and outlawing it would reject a legitimate consumer to work around a modelling gap. Modelling the fallback holds it to the same bounds instead.
Also corrects the exported docs that still described the old contract: the package doc claimed BackOff and Retry were mutually exclusive, the Retry field claimed Start clears server BackOff as a feature, and the creation comment claimed nil was enforced by validation. The pairing is required, the clear is a hazard to document rather than a design goal, and Retry schedules nothing.
Refs ENT-1601, ENT-1535.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01AJNdqGnT92NC2TRnpf8MNr Entire-Checkpoint: 18ccc24e9f99