Close the interoperability plan and leave the one open decision on it

This commit is contained in:
2026-09-08 19:45:28 +02:00
parent 079d833ea8
commit 9673af67b6
+12 -1
View File
@@ -250,7 +250,7 @@ defect; each is a claim resting on the specification and on Node rather than on
| 8 | dropped | [Untested](#untested) | | 8 | dropped | [Untested](#untested) |
| 9 | done | [09-operator-fixtures.md](findings/09-operator-fixtures.md) | | 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 | | 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 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 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 175, Cloudhopper 88, each with its bind and response decoded and both error counts zero. The zeros
were real. 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 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 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. that a peer's own docs would settle.