CLAUDE WATERMARK REMOVER · DESTINATION TEST
Why is my original byte array empty after transferring its buffer?
The transfer detaches the original buffer while the clone retains AB bytes.
What the test establishes
The input bytes are produced from the actual callback result. Passing their backing buffer in the transfer list moves ownership to the cloned value. The original typed array then reports zero byte length, while the clone decodes to AB. This is distinct from an ordinary copy and should be considered before sharing buffers between preview and export stages. A preview retaining the original reference can no longer assume its storage remains readable. The fixture uses a new standalone encoder buffer, avoiding unrelated pooled storage. No worker thread is created; the local structuredClone operation alone demonstrates the ownership change measured here.
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.
{
"originalBytes": 0,
"cloned": [
65,
66
],
"text": "AB"
}Capability boundary
One transferable ArrayBuffer is measured. Worker messaging and SharedArrayBuffer are excluded.
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.