AI fixture labeling

Since we might use AI/diffsion generated images to test camouflage, it is handy to have a script to tag in a visible way the synthetic faces and the machine-generated makeup.

CODE
node scripts-dev/mark-ai-images.cjs --size 15% --dry-run
node scripts-dev/mark-ai-images.cjs --size 15%

--size 160 means a 160px-wide badge. Default: 15% of image width, bottom-right. The marker defaults to all JPEG/PNG files under tests/fixtures/synthetic-faces/. Existing visible badges are skipped, including badges of another size. See README.md in this folder for exact overwrite behaviour and detection limits.

Why a visible label

C2PA has an official Content Credentials icon, but it represents available provenance information; Ghostmaxxing doesn't need EXIF/metadata informations, but rather visible human information when media is consumed. It adds no hidden marker or EXIF provenance claim. C2PA might be a known industry standard, but isn't suitable in this case.

The scripts apply an explicit AI Gen label in the project's existing Atkinson Bold font and orange/ink colour tokens.

(unused, but) C2PA references:

Test made

  • All 33 synthetic JPEG fixture copies were marked at 15%, then run again with --size 120: all skipped, and before/after SHA-256 lists were identical.
  • The four regression cases cover JPEG and PNG idempotence at changed sizes, unchanged dimensions, dry-run/invalid-size byte preservation, and corrupt input.
  • Visually inspected a marked portrait; the badge is legible in the bottom-right.