From ac5bdeb178609c46398e6c1ab7845068832af5c1 Mon Sep 17 00:00:00 2001 From: jochen Date: Mon, 12 Oct 2026 21:07:37 +0200 Subject: [PATCH] =?UTF-8?q?To-be=2045=20=C2=A75:=20match=20ADR=200318=20ve?= =?UTF-8?q?rsion=2010,=20so=20an=20urgent=20message=20is=20never=20folded?= =?UTF-8?q?=20and=20a=20backlog=20gets=20its=20answers=20(issue=20271)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../45-a-core-that-cannot-fail-silently.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md b/03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md index 91226434..4f169223 100644 --- a/03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md +++ b/03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md @@ -380,19 +380,22 @@ section; to-be 46 ยง13 builds what follows from it. when an event older than its last reading arrives, the holder reads the open conditions from the controller and takes them as its state; an event is acted on only when it is newer than that reading (five seconds of clock slack) and its own `at` is no more than ten minutes old โ€” otherwise it is - recorded as state and never said. A condition open in the holder's state but absent from the + recorded as state and never said as its own message. Ends and drops below are recorded in the + holder's own history. A condition open in the holder's state but absent from the controller's open set ended while the holder was away, and is closed quietly: edited where a channel can, never sent to wake a desktop. A clearing of something never said says nothing, and a message still waiting is dropped the moment its clearing is read. Every urgent condition a reading finds open - and unsaid is said once, together, naming all of them. A grace minute follows every start or - reassignment: nothing is sent in it except that one message. + and unsaid is named once, together, in one digest; when the grace minute ends, each still open and + unacknowledged is then sent as its own message with its answers. A grace minute follows every start or + reassignment: nothing is sent in it except that one digest, not even a fresh urgent event. - **Rate:** at most twenty messages an hour; the excess is folded into one message naming them all. *Amended 2026-10-12, ADR 0318:* a channel holds what it has to say for thirty seconds from the first - item and sends it together โ€” alone as itself, several as one digest, one line each; an urgent item - breaks a thirty-second quiet at once. The desktop keeps a gentler rhythm than Telegram: a warning - reaches it at most once every fifteen minutes, never an urgent one. Reaching the cap is said once, in - its own message, and what it holds back waits for the next digest the hour allows, rather than one - message per excess item. + item and sends it together โ€” alone as itself, several as one digest of headlines, one line each, with + no answers; a message that offers answers is never folded into a digest but sent on its own, and an + urgent item breaks a thirty-second quiet at once. The desktop keeps a gentler rhythm than Telegram: a + warning reaches it at most once every fifteen minutes, never an urgent one. Reaching the cap is said + once, in its own message; what it holds back, urgent included, waits until the hour allows, when each + message that offers answers is sent on its own with them and only the rest goes as one digest. - **What may leave the mesh:** roles and words. A message carrying an address, a path or anything shaped like a secret is refused by the holder and raises `channel-refused` instead. *Amended:* the mesh's own machine names may appear too; a concrete detail travels as a reference only