* Regression tests for the alphabet a GSM message declares
* Declare the alphabet a GSM message is actually written in
* Reflow the composing-by-hand paragraph
* Drop the ASCII alias SMPP's flat table shares with the option's own
* Bound the receipt test's wait and tighten the notes around it
* 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 body the PDU's own data_coding cannot carry
* Refuse a body the PDU's own data_coding cannot carry, in the codec both send paths build through
* Record the codec's body refusal, and drop two todo entries it and the interop run close
* Regression tests for the aliased body TLV and the data_coding short_message settles
* Find the body TLV by tag id, leave data_coding to the field that will be read, and correct the record
* Record the two architecture findings this change does not close
* Regression tests for a duplicated body tag and a short_message the wire never carries
* Resolve every body TLV against the field that will be read, and move TLV writing to its table
* Regression tests for a body only the TLV carries and an empty short_message
* Let only octets the command writes settle the alphabet, and stop shadowing the TLV table
* 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