Guarantees
Exactly-once is not achievable across the side effects of arbitrary plugins, so Yukta does not claim it.
Back-pressure
Each edge is a stream. A slow consumer makes its producers wait, so memory stays bounded without queues between nodes.- Every child subscribes before its source starts, so no early message is lost.
- A fan-out moves at the speed of its slowest child.
- Nodes that block while they work run on lightweight threads, so they do not hold up the engine.
Letting a node fall behind
By default delivery is lossless. If you would rather drop messages than slow the producers, put a bounded buffer in front of a node:DROP_OLDEST, the default) or the newest (DROP_NEWEST). Drops are counted in the yukta.edge.dropped metric.
Idempotent plugins
A plugin is idempotent when running it again for the same message has the same effect as running it once. Use the message id (and theattempt label) as the de-duplication key when a node writes to an external system. This matters in three cases: retries, restart or resume replaying a node, and a crash between a side effect and the node’s recorded output.