CLAUDE WATERMARK REMOVER · PRACTICAL TEST
Why does an invalid date disappear while the optional field stays valid?
Our date input sanitizes 2025-02-29 to empty text. The optional field then reports valid, while required reports valueMissing. Cleaning repairs an interrupted valid leap date but cannot make an impossible calendar date valid.
Open the Claude text cleaner · Full measured data
Measured inputs and outputs
These are locally constructed test strings, not evidence that Claude inserts these characters. We executed the saved homepage script snapshot with a minimal DOM harness and compared exact strings. The invisible-checkbox state and dash mode appear in each row. The observations below test this page's specific question. Destination observations were measured separately in Chromium 156 using detached native controls and programmatic value assignment. Node reruns the actual homepage callback and reads the saved browser observations; it does not independently rerun the browser. No form was submitted. We make no detector-score or statistical-watermark removal claim.
| Fixture and mode | Input string and code points | Output and cleaner status | Observed before / after |
|---|---|---|---|
| Marked leap date direct string / keep / invisible true | "2024-02-29"U+0032 U+0030 U+0032 U+0034 U+002D U+0030 U+0032 U+002D U+200B U+0032 U+0039 | "2024-02-29"Removed 1 invisible character | {"optional":{"valid":true,"value":"","valueMissing":false},"required":{"valid":false,"value":"","valueMissing":true}}{"optional":{"valid":true,"value":"2024-02-29","valueMissing":false},"required":{"valid":true,"value":"2024-02-29","valueMissing":false}} |
| Valid leap date direct string / keep / invisible true | "2024-02-29"U+0032 U+0030 U+0032 U+0034 U+002D U+0030 U+0032 U+002D U+0032 U+0039 | "2024-02-29"No selected invisible characters found | {"optional":{"valid":true,"value":"2024-02-29","valueMissing":false},"required":{"valid":true,"value":"2024-02-29","valueMissing":false}}{"optional":{"valid":true,"value":"2024-02-29","valueMissing":false},"required":{"valid":true,"value":"2024-02-29","valueMissing":false}} |
| Invalid leap date direct string / keep / invisible true | "2025-02-29"U+0032 U+0030 U+0032 U+0035 U+002D U+0030 U+0032 U+002D U+0032 U+0039 | "2025-02-29"No selected invisible characters found | {"optional":{"valid":true,"value":"","valueMissing":false},"required":{"valid":false,"value":"","valueMissing":true}}{"optional":{"valid":true,"value":"","valueMissing":false},"required":{"valid":false,"value":"","valueMissing":true}} |
| Empty date direct string / keep / invisible true | "" | ""No selected invisible characters found | {"optional":{"valid":true,"value":"","valueMissing":false},"required":{"valid":false,"value":"","valueMissing":true}}{"optional":{"valid":true,"value":"","valueMissing":false},"required":{"valid":false,"value":"","valueMissing":true}} |
Record the receiving value before interpreting validity
The interrupted leap-date source contains a selected marker before 29. Before cleanup, assigning that string to a date input produces an empty value. The optional element reports valid true. After cleanup, the field retains 2024-02-29 and remains valid. Reading only the boolean would miss that the first state had discarded the supplied spelling. The observer saves the receiving value as evidence, not merely the source string that the caller attempted to assign.
An impossible leap date is a separate failure
The unmarked 2025-02-29 control also becomes empty, while the valid 2024-02-29 control is retained. Character removal has no effect on either spelling because neither includes a selected marker. Thus sanitization is not evidence that an invisible character was found. The calendar-invalid reference is particularly useful when an interface shows an empty date without an obvious format error: an optional empty control can be valid even though the attempted source was not accepted as a date value.
Required exposes the empty state without restoring it
After reading the optional state, the observer sets required true and reads validity again. Sanitized empty values now have valueMissing true and valid false. The retained leap date passes. No missing digits are recovered by adding the attribute. This fixture does not test min or max dates, step constraints, timezone conversion, localized picker display or a server schema. The earlier Date.parse article concerns JavaScript timestamp parsing; a native date control has a different observable value and constraint interface.
Preserve the source before assigning it
If a workflow must explain rejected input, keep the original text alongside the element value because sanitization can remove the attempted spelling from that element. Our harness uses fresh detached controls and no actual calendar submission. The browser download reconstructs this experiment locally; the Node run only repeats the cleaner plus recorded destination data. Every date here was authored as a fixture. Neither calendar acceptance nor sanitization identifies Claude output, and no statistical detector or authorship score was tested.
Reproduce this test
For a fresh native-control measurement, save and open reproduce-browser.html in your browser. It embeds the exact fixture observer and saved homepage script, runs locally, and shows its user agent. For the Node cleanup rerun, save reproduce.cjs, tested-app.js and browser-observations.json in the same folder. Run the command below with Node.js. The harness prints its runtime, script SHA-256 and every measured row. Compare those rows with the original record. Using a newer script or runtime creates a new experiment; retain the version information with your rerun.
node reproduce.cjsReference and next check
WHATWG HTML date-state-(type=date) provides the relevant primary definition. The table and fixture analysis are original measurements. For broader inspection, use our Unicode inspector. Read the scope distinction before interpreting cleanup as a watermark result.