Zerowidth CleanerMeasured guides

CLAUDE WATERMARK REMOVER · DESTINATION TEST

Does Object.keys show every own field containing cleaned text?

No. The measured hidden field exists as an own property but is absent from Object.keys.

Tested 31 October 2026 · Synthetic fixtures · Minimal DOM

What the test establishes

The property is created without the enumerable option, so its visibility differs across inspection APIs. Direct access still returns AB, and own-property inspection finds the name, while ordinary enumeration reports an empty list. If an export builds columns from Object.keys, it can miss this field even though cleanup and assignment both succeeded. Set the descriptor intentionally or build a declared export schema.

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",
  "keys": [],
  "ownNames": [
    "text"
  ],
  "hasText": true,
  "value": "AB"
}

Capability boundary

This compares enumeration of an own nonenumerable field. It does not involve inherited members, accessor exceptions, or a failure to clean the original text.

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.