Structural change (register/unregister/move); skips dwell entirely.
Internal dirty-marks after the first one in this episode. Not a
count of store operations — a single call like showNode marks the
node more than once (the record swap and the FSM transition are
separate marks), so read this as a churn indicator, not a change
tally.
Largest dwell gating this node; 0 means it is not dwell-gated.
Ignored while bypass is set — a bypassing entry can carry a
non-zero dwellMs that gates nothing.
Earliest the gate opens — not when the node will publish.
notifyMs coalescing and stagger waves can both defer the actual
flush past this moment. Expressed in the domain of the clock the
store was constructed with (Date.now() unless one was injected).
Which gate is binding, in precedence order: bypass releases the
node immediately and outranks everything below it; otherwise, when
eligibleAt is less than touched + dwellMs, the maxWaitMs
starvation cap is what will release this node rather than the dwell
debounce.
The machine that set the current dwellMs, or null when no dwell
applies. Not necessarily the machine restarting the debounce — a
shorter-dwell machine can be the one churning while a longer-dwell
machine still governs the deadline. Like dwellMs, inert while
bypass is set.
clock.now() when the node first went dirty and has stayed dirty.
clock.now() of the most recent dwell-restarting change.
A read-only snapshot of what is currently being withheld for one node, as returned by Store.getPending. Answers "why hasn't this published yet?" — a plain value derived from internal bookkeeping, not a live view of it.
Every field describes the current pending episode — from the moment a clean node is marked dirty until it publishes. A node that publishes and goes dirty again reports fresh values; nothing here is cumulative.