# Measured destructive watermark tests

Reference run: 2026-10-09T14:57:31.979Z. Node v24.15.0, Chrome/155.0.8059.39, sharp 0.35.5. Algorithm SHA-256: `a56b13b77fbd7344a7c9fef086bfcd9550290f1658cc4065c358507779d81882`.

Three synthetic pages at 1920 x 1440: white paper with dark strokes and a table, gray paper, and a textured colored background. Eight candidate copy patterns. Same audit key, distinct copy IDs. No real personal data.

| Transformation | Correct detection | Interpretation |
| --- | --- | --- |
| screenshot-100-percent | 3/3 | Actual Chrome screenshot at device scale 1, no PNG-only substitute. |
| crop-20-percent-area-offset-0 | 3/3 | Percentage of AREA removed; corner offset 0 or 1. |
| crop-20-percent-area-offset-1 | 3/3 | Percentage of AREA removed; corner offset 0 or 1. |
| crop-50-percent-area-offset-0 | 3/3 | Percentage of AREA removed; corner offset 0 or 1. |
| crop-50-percent-area-offset-1 | 3/3 | Percentage of AREA removed; corner offset 0 or 1. |
| jpeg-q90 | 3/3 | Measured on synthetic pages only. |
| jpeg-q60 | 3/3 | Measured on synthetic pages only. |
| resize-1920-to-800 | 3/3 | Measured on synthetic pages only. |
| rotation-2-degrees | 0/3 | Failed for all three pages; no rotation compensation. |
| contrast-plus-30-percent-clipped | 3/3 | Measured on synthetic pages only. |
| background-whitening-and-dark-threshold | 2/3 | Fails on white paper; mark survives on gray/texture. White >240, dark <60 thresholded. |
| pixel-recreation-from-source | 0/3 | Unmarked source redrawn. No OCR engine used; distinct from a measured OCR round trip. |
| Real smartphone photo | Not tested | Requires an actual photograph. |
| Screenshot then OCR/recreation | Not tested | Recreated pixels are a known erasure control; OCR itself was not run. |

Six negative controls (three unmarked pages and three wrong-key analyses) produced zero matches. No transformed page was attributed to another candidate. These counts do not establish a population false-positive rate.

Detection absence is not evidence of non-origin. The benchmark does not simulate malicious key holders, every image, every crop size, camera perspectives, print-scan or collusion. A screenshot is possible even when the original cannot be downloaded.

Run `npm test` for new destructive measurements and cryptographic tampering checks. `npm run benchmark -- results.local.json` saves a fresh matrix. Read `results.json` for pixel hashes, dimensions and scores. Detection times are machine-dependent and do not describe homepage performance.

An independent auditor needs their own trusted record/checkpoint and appropriate copy patterns or locally held audit key for a real investigation. Never publish a real team key.
