Sponsored research — retrospective
What the build was, what it got wrong, what came out of it

Table of Contents

1. 1. Progression

Phase Artifact Trigger
Observation   why does a 1,000-word article carry an unbounded tail?
Parody CFG chumbox over the idf hapax tail generation must be free or the joke costs more than the article
Measurement two page captures, ~124 then ~250 units the second capture disagreed with the first
Schema v1 delivery contract (Criteo retailer integration) copy a real contract rather than invent one
Creative plate tone spec, flux2-klein pipeline needed imagery, had a local 4B model
Slot contract v4, from ads.html freyr/tmntag/Permutive/Taboola recovered from DOM
Attribution v5 + stuffing detectors cookie-stuffing question
Behaviour v6 intent signals, exit intent ledger was sparse; needed real touchpoints
Production failure Obbligato shipped, observed, diagnosed
Contract v2 closed type, single constructor, negative fixtures four constructors are not a contract
Pipeline asset jobs, leases, creative ops generation is cheap; the decision record is the artifact
Framing typed contract registry, views archetypes are referent kinds, not render styles

2. 2. Corrections

Four claims were wrong. Every one was corrected by inspecting an artifact already in hand rather than by acquiring new information — which is the finding worth keeping.

Claim Correction What I was reasoning from
The ad load is client-injected in-article slots are server-rendered by WordPress; only the feed is client-side the fetched HTML, without looking for Purch_
Repeated creatives are a dedup failure fourteen paired rewrites — session-level headline testing headline text at page scale
The visual register is amateur phone-flash six of eight creatives are AI-generated, one studio-lit on black thumbnails at page scale, plus 2015-era headlines
_dir is the taxonomy _dir is a boolean; taxonomy is the _id path prefix the field name

The pattern: each error came from reasoning about a proxy — headline text, downscaled thumbnails, a field name — when the artifact itself was available. The 2× crop that overturned the tone spec took two minutes and could have run before the spec was written rather than after.

Two of these produced better output than being right would have. The register correction surfaced the copy/image divergence in §4. The _dir correction was found by building real inventory instead of illustrative inventory.

3. 3. Findings

3.1. 3.1 Remnant degradation reveals the model

Fill quality is monotone decreasing in depth. The first ~120 units cohere around a segment; past that the pool goes to aircraft flooring, injection moulding, and CME modules on relapsed AML. Matched demand is finite, feed depth is not, marginal cost of another page is ~0. Depth is therefore a selection filter — the readers who reach unit 200 are by construction the ones who respond — not a reach play.

3.2. 3.2 The copy register and the image register have diverged

Headlines are unchanged from the 2015 chumbox: "One Weird Trick", "Doctors Hate", "You Won't Believe". The imagery is 2026 generated: even lighting, impossible simultaneity, duplicated subjects across a diptych. The words did not change; the pictures got generated.

I could not find this stated anywhere. Zeng et al. classify ad content on news sites (ConPro 2020, CHI 2021, IMC 2021, 1.4M ads across six geos, public dataset) but treat creative as a unit. The divergence is measurable with their methodology and their corpus.

3.3. 3.3 Non-displacement purchases a mechanism proof

Carrion et al. (arXiv 2105.13556, AAAI 2023) argue that blending sponsored with organic requires a payment mechanism recognising the externalities an ad imposes on other content — GSP ignores them, VCG captures them. If sponsored units never enter the organic ranking and never permute it, that externality is identically zero, and plain GSP is sound.

An invariant bought a four-line mechanism instead of VCG. This generalises: I8 is critical for a proof, not for taste, which is why it has a test that fails when violated rather than a comment saying not to.

3.4. 3.4 Provenance at write time beats statistics at audit time

Cookie stuffing is undetectable per-event — a stuffed click carries a real UA, real IP, real referrer, real subsequent purchase. Every working detector is distributional: click-to-conversion latency, orphaned touches, claim density, overlap.

All four reconstruct, badly and late, a fact that costs one boolean to record at write time. Production affiliate schemas have no provenance field, so the entire detection literature exists to recover something nobody wrote down. The v5a suite can be validated against ground truth precisely because our ledger records it — which no auditor of a real program can do.

3.5. 3.5 n constructors, zero contracts

Obbligato — a Yelp-shaped restaurant at a URL with no document, hours for a business that does not exist, a plate from the wrong taxonomy — was not a rendering bug. Four constructors each produced plausible units by different routes, and the intersection of four contracts is not a contract. The fix was structural: closed type, single constructor, total validator that fails closed. Invariants became inductive on the constructor rather than asserted afterward.

3.6. 3.6 Exactly one layer may be fictional

A real referent under a fictional treatment reads as a joke. Two fictional layers read as noise. The German-record-store feeling was two fictions stacked: an invented entity and an advertising frame, leaving the reader nothing to stand on. Verbatim index copy under a retail-media frame is legible; invented copy under the same frame is not.

3.7. 3.7 When generation is free, governance is the bottleneck

The source page carried ~250 units against 1,000 words, fourteen under concurrent test. That effort is operational, not artistic. In the pipeline this produced, generation is ~7 minutes and review latency is days — the gantt renders the generation bars as hairlines. The scarce resources are authority and time.

3.8. 3.8 A closed ecosystem hollows the market parts and leaves the rest

One advertiser, one publisher, one corpus, same party on both sides. GSP over a single bidder returns the reserve; the auction evaluates a constant. Bids are deterministic noise, ACOS is Infinity, incrementality is null until a holdout accumulates.

What survives is everything that never needed a counterparty: the contract, the review ledger, provenance, non-displacement, claimedCreditRatio. Which is an argument, not a consolation — every real retail-media network is closed in the ways that matter. The retailer runs the auction, sets the reserve, ranks the results, and reports its own performance. Removing the money removed the only thing obscuring the structure.

4. 4. Research that emerged

Ranked by how tractable each is with what already exists here.

  1. Native delivery mechanics. RTB display is thoroughly measured (Olejnik NDSS 2014; Bashir USENIX 2016; Papadopoulos WWW 2019; Cook PETS 2020; Musa & Nithyanand's Atom). Recommendation-widget delivery — feed pagination, remnant fallthrough, session-level creative rotation — is not, because the payload is a proprietary API rather than an IAB standard. There is no Atom-equivalent for native. The _taboola.push reconstruction in v4 sits in that gap.
  2. Register divergence at scale. §3.2, testable against the Zeng corpus. Classify creative imagery as generated vs photographic, cross with headline-register features, measure the gap longitudinally.
  3. Recall ceiling of post-hoc attribution auditing. Formal version of §3.4: given path length ℓ and stuffing density d, what is the maximum achievable recall of distributional detectors versus a one-bit provenance field? Suite.validate() supplies labelled data.
  4. Does zero-externality survive feeds? §3.3 holds for reserved slots. Feeds interleave by construction, so the externality is nonzero and the GSP shortcut fails. What is the weakest structural constraint on a feed that restores it?
  5. Governance-to-generation ratio. §3.7 is directly instrumented and, as far as I can tell, unpublished. Needs I12 to have actually blocked something before the number means anything.

5. 5. Open debt

Item Where
SearchUnit contract (S1–S5) unimplemented — arbitrage units serve outside the boundary contract
I10 / tagline: four-part refinement obligation not landed; text assets generate but nothing renders contract
exp-101 measures nothing until typed contracts give the variants distinct renders creative ops
fatigueImpressions: 5000 unreachable at wal.sh traffic; every creative fatigues on age policy
organicCards() selects only /research/, so the exit overlay ran 1:3 against a configured 0.5 exit intent
Index sha 60341abd vs build sha ca6af65f — provenance anchor undecided build
Duplicate Morning Brief row on the SERP corpus or render

6. 6. The one-line version

The parody was the occasion; the artifact is a legible ad system. Every mechanism a real network computes and conceals — the auction arithmetic, creative provenance, attributed-credit inflation, the incrementality it never measures — is printed here, and the only reason that is cheap is that there is no money in it.

Refutation condition for the whole exercise. The claim is that legibility is the contribution, and that it generalises beyond a zero-revenue toy. It fails if every disclosure implemented here turns out to be cheap because the economy is $0.00 — that is, if introducing real money would make each one either costly or strategically impossible. Test it one at a time: which of _auction, claimedCreditRatio, creative provenance, and the holdout would a real publisher be unable to ship? My expectation is that provenance and the holdout survive commercialisation and the auction disclosure does not — but that is a conjecture, and the interesting result is wherever the line actually falls.

7. Cross-references