Z5.06.3Trigger latencydesign

Too-long time windows make responses to real change feel sluggish

Aliases: response sluggishness · oversized window · detection latency

What it is

The other half of the debounce bill: with an oversized window, real events also wait for the window to elapse before being answered — or before they can fire again. What users feel is "the system is sluggish": the light takes thirty seconds after they enter; the AC is still blowing half an hour after they leave; a second fall detected within the hour is swallowed by cooldown. "Doesn't act when it should" and the previous card's "acts when it shouldn't" are the two ends of one parameter — adjusting either worsens the other.

Sluggishness does its real damage in trust: users do not attribute a missed response to "window parameters", only to "this thing is unreliable" — and revert to manual control, leaving the automation hollowed out. False triggers annoy; sluggishness kills the feature.

Why it happens

Windows produce sluggishness through three pathways, matching three time semantics:

Pre-trigger stability confirmation adds the delay directly into the response path: "light on after presence for 2 minutes" means every activation carries a fixed 2-minute delay, however real the event. Confirmation is harmless for slow variables (temperature, humidity), to which humans are insensitive anyway; it is fatal for fast ones (people, doors, sound), because the causal expectation of "I walked in — the light came on" is counted in seconds.

Post-trigger cooldown delays not the first response but the next: a leave-detection window ("AC off after 15 minutes empty") stops watching during its own cooldown — a blind interval exactly the size of the window. Multiple events merge into one; a second real event falling inside the cooldown is silently swallowed, unlogged, unannounced.

Perceived sluggishness amplifies into system-level distrust: when action is not followed by visible result within seconds, users act again (re-press the switch, step out and back in) — and the compensating behaviour itself generates new sensor events, further muddying what the rules see. The response to sluggishness becomes a fresh noise source.

Where it stops holding

  • Tolerable latency differs by orders of magnitude across event types. Comfort (five minutes late on temperature is unfelt), presence (three seconds late on light is already long), and safety (milliseconds) are not one ruler. There is no globally "reasonable window" — only tolerance bands per event type.
  • A long window is not the only cause of sluggishness. Polling architectures (state checked every 5 minutes) and cloud round-trips (local events detouring through a server) produce latency windows have nothing to do with. When users complain, measure which segment the latency lives in before touching any window.
  • For merge-intent rules, a long window is correct. "At most one reminder a day", "log each visitor once per hour" — here "sluggishness" is the semantics, not a defect; the test is whether the rule's author wanted every event or every period.

Applying it

  • Set a latency budget per automation class: presence in seconds (achieve stability by multi-sensor fusion at the sensing layer, not time filtering), notifications in minutes, digests in hours. Derive windows downward from budgets, not upward from false-trigger suppression.
  • Price first and repeat responses separately: zero delay on the first event (no pre-trigger confirmation), cooldown applying only to repeats — most "false fires annoy, sluggishness annoys too" dilemmas come from sharing one window between the two.
  • Leave a trace when cooldown swallows a real event: "12:40 second door-open event ignored within cooldown" — that record is the only source of truth when a user reports "it didn't react".
  • Triage sluggishness complaints in order: segment the timing first (sensor reporting delay, rule-engine delay, actuation delay), then touch the window; reversing the order misdiagnoses architectural latency as a parameter problem.
  • How to check: pick an automation and time it end to end — p95 latency from real event to completed action, compared against that event type's user tolerance; then count the share of real events swallowed inside cooldown. The two numbers are the two halves of "sluggish"; both near their budgets is a pass.

Related

  • Same group: Z5.06.1 Debouncing prevents the same automation from re-firing within a short window · Z5.06.2 Too-short windows let false triggers recur · Z5.06.4 Debounce parameters must be exposed, not buried
  • Nearby: I1 Perceived thresholds of system response time · Z2.09 Staleness and expiry of context
  • Search terms: trigger latency · cooldown · response time · presence detection

Cards in the same group

Quick Actions

Share

Share this page

ios_share

https://hci.top/en/handbook/Z5.06.3