← Q-Branch launcher

What to try — watermark

# WHAT TO TRY — Item 1: The Invisible Watermark

**Time needed: about 5 minutes. You need: a terminal in this folder and
one of your own photos you don't mind copying.**

Folder: `~/workspace/horizon-works/q-branch-2026-10-31/01-watermark/`
The page that explains it all (just open the file, nothing is online):
`watermark-ui.html` — theme “Darkroom Brass”.

## The 5-minute walk

1. **See the test bench pass with your own eyes**
   ```
   python3 run_fixtures.py
   ```
   Expect the last line: `ATTACKS: 6/7 survived; negative control: PASS; distinct-ID: PASS; short-ID: PASS`
   The one DIE is the 25% crop — that failure is real and is printed on purpose.

2. **Mark a copy of one of your own photos** (use a copy, never your only original)
   ```
   python3 watermark.py mark ~/path/to/your-photo.jpg marked-test.png --id "Chris Fernandez — Berserk 2026"
   ```
   Mark text can be anything up to 32 characters — a name, a business, a date.

3. **Read it straight back**
   ```
   python3 watermark.py read marked-test.png
   ```
   Expect: `MARK FOUND: Chris Fernandez — Berserk 2026` with the CRC verified.

4. **Try to kill it the normal way** — open `marked-test.png`, save it as a
   JPEG, shrink it to half size, save again, then:
   ```
   python3 watermark.py read your-shrunk-copy.jpg
   ```
   On the house sample this still reads. Your photo, your editor, your
   result — if it dies, that is a real finding; tell Muse the editor and
   settings and it goes in the fixture record.

5. **Try to kill it the hard way** — crop a quarter off the marked copy and
   read it again. Expect `NO MARK`. That is the honest boundary of v1.

## The fence, in plain words

- Your own photos only — this is for marking work that is yours.
- A found mark **supports** a claim that a copy came from you. It is not
  DRM, it is not unremovable, and it is not courtroom proof by itself.
- Everything runs on this machine. No photo is uploaded anywhere.

## If something breaks

- `error: --id is N UTF-8 bytes; maximum is 32` → shorten the mark text.
- `too small` → the picture is under 128×128; use a bigger original.
- `NO MARK` on a file you just marked → check you marked *that* file and
  read the marked output, not the original.