--- id: TRIG-2 family: RT-TRIG level: extended profiles: [runtime] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/rt-trig/trig-2 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # TRIG-2 — Jitter is rolled once and never re-rolled *RT-TRIG (Part II) · level: extended · profiles: runtime · added in 1.0* Spreading trigger load must not become a way for a trigger never to fire. The delay is drawn on the pass that finds the trigger due and then held to, however many passes follow. ## The rule > **Normative.** This is the rule. > > 1. Where a trigger's firing is spread by a random delay, a maximum of zero or less means the delay is off: the firing is not held and no state is recorded; it is not a zero-length window. > > 2. Otherwise the bounds are clamped before use, so a negative minimum becomes zero and a minimum above the maximum is used as both bounds. > > 3. On the first pass at which the trigger is due, one delay is drawn uniformly at random within the bounds, the resulting fire time is recorded, and the firing is held. > > 4. Every later pass reads the recorded fire time rather than drawing again (re-drawing on each pass would let a trigger be deferred indefinitely), and the firing is released as soon as the current time reaches that fire time, inclusive, discarding the record so the next due firing draws afresh. > > 5. The record is scoped to a single trigger, so one trigger's window never holds another back. --- Rule identifiers are permanent and are never renumbered. This specification carries no implementation status: each implementation publishes its own standing against these rules. Licensed CC BY 4.0.