code wiki / (root) / nx_research_refute_gate.nx

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}