nx_research_refute_gate.nx source
↩ module page · 116 lines · 7053 B
1// nx_research_refute_gate.nx -- liar-kill gate for S2 ADVERSARIAL REFUTATION.
2// TIER-1 (deterministic, $0, NO network): on the REAL fetched SQuAD abstract text (verbatim from nx_https_get
3// arxiv.org/abs/1606.05250, banked by nx_evidence_verify_gate), the refuter CONFIRMS a true claim, DISCREDITS a
4// false one, and returns UNVERIFIABLE for absent evidence (invents nothing) -- the discrimination a trustworthy
5// refuter MUST show (critic-kernel). The refutation report admits ONLY confirmed claims.
6// TIER-2 (marker knowledge/index/rr_fetch.on): live-fetch a real URL over sovereign TLS and verify -- separate arc.
7// license_tier: ORIGINAL
8import "nx_research_refute.nx"
9import "nx_claim_verify_core.nx"
10import "nx_syscalls.nx"
11import "nx_x509_trust_store.nx"
12import "nx_trust_store_load_from_certdata.nx"
13import "nx_https_fetch_follow.nx"
14
15func st_puts(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
16func st_putn(v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m;sys_write(1,"-" as *u8,1)} let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=48 as u8;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(1,bb,k); return 0 }
17func st_len(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n }
18
19func main() -> i64 {
20 var pass: i64 = 0
21 var total: i64 = 0
22 let out: *i64 = sys_mmap(64) as *i64
23 let out2: *i64 = sys_mmap(64) as *i64
24
25 // THE REAL FETCHED EVIDENCE (verbatim SQuAD abstract, arxiv:1606.05250) -- primary source, not invented.
26 let ev: *u8 = "We build a strong logistic regression model, which achieves an F1 score of 51.0%, a significant improvement over a simple baseline (20%). However, human performance (86.8%) is much higher" as *u8
27 let evn: i64 = st_len(ev)
28
29 // T1: CONFIRM a true claim -- "human F1 ~87.0" vs evidence 86.8 (tol 3.0) -> CONFIRMED(0)
30 total = total + 1
31 let v1: i64 = cvc_verify_text(ev, evn, "human performance (" as *u8, 870, 30)
32 st_puts("T1 confirm true (870 vs 86.8): code=" as *u8); st_putn(v1); st_puts("\n" as *u8)
33 if v1 == 0 { pass = pass + 1 } else { st_puts("T1 FAIL not-confirmed\n" as *u8) }
34
35 // T2 LIAR-KILL: a FALSE claim "human F1 ~50.0" MUST be DISCREDITED(3) -- the refuter is not fooled
36 total = total + 1
37 let v2: i64 = cvc_verify_text(ev, evn, "human performance (" as *u8, 500, 30)
38 st_puts("T2 discredit false (500 vs 86.8): code=" as *u8); st_putn(v2); st_puts("\n" as *u8)
39 if v2 == 3 { pass = pass + 1 } else { st_puts("T2 FAIL false-claim-not-discredited\n" as *u8) }
40
41 // T3 NEG-CONTROL: absent pattern -> UNVERIFIABLE(4), invents NO number
42 total = total + 1
43 let v3: i64 = cvc_verify_text(ev, evn, "BLEU score of " as *u8, 400, 30)
44 st_puts("T3 unverifiable (absent BLEU): code=" as *u8); st_putn(v3); st_puts("\n" as *u8)
45 if v3 == 4 { pass = pass + 1 } else { st_puts("T3 FAIL absent-not-unverifiable\n" as *u8) }
46
47 // T4: DISCRIMINATION -- the three verdicts are distinct (a ruler is law only if it separates cases)
48 total = total + 1
49 var t4: i64 = 1
50 if v1 == v2 { t4 = 0 }
51 if v1 == v3 { t4 = 0 }
52 if v2 == v3 { t4 = 0 }
53 if t4 == 1 { pass = pass + 1 } else { st_puts("T4 FAIL verdicts-not-distinct\n" as *u8) }
54
55 // T5: REFUTATION REPORT over 3 claim-specs -> confirmed=1, discredited=1, unverifiable=1, admitted=1
56 total = total + 1
57 let pats: *i64 = sys_mmap(8*8) as *i64
58 let claims: *i64 = sys_mmap(8*8) as *i64
59 let tols: *i64 = sys_mmap(8*8) as *i64
60 pats[0] = ("human performance (" as *u8) as i64; claims[0] = 870; tols[0] = 30
61 pats[1] = ("human performance (" as *u8) as i64; claims[1] = 500; tols[1] = 30
62 pats[2] = ("BLEU score of " as *u8) as i64; claims[2] = 400; tols[2] = 30
63 rr_refute(ev, evn, pats, claims, tols, 3, out)
64 st_puts("T5 report: confirmed=" as *u8); st_putn(out[0]); st_puts(" discredited=" as *u8); st_putn(out[1]); st_puts(" unverifiable=" as *u8); st_putn(out[2]); st_puts(" admitted=" as *u8); st_putn(out[3]); st_puts("\n" as *u8)
65 var t5: i64 = 1
66 if out[0] != 1 { t5 = 0 }
67 if out[1] != 1 { t5 = 0 }
68 if out[2] != 1 { t5 = 0 }
69 if out[3] != 1 { t5 = 0 }
70 if t5 == 1 { pass = pass + 1 } else { st_puts("T5 FAIL report-tally\n" as *u8) }
71
72 // T6: determinism -- same specs+evidence -> identical report
73 total = total + 1
74 rr_refute(ev, evn, pats, claims, tols, 3, out2)
75 var t6: i64 = 1
76 if out2[0] != out[0] { t6 = 0 }
77 if out2[1] != out[1] { t6 = 0 }
78 if out2[2] != out[2] { t6 = 0 }
79 if out2[3] != out[3] { t6 = 0 }
80 if t6 == 1 { pass = pass + 1 } else { st_puts("T6 FAIL not-deterministic\n" as *u8) }
81
82 // T7: a DIFFERENT true value extracts+confirms -- "LR baseline F1 51.0" vs claim 510 -> CONFIRMED(0)
83 total = total + 1
84 let v7: i64 = cvc_verify_text(ev, evn, "F1 score of " as *u8, 510, 30)
85 st_puts("T7 confirm 2nd value (510 vs 51.0): code=" as *u8); st_putn(v7); st_puts("\n" as *u8)
86 if v7 == 0 { pass = pass + 1 } else { st_puts("T7 FAIL 2nd-value-not-confirmed\n" as *u8) }
87
88 // T8 (marker-gated): LIVE external-fetch refutation over sovereign TLS -- the whole S2 pipeline end-to-end
89 // (fetch a real primary source -> extract -> verdict a claim). Skipped (GREEN) when the marker is absent.
90 let mk: i64 = sys_openat_rd("knowledge/index/rr_fetch.on" as *u8)
91 if mk >= 0 {
92 sys_close(mk)
93 total = total + 1
94 let r: i64 = nx_trust_store_load_from_certdata("data/mozilla_certdata.txt\x00" as *u8, 512, 4194304)
95 if r > 0 {
96 let store: *TrustStore = r as *TrustStore
97 let fbuf: *u8 = sys_mmap(4194304)
98 let status: *i64 = sys_mmap(8) as *i64
99 let url: *u8 = "https://arxiv.org/abs/1606.05250" as *u8
100 var fn: i64 = nx_https_fetch_follow_best(url, store, fbuf, 4194304, 6, status)
101 var http: i64 = 0
102 if fn > 0 { http = status[0] }
103 st_puts("T8 LIVE fetch arxiv:1606.05250 bytes=" as *u8); st_putn(fn); st_puts(" http=" as *u8); st_putn(http); st_puts("\n" as *u8)
104 if fn > 0 { if http < 400 {
105 let vlive: i64 = cvc_verify_text(fbuf, fn, "human performance (" as *u8, 870, 30)
106 st_puts("T8 live verdict (claim 87.0 vs fetched evidence): code=" as *u8); st_putn(vlive); st_puts(" (0=CONFIRMED)\n" as *u8)
107 if vlive == 0 { pass = pass + 1 } else { st_puts("T8 FAIL live-claim-not-confirmed\n" as *u8) }
108 } else { st_puts("T8 FAIL http>=400\n" as *u8) } } else { st_puts("T8 FAIL fetch-failed\n" as *u8) }
109 } else { st_puts("T8 FAIL certdata-load\n" as *u8) }
110 } else { st_puts("T8 SKIP (no rr_fetch.on; Tier-1 refutation proven; live fetch = Tier-2 arc)\n" as *u8) }
111
112 st_puts("RESEARCH-REFUTE " as *u8); st_putn(pass); st_puts("/" as *u8); st_putn(total); st_puts("\n" as *u8)
113 if pass == total { st_puts("RESEARCH-REFUTE ALL-PASS\n" as *u8); sys_exit(0) }
114 sys_exit(1)
115 return 1
116}