* Refuse a relative validity period the SMPP time format cannot hold
* Export unencodableText(), so a caller can word a refusal as the library does
* Name the refusal rule in the README, and correct what it claims
* Word the period refusal by what the encoder spells, and keep unencodableText() internal
* Correct the decision bullet premise about what the relative format holds
* Close the stability nits on the time guard and its tests
* Regression tests for a named alphabet and a time that cannot carry the send
* Refuse a message the named alphabet cannot carry, and a time nobody can read
* Close the architecture review: a builder that cannot drop a time, and docs that hold
* Refuse a time of no known kind, and clamp a relative period to what the format holds
* Reflow the decision record and name the clamp in its test
* Regression tests for the concatenated segment budget and the encoding-name door
* Budget unpacked segments at 134 octets, and export isEncodingName
* Name the length a Latin-1 message starts costing more segments at
* Fold the totality clause into hard rule 1, and log the unrepresentable-alphabet finding
* Make the maxSegments regression discriminate, and drop the narrating comments
* State the per-alphabet capacities accurately, and log the invalid-date path
* Regression tests for a body in message_payload and for data_sm
* Read a body from message_payload and accept data_sm
* Assert the fixed message_payload and data_sm behaviour against Jasmin
* Record the message_payload and data_sm fixes in the Jasmin findings
* Read an inbound data_sm as the direction it travelled, and export messageOctets
* Refuse a segment with the code its stand-in command defines
* Name the stand-in the refusal status is read from