Source Authorship Forensics

Chess Engine Forensics — about the project

How the collection is made: the two axes, the methodology, the coverage, and where everything is saved.

A companion project on this site: a source-level read of chess-engine repositories, judging each on two independent axes — authorship (human, AI, or in between) and Stockfish similarity (independent vs. built on Stockfish). Every engine is cloned, its git history and code scanned for tell-tale fingerprints, and contrasted with Stockfish. Live index: /engine-analysis/.

The two axes

Authorship spectrum

BandMeaning
AI-generatedThe code itself was produced by AI; the human role is direction / prompting.
AI-assistedA person's own project, with an AI assistant used as a tool in the loop.
Human-writtenAuthored by a person — hobbyist to expert to veteran.

Stockfish-similarity scale

RatingMeaning
DerivedBuilds directly on Stockfish's code or network.
StrongRe-implements Stockfish's techniques independently (bitboards + NNUE + LMR/NMP/SEE).
ModerateModern architecture with its own distinct choices.
IndependentOwn board representation / hand-crafted eval / unusual language.

The axes are orthogonal: a human engine can be very Stockfish-like (Catalyst), and "Strong similarity" means shared technique, never shared code.

Methodology — the "tests"

For each engine:

  1. Clone the repository (shallow for large ones).
  2. Git history — commit count, span, authors, message style. Incremental SPRT/OpenBench-style patches over months ⇒ human; a single wholesale dump or all-web-UI uploads ⇒ suspect.
  3. AI-marker scan — grep the source for generated-text residue:
    • Gemini [cite: N] markers (Luna had 147).
    • A committed claude npm dependency / node_modules/claude (Owen).
    • A CLAUDE.md project file (Triumviratus, Arasan).
    • Self-disclosure in the UCI banner (Onyx: id author Dylan (with Claude)).
  4. Code texture — jokes, typos, abandoned experiments, tuning notes (human) vs uniform, over-explained, plausible-but-shallow output (AI).
  5. Engineering depth — are the hard parts actually right (e.g. an incremental NNUE accumulator) or merely imitated in shape (Luna recomputed from scratch)?
  6. Stockfish-derivation scan — grep source for Stockfish's copyright header / "part of Stockfish" notice / copied NNUE code. Zero open-source engines examined are forks.

Verdicts infer authorship from convergent evidence; they are well-supported readings, not certifications.

Coverage

New-release engines — full individual write-ups

Mostly from the TalkChess "New engine releases H1 2026" thread.

EngineAuthorshipSF sim.
Luna🔴 AI-generated (careless paste, Gemini; dev-confirmed)Moderate
Owen🔴 AI-generated (agent-built, Claude Code)Derived
Triumviratus🟠 AI-assisted (expert human-led)Derived
Onyx🟠 AI-assisted (self-disclosed)Moderate
Askaig🟠 AI-assisted (self-disclosed, Claude Fable 5)Strong
Pawnstar🟠 AI-assisted (veteran-led, since 2014)Strong
Amira🟠 AI-assisted (human + LLM)Independent
rudim🟢 HumanStrong
Crustik🟢 Human (hobbyist C)Independent
Catalyst🟢 Human (expert)Strong
tomitankChess🟢 Human (9-yr JS lineage)Independent
Ember🟢 Human (collaborative)Strong
Lozza🟢 Human (veteran JS)Moderate
chessnix🟢 Human (Zig)Independent
Ratsu🟢 Human (Rust)Independent
Gyatso🟢 Human (Nim)Moderate
Porcupine🟢 Human (Rust)Independent

CCRL 40/40 top 50 — survey + standouts

Headline findings (elite tier): 0 AI-generated engines (no model autonomously builds a 3500-Elo engine); 1 AI-assisted (Arasan); 0 actual Stockfish forks — the top has converged on the paradigm, not copied the code. Language variety: mostly C++, strong Rust presence, and Lizard is C# (top 12).

Site structure

Each analysis is a self-contained HTML page (inline CSS, theme-aware light/dark, responsive, GoatCounter view-counter) at /<slug>-analysis/.

Page template & tooling

The pages share one CSS/scaffold. Generators are archived in tools/ in the repository: gen_pages.py (the TalkChess pages), gen_ccrl.py (the CCRL standouts), and add_sfsim.py (injects the "Stockfish similarity" header line into each page).

To add a new engine: clone & run the tests → pick a verdict + SF-similarity → author the page (copy an existing *-analysis/ as a template) → add a row/link to /engine-analysis/ (and the CCRL survey if applicable) → deploy.