code wiki / _hdl_build / nx_ad_intake_gate.nx

nx_ad_intake_gate.nx source

↩ module page · 105 lines · 5394 B

1// nx_ad_intake_gate.nx -- GATE (runnable) for advertiser self-serve signup (nx_ad_intake). Proves: 2// create : a valid campaign returns IN_OK and reads back with business + goal + fee + status 3// liar-kill: every invalid intake is REFUSED with the right code AND not persisted -- 4// unknown goal (-1, absent in store), negative fee (-2), over-ceiling fee (-2), 5// empty business (-3) 6// privacy : the persisted record carries NO site-visitor identity (scan for a visitor token = 0), 7// and the scanner FIRES on a planted token (anti-false-green) -- the LAW made load-bearing 8// Evidence -> knowledge/status/ad_intake.log (INTAKEGATE ... verdict=GREEN). license_tier: ORIGINAL 9import "nx_ad_intake.nx" 10import "nx_ad_store.nx" 11import "nx_syscalls.nx" 12 13const IG_LOG: *u8 = "knowledge/status/ad_intake.log" 14 15func ig_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 } 16func ig_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 } 17 18// 1 if the campaign record at `key` contains `needle`. 19func ig_record_has(key: *u8, needle: *u8) -> i64 { 20 let pq: *i64 = sys_mmap(16) as *i64 21 let lq: *i64 = sys_mmap(16) as *i64 22 if ads_get(key, pq, lq) != 1 { return 0 } 23 return as_contains(pq[0] as *u8, lq[0], needle) 24} 25 26// 1 if the store currently has a live record for `key`. 27func ig_present(key: *u8) -> i64 { 28 let pq: *i64 = sys_mmap(16) as *i64 29 let lq: *i64 = sys_mmap(16) as *i64 30 if ads_get(key, pq, lq) == 1 { return 1 } 31 return 0 32} 33 34func main() -> i64 { 35 var ok: i64 = 1 36 37 // happy path: a valid campaign is created 38 let rc1: i64 = in_create_campaign("gate-coffee" as *u8, "Acme Coffee" as *u8, "reach" as *u8, 50, "Locally roasted, neighbor-owned." as *u8) 39 if rc1 != 0 { ok = 0 } 40 41 // read-back: the record holds the advertiser data 42 let key1: *u8 = sys_mmap(256) 43 in_campaign_key("gate-coffee" as *u8, key1) 44 let has_biz: i64 = ig_record_has(key1, "Acme Coffee" as *u8) 45 let has_goal: i64 = ig_record_has(key1, "reach" as *u8) 46 let has_status: i64 = ig_record_has(key1, "staging" as *u8) 47 if has_biz != 1 { ok = 0 } 48 if has_goal != 1 { ok = 0 } 49 if has_status != 1 { ok = 0 } 50 51 // privacy LAW: NO visitor identity in the persisted record (we never passed one), AND the scanner 52 // is not stuck-at-0 (it FIRES on a planted token). 53 let leaked: i64 = ig_record_has(key1, "vtok-" as *u8) // expect 0 54 let probe: *u8 = "advertiser data vtok-AAA111 would-be-leak" as *u8 55 let snoop_fires: i64 = as_contains(probe, as_len(probe), "vtok-" as *u8) // expect 1 56 if leaked != 0 { ok = 0 } 57 if snoop_fires != 1 { ok = 0 } 58 59 // LIAR-KILL: invalid intake refused with the right code + not persisted 60 let rc_badgoal: i64 = in_create_campaign("gate-badgoal" as *u8, "Acme" as *u8, "banana" as *u8, 50, "x" as *u8) 61 let keyb: *u8 = sys_mmap(256) 62 in_campaign_key("gate-badgoal" as *u8, keyb) 63 let badgoal_present: i64 = ig_present(keyb) // expect 0 (never persisted) 64 let rc_negfee: i64 = in_create_campaign("gate-negfee" as *u8, "Acme" as *u8, "reach" as *u8, 0 - 5, "x" as *u8) 65 let rc_bigfee: i64 = in_create_campaign("gate-bigfee" as *u8, "Acme" as *u8, "reach" as *u8, 999999999, "x" as *u8) 66 let empty_biz: *u8 = sys_mmap(8) 67 empty_biz[0] = 0 as u8 68 let rc_noname: i64 = in_create_campaign("gate-noname" as *u8, empty_biz, "reach" as *u8, 50, "x" as *u8) 69 70 if rc_badgoal != (0 - 1) { ok = 0 } 71 if badgoal_present != 0 { ok = 0 } 72 if rc_negfee != (0 - 2) { ok = 0 } 73 if rc_bigfee != (0 - 2) { ok = 0 } 74 if rc_noname != (0 - 3) { ok = 0 } 75 76 ig_w(1, "INTAKEGATE authored=organ create=" as *u8); ig_wn(1, rc1) 77 ig_w(1, " has_business=" as *u8); ig_wn(1, has_biz) 78 ig_w(1, " has_goal=" as *u8); ig_wn(1, has_goal) 79 ig_w(1, " badgoal_rc=" as *u8); ig_wn(1, rc_badgoal) 80 ig_w(1, " badgoal_persisted=" as *u8); ig_wn(1, badgoal_present) 81 ig_w(1, " negfee_rc=" as *u8); ig_wn(1, rc_negfee) 82 ig_w(1, " bigfee_rc=" as *u8); ig_wn(1, rc_bigfee) 83 ig_w(1, " noname_rc=" as *u8); ig_wn(1, rc_noname) 84 ig_w(1, " visitor_token_leaked=" as *u8); ig_wn(1, leaked) 85 ig_w(1, " snoop_detector_fired=" as *u8); ig_wn(1, snoop_fires) 86 if ok == 1 { ig_w(1, " verdict=GREEN\n" as *u8) } 87 if ok != 1 { ig_w(1, " verdict=RED\n" as *u8) } 88 89 let lf: i64 = sys_openat_append(IG_LOG, 420) 90 if lf >= 0 { 91 ig_w(lf, "INTAKEGATE authored=organ create=" as *u8); ig_wn(lf, rc1) 92 ig_w(lf, " badgoal_rc=" as *u8); ig_wn(lf, rc_badgoal) 93 ig_w(lf, " badgoal_persisted=" as *u8); ig_wn(lf, badgoal_present) 94 ig_w(lf, " negfee_rc=" as *u8); ig_wn(lf, rc_negfee) 95 ig_w(lf, " bigfee_rc=" as *u8); ig_wn(lf, rc_bigfee) 96 ig_w(lf, " noname_rc=" as *u8); ig_wn(lf, rc_noname) 97 ig_w(lf, " visitor_token_leaked=" as *u8); ig_wn(lf, leaked) 98 if ok == 1 { ig_w(lf, " verdict=GREEN\n" as *u8) } 99 if ok != 1 { ig_w(lf, " verdict=RED\n" as *u8) } 100 sys_close(lf) 101 } 102 103 if ok == 1 { return 0 } 104 return 1 105}