CLAUDE WATERMARK REMOVER · DESTINATION TEST
Does assigning a cleaned value to a readonly property always throw?
No. The loose assignment is ignored; the explicit strict assignment throws TypeError.
What the test establishes
The destination record deliberately exposes a nonwritable text property. The callback itself completes successfully, but the destination assignment has its own rules. In the loose function the value stays old without an exception; the strict function signals the failed write. A successful cleaning status therefore cannot certify that a later storage assignment succeeded. Read back the destination value or handle its declared write contract when integrating the tool.
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.
{
"cleaned": "AB",
"loose": "old",
"strict": "TypeError",
"stored": "old"
}Capability boundary
The local object descriptor is tested, not a database permission, proxy, frozen nested object or UI input setting.
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.