-
-
Notifications
You must be signed in to change notification settings - Fork 0
Events
This page owns the event taxonomy: every value msg.consensusEvent
can take, where it routes, and when it carries ignored: true. For
the envelope properties themselves, see Output Messages.
ignored is a modifier, not an event category. The event name
tells you what was attempted; ignored tells you whether it took
effect. A rejected payload is still a reading (ignored: true); a
Trigger suppressed while disabled is still triggered
(ignored: true). There is no separate "rejected" event to watch for.
One message, one reading-class event. A single incoming reading
emits exactly one of sourceadded / sourcerecovered / reading —
the most specific that applies — each carrying the full recomputed
aggregate. Transitions that reading causes (quorum, trigger/release,
minority) fire as separate events afterward, in causal order.
| Event | Output(s) | Can be ignored: true? |
source |
|---|---|---|---|
triggered |
1 + 4 | On 4 only — transition suppressed while disabled | external, internal |
released |
2 + 4 | On 4 only — suppressed while disabled | external, internal |
reading |
4 | Yes — uncoercible payload or missing topic (rejectedValue) |
external |
sourceadded |
4 | No | external |
sourcerecovered |
4 | No | external |
sourcestale |
4 | No | internal (clock/restore); external via setstale
|
sourceremoved |
4 | Yes — unknown topic | external |
quorumlost |
4 | No | external, internal |
quorumregained |
4 | No | external, internal |
minorityreport |
4 | No — a deliberate notification | external, internal |
disabled / enabled
|
4 | Yes — redundant command | external |
reset |
4 | No | external |
triggerset / releaseset / staleset
|
4 | Yes — invalid or wrong-side value (attempt attached) | external |
query |
3 | No | external (query command), internal (heartbeat) |
-
releasedcarriesmsg.releaseReason:"threshold"or"quorumlost"— see Trigger and Release and Sources Freshness and Quorum. -
minorityreport(Boolean mode) fires when the set of disagreeing fresh sources changes — including one final report with an empty set when a disagreement resolves. A stuck sensor produces one report, not a stream. -
sourcestaleis normally the node's own clock speaking (source: "internal"); the one external path is asetstaleshrink expiring sources on the spot — the live command is what caused it. - Filtering: the Events output is intentionally complete. Wire a
switchnode onmsg.consensusEvent(andmsg.ignored) downstream to pick out what you care about — per-output event filtering was deliberately left out of the node.
Getting Started
Reference
Features
Examples
- Examples Basic Numeric Averaging
- Examples Staleness and Quorum
- Examples Boolean Voting
- Examples Runtime Commands
Test Script Coverage
- Overview
- Test Suite 1 — Output routing & envelope shape
- Test Suite 2 — Aggregation functions
- Test Suite 3 — Boolean mode
- Test Suite 4 — Commands
- Test Suite 5 — Threshold set-commands & release-follows-trigger
- Test Suite 6 — Status labels
- Test Suite 7 — Staleness, quorum policies, heartbeat
- Test Suite 8 — Persistence
Support