nx_research_crossval_gate.nx source
↩ module page · 222 lines · 13188 B
1// nx_research_crossval_gate.nx -- gate for nx_research_crossval (multi-source cross-validation, the refutation
2// sub-axis peers lead). PURE teeth ($0, fixtures): T1 corroborated needs >=2 CONFIRMS on DISTINCT hosts;
3// T2 LIAR-KILLER: the same host confirming twice is an ECHO -> NOT corroborated (stays CONFIRMED-SINGLE);
4// T3 confirm+discredit -> CONFLICTED (never averaged); T4 only-discredit -> REFUTED; T5 all-absent ->
5// UNVERIFIABLE + invents NO confirms/discredits; T6 zero sources -> fail-closed UNVERIFIABLE.
6// TIER-2 (argv[1]=live): the first sovereign LIVE multi-source cross-validation -- GPT-3 175B corroborated
7// across arxiv.org + api.semanticscholar.org + api.datacite.org (3 independent hosts over sovereign TLS-1.3;
8// graceful degradation: a rate-limited/degraded host contributes UNVERIFIABLE, never a fake corroboration).
9// license_tier: ORIGINAL expect_exit: 0
10import "nx_syscalls.nx"
11import "nx_research_crossval.nx"
12import "nx_research_unified.nx"
13import "nx_x509_trust_store.nx"
14import "nx_trust_store_load_from_certdata.nx"
15import "nx_https_fetch_follow.nx"
16
17func gv_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
18func gv_putn(v: i64) -> i64 {
19 if v == 0 { sys_write(1, "0" as *u8, 1); return 0 }
20 var m: i64 = v; if m < 0 { sys_write(1, "-" as *u8, 1); m = 0 - m }
21 let d: *u8 = sys_mmap(24); var k: i64 = 0
22 while m > 0 { d[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }
23 let o: *u8 = sys_mmap(24); var wi: i64 = 0
24 while wi < k { o[wi] = d[k-1-wi]; wi = wi + 1 }
25 sys_write(1, o, k)
26 return 0
27}
28func gv_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
29func gv_streq(a: *u8, b: *u8) -> i64 {
30 var i: i64 = 0
31 while a[i] != (0 as u8) { if a[i] != b[i] { return 0 } i = i + 1 }
32 if b[i] != (0 as u8) { return 0 }
33 return 1
34}
35func gv_name(v: i64) -> *u8 {
36 if v == 0 { return "CORROBORATED" as *u8 }
37 if v == 1 { return "CONFIRMED-SINGLE" as *u8 }
38 if v == 3 { return "CONFLICTED" as *u8 }
39 if v == 5 { return "REFUTED" as *u8 }
40 return "UNVERIFIABLE" as *u8
41}
42func gv_check(st: *i64, ok: i64, label: *u8) -> i64 {
43 if ok == 1 { st[0] = st[0] + 1; gv_puts(" PASS " as *u8) } else { st[1] = st[1] + 1; gv_puts(" FAIL " as *u8) }
44 gv_puts(label); gv_puts("\n" as *u8)
45 return 0
46}
47
48func main(argc: i64, argv: *i64) -> i64 {
49 let st: *i64 = sys_mmap(32) as *i64; st[0] = 0; st[1] = 0
50 gv_puts("=== nx_research_crossval_gate: multi-source cross-validation (independence-disciplined) ===\n\n" as *u8)
51
52 // fixtures: three "sources" about the SQuAD human ceiling (claim 868, tol 8)
53 let ev1: *u8 = "the study reports human performance (86.8 F1) on the benchmark" as *u8
54 let p1: *u8 = "performance (" as *u8
55 let ev2: *u8 = "an independent replication measured a ceiling of 86.8 F1 as well" as *u8
56 let p2: *u8 = "ceiling of " as *u8
57 let ev3: *u8 = "the baseline system scored 51.0 F1 in the same setting" as *u8
58 let p3: *u8 = "scored " as *u8
59 let pabs: *u8 = "zqx_never_present " as *u8
60
61 let bufs: *i64 = sys_mmap(64) as *i64
62 let lens: *i64 = sys_mmap(64) as *i64
63 let pats: *i64 = sys_mmap(64) as *i64
64 let hosts: *i64 = sys_mmap(64) as *i64
65 let out: *i64 = sys_mmap(48) as *i64
66
67 // T1 CORROBORATED: two confirms, DISTINCT hosts
68 bufs[0] = ev1 as i64; lens[0] = gv_slen(ev1); pats[0] = p1 as i64; hosts[0] = 100
69 bufs[1] = ev2 as i64; lens[1] = gv_slen(ev2); pats[1] = p2 as i64; hosts[1] = 200
70 var v: i64 = cvx_verify(bufs, lens, pats, hosts, 2, 868, 8, out)
71 var ok: i64 = 0
72 if v == 0 { if out[4] == 2 { ok = 1 } }
73 gv_check(st, ok, "T1 two distinct-host confirms -> CORROBORATED (dh=2)" as *u8)
74
75 // T2 LIAR-KILLER: the SAME host confirming twice = echo, NOT corroboration
76 bufs[1] = ev1 as i64; lens[1] = gv_slen(ev1); pats[1] = p1 as i64; hosts[1] = 100
77 v = cvx_verify(bufs, lens, pats, hosts, 2, 868, 8, out)
78 ok = 0
79 if v == 1 { if out[1] == 2 { if out[4] == 1 { ok = 1 } } }
80 gv_check(st, ok, "T2 same-host echo (2 confirms, 1 host) -> CONFIRMED-SINGLE not corroborated" as *u8)
81
82 // T3 CONFLICTED: a confirm + a discredit (never averaged)
83 bufs[1] = ev3 as i64; lens[1] = gv_slen(ev3); pats[1] = p3 as i64; hosts[1] = 200
84 v = cvx_verify(bufs, lens, pats, hosts, 2, 868, 8, out)
85 ok = 0
86 if v == 3 { if out[1] == 1 { if out[2] == 1 { ok = 1 } } }
87 gv_check(st, ok, "T3 confirm + discredit -> CONFLICTED (surfaced, not averaged)" as *u8)
88
89 // T4 REFUTED: only discredits
90 bufs[0] = ev3 as i64; lens[0] = gv_slen(ev3); pats[0] = p3 as i64; hosts[0] = 300
91 v = cvx_verify(bufs, lens, pats, hosts, 1, 868, 8, out)
92 ok = 0
93 if v == 5 { ok = 1 }
94 gv_check(st, ok, "T4 only discredits -> REFUTED" as *u8)
95
96 // T5 NEG-CONTROL: pattern absent everywhere -> UNVERIFIABLE, invents NOTHING
97 bufs[0] = ev1 as i64; lens[0] = gv_slen(ev1); pats[0] = pabs as i64; hosts[0] = 100
98 bufs[1] = ev2 as i64; lens[1] = gv_slen(ev2); pats[1] = pabs as i64; hosts[1] = 200
99 v = cvx_verify(bufs, lens, pats, hosts, 2, 868, 8, out)
100 ok = 0
101 if v == 4 { if out[1] == 0 { if out[2] == 0 { if out[3] == 2 { ok = 1 } } } }
102 gv_check(st, ok, "T5 all-absent -> UNVERIFIABLE, zero invented verdicts" as *u8)
103
104 // T6 NEG-CONTROL: zero sources -> fail-closed UNVERIFIABLE
105 v = cvx_verify(bufs, lens, pats, hosts, 0, 868, 8, out)
106 ok = 0
107 if v == 4 { ok = 1 }
108 gv_check(st, ok, "T6 zero sources -> fail-closed UNVERIFIABLE" as *u8)
109
110 // ---- ANSWER-LEVEL (the auto-invoke form): cvx_answer_verify + the nxr_assess wiring -------------------
111 let s1: *u8 = "the alpha study measured the ceiling at 86.8 F1 overall" as *u8
112 let s2: *u8 = "an independent replication also reports 86.8 F1" as *u8
113 let s3: *u8 = "this unrelated source discusses methodology only" as *u8
114 let ansA: *u8 = "The ceiling is 86.8 F1 [1]." as *u8
115 let sv: *i64 = sys_mmap(64) as *i64
116 sv[0] = s1 as i64; sv[1] = s2 as i64; sv[2] = s3 as i64
117 let av: *i64 = sys_mmap(64) as *i64
118
119 // T8: claim confirmed by its cited source AND corroborated by a 2nd distinct origin
120 cvx_answer_verify(ansA, gv_slen(ansA), sv, 3, 0 as *i64, 8, av)
121 ok = 0
122 if av[0] == 1 { if av[1] == 1 { if av[2] == 0 { if av[4] == 1 { ok = 1 } } } }
123 gv_check(st, ok, "T8 answer claim confirmed + corroborated by 2nd distinct origin" as *u8)
124
125 // T9: only the cited source carries the value -> confirmed but NOT corroborated
126 sv[1] = s3 as i64
127 cvx_answer_verify(ansA, gv_slen(ansA), sv, 3, 0 as *i64, 8, av)
128 ok = 0
129 if av[1] == 1 { if av[4] == 0 { ok = 1 } }
130 gv_check(st, ok, "T9 single-source value -> confirmed, corroborated=0 (no echo-credit)" as *u8)
131
132 // T10: REGRESSION vs the sibling semantics -- out[0..3] must EQUAL rvs_verify_answer on the same fixture
133 sv[1] = s2 as i64
134 let rv: *i64 = sys_mmap(64) as *i64
135 rvs_verify_answer(ansA, gv_slen(ansA), sv, 3, 8, rv)
136 cvx_answer_verify(ansA, gv_slen(ansA), sv, 3, 0 as *i64, 8, av)
137 ok = 1
138 var q: i64 = 0
139 while q < 4 { if av[q] != rv[q] { ok = 0 } q = q + 1 }
140 gv_check(st, ok, "T10 rvs-compat: primary verdicts [0..3] identical to rvs_verify_answer" as *u8)
141
142 // T11: AUTO-INVOKE proof -- nxr_assess (the unified researcher) now reports corroboration at out[9]
143 let uo: *i64 = sys_mmap(96) as *i64
144 let uverd: i64 = nxr_assess(ansA, gv_slen(ansA), sv, 3, 0, 3, 1000000, uo)
145 ok = 0
146 if uverd == 0 { if uo[4] == 1 { if uo[9] == 1 { ok = 1 } } }
147 gv_check(st, ok, "T11 nxr_assess auto-invokes cross-val: PUBLISH + out[9]=corroborated" as *u8)
148
149 // T12: cvx_host_id -- same host same id (path-independent, case-insensitive), distinct hosts distinct ids
150 let ha: i64 = cvx_host_id("https://arxiv.org/abs/2005.14165" as *u8)
151 let hb: i64 = cvx_host_id("https://api.datacite.org/dois/10.48550/arXiv.2005.14165" as *u8)
152 let hc: i64 = cvx_host_id("https://arxiv.org/abs/1606.05250" as *u8)
153 let hd: i64 = cvx_host_id("https://ARXIV.org/case" as *u8)
154 let he: i64 = cvx_host_id("not_a_url" as *u8)
155 ok = 0
156 if ha > 0 { if ha == hc { if ha == hd { if ha != hb { if he == 0 { ok = 1 } } } } }
157 gv_check(st, ok, "T12 cvx_host_id: path/case-invariant per host, distinct across hosts, 0 on no-host" as *u8)
158
159 // T13: HOST-TRUE echo-kill through the FULL pipeline -- two sources, both carry the value, SAME real origin
160 // -> nxr_assess_hosts reports corroborated=0; distinct origins -> 1. (The index-as-host default would
161 // over-credit the same-origin pair -- this is exactly what real host ids fix.)
162 let hosts2: *i64 = sys_mmap(64) as *i64
163 let uo2: *i64 = sys_mmap(96) as *i64
164 sv[0] = s1 as i64; sv[1] = s2 as i64; sv[2] = s3 as i64
165 hosts2[0] = ha; hosts2[1] = ha; hosts2[2] = hb
166 nxr_assess_hosts(ansA, gv_slen(ansA), sv, 3, hosts2, 0, 3, 1000000, uo2)
167 var same_cb: i64 = uo2[9]
168 hosts2[1] = hb
169 nxr_assess_hosts(ansA, gv_slen(ansA), sv, 3, hosts2, 0, 3, 1000000, uo2)
170 ok = 0
171 if same_cb == 0 { if uo2[9] == 1 { ok = 1 } }
172 gv_check(st, ok, "T13 nxr_assess_hosts: same-origin pair corroborated=0, distinct origins=1 (host-TRUE)" as *u8)
173
174 // ---- TIER-2 LIVE (argv[1]=live): GPT-3 175B cross-validated on two DISTINCT live hosts ----
175 var live: i64 = 0
176 if argc >= 2 { if gv_streq(argv[1] as *u8, "live" as *u8) == 1 { live = 1 } }
177 if live == 1 {
178 gv_puts("\n== TIER-2 LIVE: cross-validate GPT-3 175B across arxiv.org + api.semanticscholar.org ==\n" as *u8)
179 let r: i64 = nx_trust_store_load_from_certdata("data/mozilla_certdata.txt\x00" as *u8, 512, 4194304)
180 if r <= 0 { gv_puts("FETCH-FAILED: certdata load\n" as *u8); return 2 }
181 let store: *TrustStore = r as *TrustStore
182 // THREE independent hosts (arxiv anchor + semanticscholar + datacite). Graceful degradation (#14):
183 // a host that fails to fetch or serves a degraded stub simply contributes UNVERIFIABLE -- the
184 // independence discipline then decides from whatever REAL evidence arrived (>=2 fetched required).
185 let b1: *u8 = sys_mmap(4194304)
186 let b2: *u8 = sys_mmap(4194304)
187 let b3: *u8 = sys_mmap(4194304)
188 let sc: *i64 = sys_mmap(16) as *i64
189 var n1: i64 = nx_https_fetch_follow_best("https://arxiv.org/abs/2005.14165" as *u8, store, b1, 4194304, 6, sc)
190 if n1 <= 0 { sys_sleep_ms(2000); n1 = nx_https_fetch_follow_best("https://arxiv.org/abs/2005.14165" as *u8, store, b1, 4194304, 6, sc) }
191 var n2: i64 = nx_https_fetch_follow_best("https://api.semanticscholar.org/graph/v1/paper/arXiv:2005.14165?fields=abstract" as *u8, store, b2, 4194304, 6, sc)
192 if n2 <= 0 { sys_sleep_ms(2000); n2 = nx_https_fetch_follow_best("https://api.semanticscholar.org/graph/v1/paper/arXiv:2005.14165?fields=abstract" as *u8, store, b2, 4194304, 6, sc) }
193 var n3: i64 = nx_https_fetch_follow_best("https://api.datacite.org/dois/10.48550/arXiv.2005.14165" as *u8, store, b3, 4194304, 6, sc)
194 if n3 <= 0 { sys_sleep_ms(2000); n3 = nx_https_fetch_follow_best("https://api.datacite.org/dois/10.48550/arXiv.2005.14165" as *u8, store, b3, 4194304, 6, sc) }
195 gv_puts(" fetched arxiv=" as *u8); gv_putn(n1)
196 gv_puts("B semanticscholar=" as *u8); gv_putn(n2)
197 gv_puts("B datacite=" as *u8); gv_putn(n3); gv_puts("B\n" as *u8)
198 let lp: *u8 = "language model with " as *u8
199 // REAL origin ids from the URLs (cvx_host_id) -- not hand-assigned indices
200 let lh1: i64 = cvx_host_id("https://arxiv.org/abs/2005.14165" as *u8)
201 let lh2: i64 = cvx_host_id("https://api.semanticscholar.org/graph/v1/paper/arXiv:2005.14165?fields=abstract" as *u8)
202 let lh3: i64 = cvx_host_id("https://api.datacite.org/dois/10.48550/arXiv.2005.14165" as *u8)
203 var ns: i64 = 0
204 if n1 > 0 { bufs[ns] = b1 as i64; lens[ns] = n1; pats[ns] = lp as i64; hosts[ns] = lh1; ns = ns + 1 }
205 if n2 > 0 { bufs[ns] = b2 as i64; lens[ns] = n2; pats[ns] = lp as i64; hosts[ns] = lh2; ns = ns + 1 }
206 if n3 > 0 { bufs[ns] = b3 as i64; lens[ns] = n3; pats[ns] = lp as i64; hosts[ns] = lh3; ns = ns + 1 }
207 if ns < 2 { gv_puts("FETCH-FAILED: fewer than 2 live sources reachable\n" as *u8); return 2 }
208 v = cvx_verify(bufs, lens, pats, hosts, ns, 1750, 10, out)
209 gv_puts(" claim=175.0B cross-verdict=" as *u8); gv_puts(gv_name(v))
210 gv_puts(" confirms=" as *u8); gv_putn(out[1]); gv_puts(" distinct-hosts=" as *u8); gv_putn(out[4]); gv_puts("\n" as *u8)
211 ok = 0
212 if v == 0 { if out[4] >= 2 { ok = 1 } }
213 gv_check(st, ok, "T7-LIVE corroborated by >=2 independent live hosts" as *u8)
214 } else {
215 gv_puts("\nT7-LIVE SKIP (pure run; pass argv[1]=live to cross-validate against the live hosts)\n" as *u8)
216 }
217
218 gv_puts("\nPASS=" as *u8); gv_putn(st[0]); gv_puts(" FAIL=" as *u8); gv_putn(st[1]); gv_puts("\n" as *u8)
219 if st[1] > 0 { gv_puts("GATE RED\n" as *u8); return 1 }
220 gv_puts("GATE GREEN -- cross-validation independence-disciplined (echo != corroboration; conflict surfaced)\n" as *u8)
221 return 0
222}