CLAUDE WATERMARK REMOVER · DESTINATION TEST
Why did AB become BA after processing my cleaned buffer?
swap16 mutates the two-byte buffer in place, producing BA.
What the test establishes
The callback finishes before the buffer operation begins. Capturing the byte list on both sides and comparing the returned reference identifies both the change and its location. A byte swap intended for binary words is not a general text normalization step. Applying it to an ASCII field reverses pairs of bytes and changes the destination text. Keep a copy before applying an in-place transformation if a preview or rollback must retain the original export. This fixture deliberately uses an even byte count so the test isolates reordering rather than the separate error for unsupported buffer lengths.
Reproduce the observation
Save tested-app.js and reproduce.cjs together, then run node reproduce.cjs. Compare its output with the recorded observation. The harness executes the actual homepage callback in a minimal DOM and records its resulting field values and method calls. Destination operations run in Node.js; the homepage DOM is a controlled substitute. Runtime: v24.22.1. No submitted text or genuine Claude output is used.
{
"before": [
65,
66
],
"after": [
66,
65
],
"text": "BA",
"sameObject": true
}Capability boundary
Only two ASCII bytes are measured. Odd lengths and multibyte character corruption are not tested.
This Claude watermark remover edits a small selected character set. These callback observations do not establish authorship, detector scores, statistical-watermark removal or end-to-end browser behavior. For real work, keep the original and compare the exact result at its destination.
Primary material and next step
The tested first-party source snapshot and complete harness are the primary material for this page. For broader scope, read invisible Unicode versus AI watermarks, or return to the cleaner.