CLAUDE WATERMARK REMOVER · DESTINATION TEST
Will preventExtensions lock the contents of a cleaned text field?
No. The object becomes nonextensible, but its text changes from AB to CD.
What the test establishes
The destination object already contains its text property when extensibility is disabled. Updating that existing property succeeds in this observation. A restriction on adding fields therefore does not provide a content lock for a cleaned export. Check the actual exported value after any editor action rather than treating a nonextensible object as evidence that the reviewed text survived. This test deliberately keeps cleanup and object lifecycle separate: the callback returns AB, and downstream application code explicitly replaces it with CD. The resulting difference has an inspectable cause outside the removal operation.
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.
{
"extensible": false,
"text": "CD"
}Capability boundary
Only an existing plain data property is tested. Property creation, deletion and prototype changes are not measured.
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.