Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,11 @@ dist/hacking/
# faces under public/cards/security/ are the committed record.
# node scripts/security-pros.mjs all
dist/security/

# Reference photographs the portraits are painted from. NOT committed: several are
# ordinary all-rights-reserved bio photos used with permission as references, and
# redistributing them in the repo is a different act from painting from them.
# data/security-references.json records where each came from, and
# node scripts/security-refs.mjs fetch
# re-downloads the lot.
assets/references/
26 changes: 24 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,30 @@ pnpm security all 1 5 12 # ...only these card numbers
pnpm security render # re-render faces from the template, no API calls
```

Same stages and the same resumability as Series Two, with one deliberate
difference: **`all` does not run `enhance`.** On Series Two that image-to-image
Portraits are painted **from a real photograph of the person**:

```bash
node scripts/security-refs.mjs resolve # find + verify a reference photo per card
node scripts/security-refs.mjs fetch # download them (gitignored)
node scripts/security-refs.mjs report # who still has no face
```

The first art pass generated faces from text prompts alone and produced an
invented stranger for every name. That art was withdrawn. Generation is now
image-to-image off `assets/references/security-pros/`, and **a card with no
verified reference photo gets no face** — the front renders a plate saying so.
40 of 50 currently have one; `data/security-references.json` records the source,
photographer and licence for each, and the card page prints the credit.

Identity is verified, not assumed. A name search returns humans, not the right
human: "Michael Howard" resolves to the British politician, "Robert M. Lee" to a
Confederate general, "Mark Dowd" to a Liverpool councillor. The resolver requires
a surname match, rejects pre-1950 photographs, requires a Commons filename to
*open* with the person's full name, and carries an explicit reject list with
reasons. Everything it accepts was still checked by eye.

The same stages and resumability as Series Two, with one deliberate difference:
**`all` does not run `enhance`.** On Series Two that image-to-image
finish pass rewrote text on the card faces despite the prompt forbidding it — it
fabricated quotes attributed to living people, invented stat panels that were not
on the card, and misspelled a name. Nothing in the pipeline catches that, because
Expand Down
Binary file modified assets/portraits/security-pros/card_001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_003.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_004.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_005.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_006.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_007.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_008.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_009.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_010.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_011.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_012.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_013.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_014.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_015.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_016.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_017.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_018.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_019.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_020.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed assets/portraits/security-pros/card_021.png
Binary file not shown.
Binary file modified assets/portraits/security-pros/card_022.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_023.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_024.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/portraits/security-pros/card_025.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed assets/portraits/security-pros/card_026.png
Diff not rendered.
Binary file modified assets/portraits/security-pros/card_027.png
Binary file removed assets/portraits/security-pros/card_028.png
Diff not rendered.
Binary file removed assets/portraits/security-pros/card_029.png
Diff not rendered.
Binary file removed assets/portraits/security-pros/card_030.png
Diff not rendered.
Binary file modified assets/portraits/security-pros/card_031.png
Binary file removed assets/portraits/security-pros/card_032.png
Diff not rendered.
Binary file removed assets/portraits/security-pros/card_033.png
Diff not rendered.
Binary file removed assets/portraits/security-pros/card_034.png
Diff not rendered.
Binary file modified assets/portraits/security-pros/card_035.png
Binary file modified assets/portraits/security-pros/card_036.png
Binary file modified assets/portraits/security-pros/card_037.png
Binary file modified assets/portraits/security-pros/card_038.png
Binary file modified assets/portraits/security-pros/card_039.png
Binary file modified assets/portraits/security-pros/card_040.png
Binary file modified assets/portraits/security-pros/card_041.png
Binary file removed assets/portraits/security-pros/card_042.png
Diff not rendered.
Binary file modified assets/portraits/security-pros/card_043.png
Binary file modified assets/portraits/security-pros/card_044.png
Binary file modified assets/portraits/security-pros/card_045.png
Binary file modified assets/portraits/security-pros/card_046.png
Binary file modified assets/portraits/security-pros/card_047.png
Binary file modified assets/portraits/security-pros/card_048.png
Binary file modified assets/portraits/security-pros/card_049.png
Binary file removed assets/portraits/security-pros/card_050.png
Diff not rendered.
Loading