Managed and AUTO_FAST delivery
Managed is the default
MANAGED always enters the Command Topic and the Delay Shard state machine. It provides the server-side boundaries needed for query, applied results, cancellation, rescheduling, quota, audit, checkpoint, DLQ, and replay.
The managed branch is prepared before I/O. Its exact route, IDs, canonical bytes, hash, and retry boundary remain stable across physical enqueue retries.
AUTO_FAST is explicit permission
AUTO_FAST means that the caller allows the SDK to choose between:
ManagedPreparedCommand
NativePreparedDelivery
The choice occurs before any network I/O and returns a sealed, serializable prepared object. submit() accepts that exact object; a retry after a crash or uncertainty cannot silently choose a different branch.
The native branch is a certified Pulsar delayed-delivery handoff. It is bound to the exact Broker Resource Incarnation, resource guard, partition, capability, credential-binding generation, and trusted-time validity that were checked during preparation. A native receipt is not a managed Delayed Message receipt.
No hidden fallback
Once native I/O begins, Nereus Delay does not automatically fall back to managed delivery. A prerequisite failure before Producer ownership can produce a typed definitely-not-queued result. A response loss after ownership is an uncertain native outcome and must reuse the original prepared identity/bytes.
Native delivery does not gain the managed branch's server query, cancel, reschedule, quota, or audit capabilities. Callers needing those controls use MANAGED.
Source anchors
docs/Nereus Delay V1 设计.md, sections 3.2 and 6.docs/adr/0002-require-opt-in-for-native-fast-delivery.md.docs/adr/0031-choose-auto-fast-before-io-and-return-a-receipt-union.md.