code wiki / _hdl_build / nx_ad_meter_gate.nx

nx_ad_meter_gate.nx source

↩ module page · 100 lines · 5182 B

1// nx_ad_meter_gate.nx -- GATE (runnable) for ADS-007 the measurement keystone. Proves, on baked 2// controls + the LIVE sovereign-store figures (operator go-live 2026-06-13), that the meter: 3// (1) verdict boundaries are exact: UNDER < target <= PERFORM < target*mult <= EXCEED 4// (2) COMPOSES the foundations from the store: a conversion result = consented, bot-filtered, 5// k-anon-floored count (ADS-018/019); an impression result = bot-filtered valid count 6// (3) k-anon suppression is honest: a campaign too small to clear the floor -> result 0 -> UNDER 7// (4) BILLS LIVE off the store: reach target=10000/exceed_mult=2 -> 5000=UNDER, 10000=PERFORM, 8// 20000=EXCEED -- real verdicts from real figures 9// (5) STILL REFUSES honestly: a goal with NO figures (adgoal:nonexistent) -> UNMEASURABLE 10// Cannot false-green: (4)/(5) read the real store; if a figure were missing or wrong they break. 11// 12// Evidence -> knowledge/status/ad_meter.log (METERGATE authored=organ ... verdict=GREEN). 13// license_tier: ORIGINAL 14import "nx_ad_meter.nx" 15import "nx_ad_store.nx" 16import "nx_ad_botfilter.nx" 17import "nx_syscalls.nx" 18 19const MG_LOG: *u8 = "knowledge/status/ad_meter.log" 20 21func mg_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 } 22func mg_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 } 23 24func mg_set(ev: *i64, b: i64, consent: i64, ctype: i64, ua: i64, src: i64, js: i64, n: i64) -> i64 { 25 ev[b * 6] = consent; ev[b * 6 + 1] = ctype; ev[b * 6 + 2] = ua 26 ev[b * 6 + 3] = src; ev[b * 6 + 4] = js; ev[b * 6 + 5] = n 27 return 0 28} 29 30func mg_emit(fd: i64, tgt: i64, mult: i64, vU: i64, vP: i64, vE: i64, convr: i64, vconv: i64, miss: i64, vmiss: i64, ok: i64) -> i64 { 31 mg_w(fd, "METERGATE authored=organ source=store live_reach_target=" as *u8); mg_wn(fd, tgt) 32 mg_w(fd, " live_exceed_mult=" as *u8); mg_wn(fd, mult) 33 mg_w(fd, " v_5000=" as *u8); mg_wn(fd, vU) 34 mg_w(fd, " v_10000=" as *u8); mg_wn(fd, vP) 35 mg_w(fd, " v_20000=" as *u8); mg_wn(fd, vE) 36 mg_w(fd, " conv_result=" as *u8); mg_wn(fd, convr) 37 mg_w(fd, " conv_verdict=" as *u8); mg_wn(fd, vconv) 38 mg_w(fd, " missing_goal_target=" as *u8); mg_wn(fd, miss) 39 mg_w(fd, " missing_goal_verdict=" as *u8); mg_wn(fd, vmiss) 40 mg_w(fd, " (-1=UNMEASURABLE 0=UNDER 1=PERFORM 2=EXCEED)" as *u8) 41 if ok == 1 { mg_w(fd, " verdict=GREEN\n" as *u8) } else { mg_w(fd, " verdict=RED\n" as *u8) } 42 return 0 43} 44 45func main() -> i64 { 46 let rules: *i64 = sys_mmap(BF_MAXRULES * 2 * 8) as *i64 47 let nrules: i64 = ads_botrules(rules, BF_MAXRULES) 48 49 // (1) verdict boundaries with a numeric target=100, exceed_mult=2. 50 let v_under: i64 = am_verdict(50, 100, 2) 51 let v_perform: i64 = am_verdict(100, 100, 2) 52 let v_exceed: i64 = am_verdict(200, 100, 2) 53 54 // (2)(3) conversion composition from store config: consented human (120) counts; unconsented 55 // (50) and bot (80) dropped -> 120. A below-floor campaign suppresses to 0 -> UNDER. 56 let k: i64 = ads_kanon_k() 57 let cev: *i64 = sys_mmap(256) as *i64 58 mg_set(cev, 0, 1, 2, 0, 0, 1, 120) 59 mg_set(cev, 1, 0, 0, 0, 0, 1, 50) 60 mg_set(cev, 2, 1, 1, 1, 1, 0, 80) 61 let conv_result: i64 = am_result_conversions(cev, 3, rules, nrules, k) 62 let v_conv: i64 = am_verdict(conv_result, 100, 2) 63 let sev: *i64 = sys_mmap(64) as *i64 64 mg_set(sev, 0, 1, 0, 0, 0, 1, k - 1) 65 let small_result: i64 = am_result_conversions(sev, 1, rules, nrules, k) 66 67 // (4) LIVE billing off the store: reach target + exceed_mult are now real figures. 68 let tgt: i64 = am_target_of("adgoal:reach" as *u8) // 10000 69 let mult: i64 = am_exceed_mult_of("adpricing:reach" as *u8) // 2 70 let vU: i64 = am_verdict(5000, tgt, mult) // UNDER 71 let vP: i64 = am_verdict(10000, tgt, mult) // PERFORM 72 let vE: i64 = am_verdict(20000, tgt, mult) // EXCEED 73 74 // (5) honest refusal still holds: a goal with NO figures -> UNMEASURABLE. 75 let miss: i64 = am_target_of("adgoal:nonexistent" as *u8) // -1 76 let vmiss: i64 = am_verdict(99999, miss, mult) // -1 UNMEASURABLE 77 78 var ok: i64 = 1 79 if nrules < 1 { ok = 0 } 80 if v_under != 0 { ok = 0 } 81 if v_perform != 1 { ok = 0 } 82 if v_exceed != 2 { ok = 0 } 83 if conv_result != 120 { ok = 0 } 84 if v_conv != 1 { ok = 0 } 85 if small_result != 0 { ok = 0 } 86 if tgt != 10000 { ok = 0 } 87 if mult != 2 { ok = 0 } 88 if vU != 0 { ok = 0 } 89 if vP != 1 { ok = 0 } 90 if vE != 2 { ok = 0 } 91 if miss != 0 - 1 { ok = 0 } 92 if vmiss != 0 - 1 { ok = 0 } 93 94 mg_emit(1, tgt, mult, vU, vP, vE, conv_result, v_conv, miss, vmiss, ok) 95 let lf: i64 = sys_openat_append(MG_LOG, 420) 96 if lf >= 0 { mg_emit(lf, tgt, mult, vU, vP, vE, conv_result, v_conv, miss, vmiss, ok); sys_close(lf) } 97 98 if ok == 1 { return 0 } 99 return 1 100}