← The CLR Journey

The reckoning — v2.0

The probe that refuted my own strongest claim, curated from my research ledger.

By mid-2026 my stack was drifting toward per-domain heads, and that drift posed a question I wanted answered rigorously: could I instead harden the base — find generator-invariant features so one foundation generalizes to unseen models, as the patent thesis implied? The test was cross-source generalization: train on the existing corpus (camera, scraped, and art pools), evaluate on three pools of unseen 2025 generation — reel screenshots, Instagram photoreal AI, and Midjourney.

The verdict, up front

No generator-invariant foundation exists in my current feature set. The warp base is genuinely model-agnostic only within the camera-photo distribution it was built on. On 2025 photoreal social AI and Midjourney, warp — and every other physics signal, and DINOv2 — is data-coverage-bound and sign-inverts.

The matrix

Trained on OLD, evaluated per source (AUC < 0.5 means my model calls that generator's AI "real" — sign inversion):

familyOLD-CVreelig_photorealmidjourneyNEW-CV
warp0.7320.5810.2610.2180.581 / 0.261
capture0.6940.8370.3830.5621.000 / 0.816
optical0.6450.2270.5480.2830.982 / 0.884
dino0.7350.6740.2490.4570.926 / 0.990
fusion [warp+dino]0.8200.7540.2510.4650.927 / 0.989
full stack0.8460.7940.2850.5051.000 / 0.990

I read it three ways, in descending order of comfort:

  1. The NEW-CV column is the good news. Trained in-distribution, every new pool separates at 0.9+. These generators are not undetectable — they are uncovered. Generalization comes from data, not from a better foundation.
  2. The inversions are the bad news. Warp at 0.218 on Midjourney isn't noise — it is my model confidently wrong, because MJ's non-photographic texture pattern-matches the "no fragile PRNU" signature of things my training set labeled real.
  3. The reel column is a trap. I decomposed capture's apparent 0.837 on reels into pure resolution confounds: a resolution-validity pair of capture features was reading a 2.25× class-correlated resolution difference, not physics. My screening pass also caught a 17% capture-defeat rate on the photoreal pool — photoreal AI faking a sensor signature — and ~14% label noise ("This is AI." rage-bait posts that are actually real).
Figure

The per-feature view of the same story: on the mixed/downsampled corpus, real and generated distributions of the four core warp features nearly coincide at the million-tile scale. My per-feature invariance sweep found exactly zero features that separate consistently across all sources — the closest, a high-frequency spectral peak feature, clears 0.5 everywhere but only marginally.

What survived

The probe wasn't purely destructive. A follow-up pass let me harden the warp model itself: deeper trees lifted camera-domain image AUC 0.692 → 0.714, feature-gain analysis crowned circ_var_noise, and leave-one-out showed the 4 seam features had gone dead weight — prunable to a leaner warp model with no loss.

And the repositioning I had to write for myself, verbatim from my research ledger:

v2.0 = a camera-physics base + a data-coverage fusion, not a model-agnostic detector of 2025 generators. The model-agnostic thesis holds within camera-photo distribution; it does not extend to current photoreal social AI / Midjourney with any feature I have.

Why this was the most productive failure I've had

Every architectural decision I've made since flows from this table:

  • Class-correlated confounds became a screening discipline — I never let class-correlated resolution enter training again; new social pools are fusion-only.
  • I demoted the capture signature from generalization feature to high-precision prior: capture-present → real, valid only at native resolution, dominant when it fires and silent otherwise. In my current stack that prior is one of the strongest components — used correctly, it never needed to generalize.
  • "In-distribution coverage is the only lever" became the flywheel — daily scraping, feature-store ingestion, warm-start retrains (chapter 6). If generalization is data, then my moat is the data pipeline, not the model.
  • Follow-on probes closed adjacent doors with the same rigor: I refuted super-resolution preprocessing, measured smaller tiles as worse, and opened the container-provenance pivot (chapter 6) precisely because I had measured pixel-space invariance to its limit.

The hypothesis still stands where physics says it should: within the camera-photo domain, against the class of generators that don't simulate sensors. What v2.0 removed was my extrapolation — and what it left me with was an engineering strategy that could actually ship.