From 7e4da874a97ab943f800472bc80d7d6653050633 Mon Sep 17 00:00:00 2001 From: jochen Date: Sun, 27 Sep 2026 00:15:00 +0200 Subject: [PATCH] =?UTF-8?q?Design=2025=20=C2=A72:=20the=20eaten=20reply=20?= =?UTF-8?q?address=20is=20verified,=20not=20assumed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A claim the whole enrolment handshake rests on, now measured against a running server rather than reasoned from documentation — and held by a test so it cannot become folklore if a server version changes. --- 03-DESIGN/01-to-be/25-the-bus-on-nats.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/03-DESIGN/01-to-be/25-the-bus-on-nats.md b/03-DESIGN/01-to-be/25-the-bus-on-nats.md index 4100103..1052976 100644 --- a/03-DESIGN/01-to-be/25-the-bus-on-nats.md +++ b/03-DESIGN/01-to-be/25-the-bus-on-nats.md @@ -97,7 +97,14 @@ exactly the current declaration and nothing older. That is the wire-level answer *is* the order, and a node that sees sequence n refuses n−1 by construction. **A reply-to travelling through a JetStream stream is carried in the payload, never in the -transport `Reply` field.** Revision, first review: core NATS request/reply sets the requester's +transport `Reply` field.** *Verified against a running server, 2026-09-27*: a caller published +asking for a reply to `_INBOX.LCr3M83q…`, and the consumer saw a `Reply` field of +`$JS.ACK.PROBE.probe_consumer.1.1.1…`. The address is replaced, not merely at risk — so the +payload-borne reply subject below is necessary rather than defensive, and the check is a test +rather than a note, because a future server that stopped doing this would leave enrolment +working and the reason for the field quietly becoming folklore. + +Revision, first review: core NATS request/reply sets the requester's ephemeral inbox as the message's `Reply` field, and a plain responder answers it directly — but a message a JetStream consumer delivers has already had that field claimed for the consumer's own ack address (`$JS.ACK.....`), so by the time the controller (§3's CONTROL