diff --git a/.storkit/work/1_backlog/437_bug_strip_prefix_ci_panics_on_multi_byte_utf_8_input.md b/.storkit/work/1_backlog/437_bug_strip_prefix_ci_panics_on_multi_byte_utf_8_input.md new file mode 100644 index 00000000..4a8e51ef --- /dev/null +++ b/.storkit/work/1_backlog/437_bug_strip_prefix_ci_panics_on_multi_byte_utf_8_input.md @@ -0,0 +1,26 @@ +--- +name: "strip_prefix_ci panics on multi-byte UTF-8 input" +--- + +# Bug 437: strip_prefix_ci panics on multi-byte UTF-8 input + +## Description + +The `strip_prefix_ci` function in `server/src/chat/transport/matrix/assign.rs` slices the input string at `prefix.len()` bytes without checking that the offset is a valid UTF-8 char boundary. When the input message starts with multi-byte characters (e.g. `⏺` which is 3 bytes), the slice can land mid-character, causing a panic. + +## How to Reproduce + +Send a Matrix message to the bot that starts with a multi-byte UTF-8 character (e.g. `⏺ storkit - wizard_confirm`) where the bot name byte length falls inside a multi-byte character. + +## Actual Result + +Thread panics: `byte index 6 is not a char boundary; it is inside '⏺' (bytes 4..7)` + +## Expected Result + +The function should return `None` (no match) without panicking, since an ASCII bot name cannot match a slice containing multi-byte characters. + +## Acceptance Criteria + +- [ ] strip_prefix_ci checks is_char_boundary before slicing +- [ ] No panic when input contains multi-byte UTF-8 characters at the prefix boundary