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}