code wiki / _hdl_build / nx_ad_view_gate.nx

nx_ad_view_gate.nx source

↩ module page · 84 lines · 4494 B

1// nx_ad_view_gate.nx -- GATE (runnable) for the honest VIEWPORT-VERIFIED impression rule (nx_ad_view). 2// Proves on baked controls that the MRC rule is enforced and that served-but-unseen is REFUSED: 3// boundary : viewed + dwell==1000ms -> viewable (MRC >=1s); dwell==999ms -> NOT (under-dwell) 4// unseen : viewed==0 with huge dwell -> NOT viewable (served != seen: the liar-kill) 5// video : 2000ms threshold (1500ms video -> NOT, 2000ms -> viewable) 6// tally : mixed corpus -> served=100, viewable=60, stripped_inflation=40 (we refuse the 40 7// served-but-unseen impressions an incumbent serve-count would inflate) 8// where : per-slot viewable (above-fold=60, below-fold=0) -- transparent placement 9// no-false : an all-unseen corpus -> viewable=0 (the rule is not stuck-at-served) 10// Evidence -> knowledge/status/ad_view.log (VIEWGATE ... verdict=GREEN). Aggregate-only, no visitor 11// id by construction. license_tier: ORIGINAL 12import "nx_ad_view.nx" 13import "nx_syscalls.nx" 14 15const VG_LOG: *u8 = "knowledge/status/ad_view.log" 16 17func vg_w(fd: i64, s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(fd, s, n); return 0 } 18func vg_wn(fd: i64, v: i64) -> i64 { let bb: *u8 = sys_mmap(28); var m: i64=v; if m<0 {m=0-m; sys_write(fd,"-" as *u8,1)}; let t: *u8 = sys_mmap(28); var k: i64=0; if m==0 {t[0]=48;k=1}; while m>0 {t[k]=(48+(m%10)) as u8; m=m/10; k=k+1}; var i: i64=0; while i<k {bb[i]=t[k-1-i]; i=i+1}; sys_write(fd, bb, k); return 0 } 19 20func vg_emit(fd: i64, served: i64, viewable: i64, stripped: i64, sa: i64, unseen_vw: i64, ok: i64) -> i64 { 21 vg_w(fd, "VIEWGATE authored=organ rule=MRC-50pct-1s served=" as *u8); vg_wn(fd, served) 22 vg_w(fd, " viewable=" as *u8); vg_wn(fd, viewable) 23 vg_w(fd, " stripped_inflation=" as *u8); vg_wn(fd, stripped) 24 vg_w(fd, " above_fold_viewable=" as *u8); vg_wn(fd, sa) 25 vg_w(fd, " all_unseen_viewable=" as *u8); vg_wn(fd, unseen_vw) 26 if ok == 1 { vg_w(fd, " verdict=GREEN\n" as *u8) } 27 if ok != 1 { vg_w(fd, " verdict=RED\n" as *u8) } 28 return 0 29} 30 31func main() -> i64 { 32 let ovw: *i64 = sys_mmap(8) as *i64 33 let osv: *i64 = sys_mmap(8) as *i64 34 35 // rule boundaries (display 1000ms) 36 let c1: i64 = av_viewable(1, 1000, AV_MIN_DISPLAY) // exactly 1s -> viewable 37 let c2: i64 = av_viewable(1, 999, AV_MIN_DISPLAY) // 999ms -> NOT 38 let c3: i64 = av_viewable(0, 5000, AV_MIN_DISPLAY) // served-but-unseen -> NOT 39 // video threshold (2000ms) 40 let c6: i64 = av_viewable(1, 1500, AV_MIN_VIDEO) // 1.5s video -> NOT 41 let c7: i64 = av_viewable(1, 2000, AV_MIN_VIDEO) // 2s video -> viewable 42 43 // mixed corpus [viewed, slot, dwell_ms, n] 44 let ev: *i64 = sys_mmap(8 * 4 * 3) as *i64 45 ev[0]=1; ev[1]=0; ev[2]=1500; ev[3]=60 // viewed, above-fold, 1.5s -> 60 viewable 46 ev[4]=1; ev[5]=1; ev[6]=500; ev[7]=30 // viewed, below-fold, 0.5s -> under-dwell (30 served) 47 ev[8]=0; ev[9]=2; ev[10]=3000; ev[11]=10 // NOT viewed, in-article -> unseen (10 served) 48 av_tally(ev, 3, AV_MIN_DISPLAY, ovw, osv) 49 let served: i64 = osv[0] // expect 100 50 let viewable: i64 = ovw[0] // expect 60 51 let stripped: i64 = served - viewable // expect 40 inflated impressions refused 52 53 let sa: i64 = av_tally_slot(ev, 3, AV_MIN_DISPLAY, 0) // above-fold viewable -> 60 54 let sb: i64 = av_tally_slot(ev, 3, AV_MIN_DISPLAY, 1) // below-fold viewable -> 0 (under-dwell) 55 56 // anti-false-green: an all-unseen corpus -> ZERO viewable (not stuck-at-served) 57 let un: *i64 = sys_mmap(8 * 4 * 2) as *i64 58 un[0]=0; un[1]=0; un[2]=5000; un[3]=50 59 un[4]=0; un[5]=1; un[6]=5000; un[7]=50 60 av_tally(un, 2, AV_MIN_DISPLAY, ovw, osv) 61 let unseen_vw: i64 = ovw[0] // expect 0 62 let unseen_sv: i64 = osv[0] // expect 100 63 64 var ok: i64 = 1 65 if c1 != 1 { ok = 0 } 66 if c2 != 0 { ok = 0 } 67 if c3 != 0 { ok = 0 } 68 if c6 != 0 { ok = 0 } 69 if c7 != 1 { ok = 0 } 70 if served != 100 { ok = 0 } 71 if viewable != 60 { ok = 0 } 72 if stripped != 40 { ok = 0 } 73 if sa != 60 { ok = 0 } 74 if sb != 0 { ok = 0 } 75 if unseen_vw != 0 { ok = 0 } 76 if unseen_sv != 100 { ok = 0 } 77 78 vg_emit(1, served, viewable, stripped, sa, unseen_vw, ok) 79 let lf: i64 = sys_openat_append(VG_LOG, 420) 80 if lf >= 0 { vg_emit(lf, served, viewable, stripped, sa, unseen_vw, ok); sys_close(lf) } 81 82 if ok == 1 { return 0 } 83 return 1 84}