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}