Skip to content

Withdraw Series Three art: invented faces, not likenesses - #12

Merged
ralyodio merged 1 commit into
masterfrom
revert-fabricated-faces
Sep 8, 2026
Merged

Withdraw Series Three art: invented faces, not likenesses#12
ralyodio merged 1 commit into
masterfrom
revert-fabricated-faces

Conversation

@ralyodio

@ralyodio ralyodio commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

The first art pass generated every portrait from a text prompt alone. The model was never shown a photograph, so it produced a plausible-looking stranger for each name rather than the actual person. Jeremiah Grossman's card looks nothing like him; Diffie's is close to a generic long-haired archetype.

For a set that presents itself as documented, sourced history, an invented face attributed to a living person is the same class of defect as the fabricated quotes this set was explicitly built to avoid — arguably worse, since every scouting report is checkable and the picture next to it was not.

This PR

  • Removes all 100 published faces from public/cards/security/.
  • Deletes the 50 source portraits from assets/portraits/security-pros/. Keeping them would only enable re-rendering the same wrong likenesses.
  • Clears front/back on all 50 entries, so the roster falls back to monogram plates and the set reads as unillustrated again.
  • Gates card pages on art existing: generateStaticParams filters on front rather than prerendering a 404 for every slug.

What replaces it

A follow-up conditions generation on a real, freely-licensed reference photo and credits the photographer.

A survey of the roster against Wikidata/Commons found:

  • ~37 of 50 have a usable free photo, once files that exist on Commons but are not wired to the Wikidata item are included (Ross Anderson, Martin Roesch, Alex Sotirov, J. Alex Halderman, Lesley Carhart).
  • Identity cannot be assumed from a match. Michael Howard resolves to the British Conservative Party leader, Jeff Williams to a Canadian rugby player, Ivan Ristić to an art historian, Mark Dowd to a "Mark Dowdall". Shipping those would put a stranger's face on the card, which is worse than a generic one — so every identity gets verified individually.
  • The remainder get no face rather than an invented one, unless a CC-licensed conference photo turns up per person.

🤖 Generated with Claude Code

https://claude.ai/code/session_014htrUgbnoKQt9iT4G7hUpy

…enesses

The first art pass generated every portrait from a text prompt alone. The model
was never shown a photograph, so it produced a plausible-looking stranger for
each name rather than the actual person — Jeremiah Grossman's card in particular
looks nothing like him, and Whitfield Diffie's is not far off a generic
long-haired archetype.

For a set that presents itself as documented, sourced history, an invented face
attributed to a living person is the same class of defect as the fabricated
quotes this set was already built to avoid. It is arguably worse: the scouting
reports are all checkable, and the picture beside them was not.

So all 50 faces are withdrawn from the site and the 50 source portraits are
deleted rather than kept, because their only use would be re-rendering the same
wrong likenesses.

What replaces them, in a follow-up:
  - Generation conditioned on a real, freely-licensed reference photo, with the
    photographer credited. A survey of the roster finds ~37 of 50 have a usable
    photo on Wikimedia Commons, though several Wikidata matches point at the
    wrong human (Michael Howard resolves to the British politician) so each
    identity has to be verified rather than trusted.
  - Anyone with no free reference photo gets no face at all, not an invented one.

Card pages are gated on art existing, so `generateStaticParams` now filters on
`front` instead of prerendering 404s for every slug.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014htrUgbnoKQt9iT4G7hUpy
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

ThreatCrush Security Scan

4 finding(s)

MEDIUM: 4

Severity Rule Location
MEDIUM js-credential-logged scripts/migrate.mjs:16
MEDIUM js-unescaped-html-sink src/app/cards/[slug]/page.tsx:60
MEDIUM js-unescaped-html-sink src/app/hacking-legends/[slug]/page.tsx:68
MEDIUM js-unescaped-html-sink src/app/security-professionals/[slug]/page.tsx:68

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit f1e1c47 into master Sep 8, 2026
4 checks passed
@ralyodio
ralyodio deleted the revert-fabricated-faces branch September 8, 2026 01:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant