From 9673af67b68622f0ba1e06730cf297f74a144dff Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Tue, 8 Sep 2026 19:45:28 +0200 Subject: [PATCH] Close the interoperability plan and leave the one open decision on it --- interop-tests/PLAN.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/interop-tests/PLAN.md b/interop-tests/PLAN.md index 3b865c0..c5b2368 100644 --- a/interop-tests/PLAN.md +++ b/interop-tests/PLAN.md @@ -250,7 +250,7 @@ defect; each is a claim resting on the specification and on Node rather than on | 8 | dropped | [Untested](#untested) | | 9 | done | [09-operator-fixtures.md](findings/09-operator-fixtures.md) | | 10 | done | Targets 2, 3 and 4 fixed; target 5 answered by the `messagingMode` send option, maintainer's call 2026-09-06 | -| 11 | not started | — | +| 11 | done | Surface judged sound. Its documentation findings and the unmergeable-receipt log line shipped in #94; one item, the typing of `smsIds`, is the maintainer's and is open below | Phases 1 to 5 were graded before `run.py` learned to fail an empty capture, so a run whose capture never started would have scored green on the wire checks while its own assertions carried it. Every @@ -258,6 +258,17 @@ phase has since been re-run under the stricter grading and every one holds: Kann 175, Cloudhopper 88, each with its bind and response decoded and both error counts zero. The zeros were real. +## Open for the maintainer + +**`smsIds` is typed as `string[]` and can hold an empty entry.** An SMSC that names an id for the +first segment of a concatenated message only — Telesign documents exactly that — leaves the rest +empty, so the type promises what the value does not keep. Taking the first id, or building a map +from the array, compiles and then misbehaves, and an empty string collides with another message's in +a correlation table. `(string | undefined)[]` makes the compiler point at the place the mistake +happens; the cost is that every consumer narrows, including the majority whose SMSC always names an +id. Raised by the phase 11 review, 2026-09-08. It is the last thing 1.0.0 locks: after release it +needs a major version. + Research notes behind this plan, 2026-09-05, are in `research/`: SMSC simulators, ESME clients and validators, and operator quirks with one source URL per claim. Ask before trusting a claim here that a peer's own docs would settle.