From 0ee7bbbaf0bce3a2d15d6cbd9f0ac8b032abfc8d Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Wed, 23 Sep 2026 23:06:35 +0200 Subject: [PATCH] Make goal 2 cover a value we could not send as the caller wrote it --- README.md | 3 ++- todo.md | 11 ----------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 983f0a0..e15093e 100644 --- a/README.md +++ b/README.md @@ -657,7 +657,8 @@ one wins. They do not override the hard rules below. is reported as undetermined rather than guessed; a report the peer marked as not final settles nothing, so nothing the library concludes may rest on one; a request the peer may already have taken is never re-sent on the library's own initiative; work the peer has no reason to send again - is not dropped. + is not dropped; a call that reports a message as sent asserts that the wire carried what the caller + wrote, so a value we cannot send as given is refused before anything goes out. 3. **Strict in what we send, generous in what we read.** The library's own senders follow 3.4, and the codec parses whatever arrives. Where the letter of the spec would discard traffic a real SMSC sends, keep the traffic. diff --git a/todo.md b/todo.md index f45351d..8f9884c 100644 --- a/todo.md +++ b/todo.md @@ -189,17 +189,6 @@ and is also what the panel ranked hardest β€” two methods, one answer. ### Correctness, ahead of everything below -- [ ] **Take the maintainer's call on whether goal 2 covers a value we could not send as given.** - Goal 2's four clauses are one family β€” an undeterminable outcome, a non-final report, a - re-send, dropped work β€” and none of them covers *the wire carried a value the caller did not - write, and the call reported success*, which is the `NaN` sender, the `sm_length: 0` body and - `1e+21`. Items below cite goal 2 for exactly that, and the DLR-merge item concedes it "is - stated in no file today either way". Proposed clause, after "…is not dropped": "; a call that - reports a message as sent asserts that the wire carried what the caller wrote, so a value we - cannot send as given is refused before anything goes out rather than coerced into one the - caller never wrote." A goal is the maintainer's, so nothing edits README until that is - answered. From the prose pass of #18. - - [ ] **Range-check `maxOctets` with its five siblings.** `limitsOf()` in `session-options.ts` covers `idleTimeout`, `maxOutstanding`, `maxReassembly`, `reassemblyTimeout`, `responseTimeout` and `shutdownTimeout`; `maxOctets` is documented, consumed by `Reassembler`, and absent from -- 2.52.0