Nishi adnet vs Google Ad Manager · Kevel · Revive Adserver · the 4chan self-serve model. Presence census 14/14 axes (1000 permil), 163 corpus attestations, liar-kill ARMED (grades are disk-fact functions, never self-scored; census re-run 2026-07-09). June exceed ladder: 4/6 MEASURED EXCEEDS with cited incumbent baselines.
| axis | status | grounding |
|---|---|---|
| Sovereign ad server infra | PARITY | own HTTP server (nx_http_server) - no third-party gatekeeper |
| First-party serving | PARITY | same-origin, ad-block-resilient (nx_dist_serve) |
| Banner ad unit | PARITY | nx_adnet inventory rows + 728x90 units |
| Rotation / inventory | PARITY | 1-of-N per section per view (nx_adnet ad_pick) |
| Impression tracking | PARITY | per-AD append-only served counters (no visitor key) |
| Click tracking + redirect | PARITY | first-party /ad/click/id 302 (gated fail-closed) |
| CPM/CPC billing | PARITY | nx_adnet_bill gate 6/6 - integer milli-units, REFUSES unpriced/unmeasured |
| Self-serve advertiser | PARITY | nx_adnet_selfserve gate 5/5 - staged-never-live intake, operator approve |
| Contextual targeting | PARITY | by page section only - privacy-respecting |
| Advertiser dashboard | PARITY | nx_adnet_dash gate 7/7 - aggregate-only, zero JS |
| Privacy-respecting | PARITY | no cross-site behavioral tracking anywhere |
| SITE-WIDE slot on every page | PARITY | hr_serve3_slot gate 8/8 - edge injection, byte-identical when off |
| Time-rotation serving | PARITY | no per-user frequency state (capping-via-id REFUSED) |
| ads.txt transparency | PARITY | DIRECT single-seller emission - zero reseller hops |
| axis | status | vs incumbent |
|---|---|---|
| Delivery (one ad per page) | EXCEEDS | 0 third-party JS vs the GPT loader script tag |
| Privacy analytics | EXCEEDS | aggregate + k-anon floor k=5 vs Plausible (cookieless but no k-floor) |
| Signup (pay-on-results) | EXCEEDS | 0-dollar on miss vs CPM pay-regardless |
| Transparency | EXCEEDS | DIRECT single-sponsor, zero reseller hops vs reseller chains |
| Viewability | HELD | MEASURED (MRC dwell rules in nx_ad_view); incumbents match - a beat claim would be overclaim |
| Bot filtering | HELD | MEASURED (aggregate GIVT); SIVT needs per-user fingerprinting we REFUSE |
ONE labeled first-party slot on EVERY served HTML page of every ad-enabled host, injected at the edge file server (hr_serve3_slot): fail-closed per-host (@host directive), page opt-out marker honored, byte-identical serving when disabled (gated do-no-harm law), correct Content-Length by construction. Click redirects and served-impression counters are first-party and per-AD only. Rotation is time-based - deliberately NO per-user frequency state.
Navigate the estate: the LIVING CATALOGUE of digital / app / physical ad real estate · sitemap · live inventory.
| item | status | why |
|---|---|---|
| Per-user frequency capping | REFUSED | requires a visitor identifier - against the privacy law; time-rotation instead |
| SIVT-grade bot filtering | REFUSED | requires fingerprinting - GIVT aggregate lane only |
| RTB / programmatic exchange | HELD | single-seller DIRECT model by design - no auction middlemen |
| OPAQUE advertiser portal | MEASURED | dashboard organ gated; portal auth wiring = named follow-on |
| Root /ads.txt placement | MEASURED | emitter gated; root-file publish lane = named follow-on |
Every green above traces to a gate log in knowledge/status/ (adnet_slot 19/19 · hr_serve3_slot 8/8 · adnet_bill 6/6 · adnet_selfserve 5/5 · adnet_dash 7/7 · census GREEN liar-kill armed). Generated by nx_adnet_compare_page - regenerate, never hand-edit.