* Log an unmergeable receipt and correct the README where it overclaims
* Name decodeMessage's arguments and pin the hook's keepalive and unbind
* Let the test name carry what its comment restated
* Fixtures for the receipt bodies operator documentation publishes
* Read the stat:FAILED several operators write as UNDELIVERABLE
* Cover the 16-bit UDH concatenation element with a fixture
* Record phase 9 of the interoperability plan
* Share the dummy SMSC and tighten the operator fixtures
* Correct what the test conventions claim about the doubles and the tree
* Read a receipt date that carries its century
* Read the stat spelling CM.com publishes
* Say what the receipt status table actually holds
* Regression tests for the messaging mode on sendSms()
* Let sendSms() name the esm_class messaging mode
* Document the messaging mode option and the decision behind it
* Name the constants move for migrating consumers and share the refusal's value naming
* Cover the messaging-mode refusals through submitSms()
* Refuse transaction mode and a report under datagram mode on sendSms()
* Narrow the mode checker and name the default mode once
* Regression tests for inbound sar_* concatenation
* Reassemble a concatenated message segmented with the sar_* TLVs
* Record the sar_* fix in the jasmin and Java-client findings
* Name the sar_* TLVs in the refusal, and separate group keys the addresses cannot forge
* Name the field a refused segment got wrong, and key groups on a separator no address holds
* Bound the new session tests, and derive Concat from the UDH fields
* Regression tests for aborting a send queued behind a full window
* Let a signal abort a send queued behind a full send window
* Log a queued send, tighten its regression tests and settle the decision record
* Take the send window's queue off an array so an abort cannot stall the loop
---------
Co-authored-by: Mikael Göransson <mikael.goransson@timewave.se>
* Regression tests for a truncated TLV tail refused rather than accepted
* Refuse a PDU whose optional parameters do not end on command_length
* Assert the bare TLV header refusal against jsmpp instead of recording it as a defect
* Note the truncated TLV tail defect as fixed in the java-client findings
* Derive the padding position, share the bare TLV fixture and trim the decision record
* Regression tests for a PDU whose trailing C-Octet String a peer left out
* An absent trailing C-Octet String consumes no octet, so a bodyless PDU still parses
* Bound the TLV loop by the buffer it was given rather than a second spelling of its length
* Answer the stability review's questions in the record and pin the array contract
* Fail an interop run on an empty capture or a missing bind/bind_resp, and always tear down on analysis failure
* smppsim: wait for the capture sidecar to actually be capturing before node starts
* Clear the stale textdlr capture file too, and tidy the bind-check ordering
* Split the unlink comment so each line matches the unlink it explains
* Regression tests for an onRequest hook on server()
* Compose the application's onRequest hook into server() past bind
* Document the server's onRequest hook and record the composition decision
* Pin that a re-bind and a pre-bind unbind never reach the hook, and that a non-function hook is refused at startup
* Keep every bind and all pre-bind traffic out of the application's hook
* Make the hook's published promises exact, and record the src layout deferral
* Trim the record to what the tests do not already forbid
* Pin that nothing answers a request whose hook failed
* Answer nothing for a request whose hook failed, on both surfaces alike
* State the hook's failure policy as it now behaves
* Name the request a failed handler left unanswered, and say what a wedged hook reports
* 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
* Regression tests for answering every inbound segment as it arrives
* Answer every segment of an inbound concatenated message as it arrives
* Record the segment-by-segment answer in AGENTS.md and README
* Regression tests for an empty message_id on deliver_sm_resp
* Answer a deliver_sm with the empty message_id SMPP 3.4 makes it
* Record Jasmin's refusal of a deliver_sm_resp message_id
* Mark the Jasmin multipart deadlock fixed
* Regression tests for the architecture review's findings
* Give the segment id notation an owner, and every segment a status
* Correct what the ids reach and what a lost group tells the application
* Regression tests for a group lost to its own octet overrun
* Report a group lost to its own overrun, and refuse by the command it arrived on
* Keep the docs true about what a segment is answered with
* Count only the answered segments of a group lost to an overrun
* Report only what a lost group cost, and say which cap bit
* Regression tests for telling a refused PDU from a failed session
* Export PduRefusedError so a refusal can be told from a session failure
* Document telling a refused PDU from a session failure
* Share the malformed-PDU fixtures and pin that a dead stream is no refusal
* Say once what a refusal is, and why the header type is published
* Fold the refused-response test into the one that already staged it
* Drop the refusal-rate claim the interop finding does not support
* Build a raw PDU one way, sequence number included
* Follow PduRefusedError into pdu-refusal.ts
* Regression tests for a client that retries its first connect and bind
* Retry the first connect and bind on reconnect: { fromStart: true }
* Pin that the signal bounding the first bind also closes the session
* Name a failed connect once, default the backoff where it lives, and fix the deadline advice
* Carry the failure that started the retries on the abort that ends them
* Pin one retry announcement per attempt when a link drops mid-bind
* Announce a retry when its wait is over, not when it is scheduled
* Say what the process-hold assertion expects, not what a failure would mean
* Regression tests for a receipt body read under a data_coding it is not written in
* Read a delivery receipt's body as the octets that arrived, not by its data_coding
* Assert SMPPSim's UCS2 receipt body parses like every other segment's
* Record the receipt-body defect as fixed
* Retain a multipart segment's octets once, not twice
* Sort the new type import into its file's order
* Regression tests: a PDU the codec cannot read costs that PDU, not the link
* Refuse a single unreadable PDU instead of the whole link
* smscsim interop asserts the first attempt gets every DLR
* Record the smscsim sequence number defect as fixed
* One framing rule and one response-command lookup, per the architecture review
* Apply the stability review's nits: honest sessionError docs and one link-survives assertion