Compare anagram groups by code unit, not locale
sortedAnagramGroups ordered groups by left.join("\0").localeCompare(right.join("\0")). Collation ignores U+0000, so two distinct groups whose words join to the same text, such as ["ab","ba"] and ["abba"], compared equal; the stable sort kept each side's order, and a correct Letter Rack Clusters answer failed whenever it listed such groups in another order than the expected value. Groups are now ordered by the code units of each sorted group's JSON.stringify, the same order the plain .sort() inside a group already uses, so two distinct groups can no longer compare equal. sortedValues is left unchanged.
Before and after on the interview page, with a correct Map-based solution and the custom case from #541 (input [["abba","ab","ba"]], expected [["ab","ba"],["abba"]]): on main the case fails although its groups are right, and with this change it passes. Both were taken in Microsoft Edge at 1280x860 with web/ served the way tests/browser/source.js serves it and the setup check closed as closeSetupCheck does, so no interviewer is connected; the before shot serves web/lib.js from main.


The extended test unorderedGroups checker ignores group and word order checks both orders of [["ab","ba"],["abba"]] and [["a","a"],["aa"]]; on main it fails for [["abba"],["ab","ba"]], and with the fix node --test tests/browser/lib.test.js passes 103 of 103. On Windows 11 with Node.js 22.21.0, ./scripts/test.sh browser passed 1295 tests and failed 2 in tests/browser/floor-capture.test.js ("capture exit null"), which fail the same way on unmodified main; 806 were skipped because Chromium for Playwright, cc, g++ and javac are not installed here. Prettier and ESLint pass on both files. The Rust lanes were not run, since this machine has no Rust toolchain and the change touches only web/ and tests/browser/.
Close #541
Summary by cubic
Fixes sortedAnagramGroups so distinct anagram groups no longer compare equal, which caused letter-rack cluster answers to fail even when correct.
The old sorting joined each group with a NUL before localeCompare, but collation ignores NUL, so distinct groups like ["ab","ba"] and ["abba"] compared equal and kept input order. Groups now sort by the code units of each sorted group's JSON.stringify, matching the order already used within a group. sortedValues is unchanged, and tests cover both orders of such groups, including accented vs. combining forms. Closes #541.