nx_register_gate.nx source
↩ module page · 110 lines · 4699 B
1// nx_register_gate.nx -- REFEREE for WRITING rung W-ING-3 (nx_register).
2//
3// [T1] SFW: below-threshold score routes to the SFW lane (0).
4// [T2] EXPLICIT + governance OK: at/above threshold + age+consent+locale -> the
5// local-LLM explicit lane (1).
6// [T3] NEG-CONTROL governance non-bypass: same explicit score, but age OR consent
7// OR locale failing -> REFUSE (2). Explicit content cannot skip the gate.
8// [T4] NEG-CONTROL whole-word: "graphical" must NOT score as "graphic".
9// [T5] NEG-CONTROL no over-routing: benign text stays SFW even with governance OK.
10//
11// Lexicon (DATA, benign proxy): calm=1 heated=3 graphic=5 ; threshold=5.
12//
13// Evidence -> stdout + knowledge/status/register_gate.log. Exit 0/1.
14// Sovereign x86_64. license_tier: ORIGINAL
15import "nx_syscalls_x86_64.nx"
16import "nx_register.nx"
17
18func gp(logfd: i64, s: *u8) -> i64 {
19 var n: i64 = 0
20 while s[n] != (0 as u8) { n = n + 1 }
21 sys_write(1, s, n)
22 if logfd > 0 { sys_write(logfd, s, n) }
23 return 0
24}
25func gn(logfd: i64, v: i64) -> i64 {
26 var m: i64 = v
27 if m < 0 {
28 sys_write(1, "-\x00" as *u8, 1)
29 if logfd > 0 { sys_write(logfd, "-\x00" as *u8, 1) }
30 m = 0 - m
31 }
32 let bb: *u8 = sys_mmap(32)
33 let t: *u8 = sys_mmap(32)
34 var k: i64 = 0
35 if m == 0 { t[0] = 48 as u8; k = 1 }
36 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }
37 var i: i64 = 0
38 while i < k { bb[i] = t[k - 1 - i]; i = i + 1 }
39 sys_write(1, bb, k)
40 if logfd > 0 { sys_write(logfd, bb, k) }
41 return 0
42}
43func slen(s: *u8) -> i64 {
44 var n: i64 = 0
45 while s[n] != (0 as u8) { n = n + 1 }
46 return n
47}
48func pr_kv(logfd: i64, label: *u8, got: i64, exp: i64) -> i64 {
49 gp(logfd, label)
50 gp(logfd, " got=\x00" as *u8); gn(logfd, got)
51 gp(logfd, " exp=\x00" as *u8); gn(logfd, exp)
52 if got == exp { gp(logfd, " OK\n\x00" as *u8); return 1 }
53 gp(logfd, " FAIL\n\x00" as *u8)
54 return 0
55}
56
57func main() -> i64 {
58 let logfd: i64 = sys_openat_append("knowledge/status/register_gate.log\x00" as *u8, 0x1a4)
59 gp(logfd, "REGISTER-GATE W-ING-3 (register classify + route + governance)\n\x00" as *u8)
60 gp(logfd, " routes: 0=SFW-lane 1=EXPLICIT-lane 2=REFUSE ; threshold=5\n\x00" as *u8)
61
62 let terms: *u8 = "calm\x00heated\x00graphic\x00" as *u8
63 let w: *i64 = sys_mmap(64) as *i64
64 w[0] = 1 // calm
65 w[1] = 3 // heated
66 w[2] = 5 // graphic
67 let thr: i64 = 5
68 var ok: i64 = 1
69
70 // ---- T1: SFW ----
71 gp(logfd, " [T1] SFW text \"It was a calm evening.\"\n\x00" as *u8)
72 let sfw: *u8 = "It was a calm evening.\x00" as *u8
73 let s1: i64 = rg_score(sfw, 0, slen(sfw), terms, w, 3)
74 if pr_kv(logfd, " score\x00" as *u8, s1, 1) == 0 { ok = 0 }
75 if pr_kv(logfd, " route(gov ok)\x00" as *u8, rg_decision(s1, thr, 1, 1, 1), 0) == 0 { ok = 0 }
76
77 // ---- T2: EXPLICIT register, governance OK -> local lane ----
78 gp(logfd, " [T2] explicit-register text \"The graphic and heated moment.\"\n\x00" as *u8)
79 let ex: *u8 = "The graphic and heated moment.\x00" as *u8
80 let s2: i64 = rg_score(ex, 0, slen(ex), terms, w, 3)
81 if pr_kv(logfd, " score\x00" as *u8, s2, 8) == 0 { ok = 0 } // 5 + 3
82 if pr_kv(logfd, " route(age1,con1,loc1)\x00" as *u8, rg_decision(s2, thr, 1, 1, 1), 1) == 0 { ok = 0 }
83
84 // ---- T3: NEG-CONTROL governance non-bypass ----
85 gp(logfd, " [T3] NEG-CONTROL governance (explicit score, gate fails -> REFUSE)\n\x00" as *u8)
86 if pr_kv(logfd, " age fail\x00" as *u8, rg_decision(s2, thr, 0, 1, 1), 2) == 0 { ok = 0 }
87 if pr_kv(logfd, " consent fail\x00" as *u8, rg_decision(s2, thr, 1, 0, 1), 2) == 0 { ok = 0 }
88 if pr_kv(logfd, " locale fail\x00" as *u8, rg_decision(s2, thr, 1, 1, 0), 2) == 0 { ok = 0 }
89
90 // ---- T4: NEG-CONTROL whole-word ----
91 gp(logfd, " [T4] NEG-CONTROL whole-word (graphical != graphic)\n\x00" as *u8)
92 let wn: *u8 = "The graphical interface looked calm.\x00" as *u8
93 let s4: i64 = rg_score(wn, 0, slen(wn), terms, w, 3)
94 if pr_kv(logfd, " score (calm only)\x00" as *u8, s4, 1) == 0 { ok = 0 } // graphic NOT counted
95
96 // ---- T5: NEG-CONTROL no over-routing ----
97 gp(logfd, " [T5] NEG-CONTROL no over-routing (benign stays SFW under gov-ok)\n\x00" as *u8)
98 if pr_kv(logfd, " route\x00" as *u8, rg_decision(s4, thr, 1, 1, 1), 0) == 0 { ok = 0 }
99
100 if ok == 1 {
101 gp(logfd, "REGISTER-GATE result=ALL-PASS verdict=GREEN\n\x00" as *u8)
102 if logfd > 0 { sys_close(logfd) }
103 sys_exit(0)
104 return 0
105 }
106 gp(logfd, "REGISTER-GATE result=FAIL verdict=RED\n\x00" as *u8)
107 if logfd > 0 { sys_close(logfd) }
108 sys_exit(1)
109 return 1
110}