Two review points. The strip looped over trailing \n and \r escapes, so a message that itself ended in an escaped newline lost that escape along with the separator and the exact comparison failed. It now removes one fixed tail: the six characters the separator becomes once mp_abort doubles the backslashes, or four if the extract is not doubled. Anything the message itself ended with is left for the unescape. mpe_execute sets _mpe_abortmsg before calling mpe_abortmessage, so a build where the helper is not on the autocall path still aborts with the program and state rather than an empty message. Full suite 64/64, mpe_assert_abort PASS, sasjs cbd before the run.