Delay node: hold the latest value inside the interval and send it at the window's end

The interval now rides the output ports, so the pipeline's own hold and flush
keep what arrives inside the window instead of the node dropping it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
This commit is contained in:
2026-10-15 09:32:35 +02:00
co-authored by Claude Opus 5.5
parent 7d28b44451
commit afcbb63a56
3 changed files with 45 additions and 18 deletions
+5 -4
View File
@@ -171,13 +171,14 @@ Use `cron` for scheduled emissions, or trigger the node by hand for testing.
| Setting | Default | Notes |
|---|---|---|
| `delay` | `0` | seconds to hold each message, fractional |
| `interval` | `0` | minimum seconds between forwards |
| `interval` | `0` | minimum seconds between forwards, per output |
| `mapping` | `{}` | input port → output port; paired in order when empty |
| `cron` | — | five-field expression |
Order of operations: rate check → delay → forward. With a `cron` and no inputs
it emits the current time on each tick; with inputs it emits the last value it
received.
Order of operations: delay → rate check → forward. A message arriving inside
the `interval` window is held, and when the window ends the latest one held is
sent. With a `cron` and no inputs it emits the current time on each tick; with
inputs it emits the last value it received.
Timers wait until their deadline; busy workers can delay execution.