code wiki / (root) / nx_research_web.nx

nx_research_web.nx source

↩ module page · 117 lines · 4743 B

1// nx_research_web.nx -- the Nishi researcher, LIVE: fetch real web pages over 2// our own TLS 1.3, strip HTML to text, and run the sovereign digest (rank + 3// independent corroboration + citations). No Claude harness, no curl -- the 4// fetch is the only delegated step (sovereign TLS + CA-root DATA), the rigor is 5// ours. Composes nx_https_fetch_follow + nx_html_to_text + nx_research_digest. 6// license_tier: ORIGINAL expect_exit: 0 7 8import "nx_syscalls.nx" 9import "nx_x509_trust_store.nx" 10import "nx_trust_store_load_from_certdata.nx" 11import "nx_https_fetch_follow.nx" 12import "nx_html_to_text.nx" 13import "nx_bm25.nx" 14import "nx_research_corroborate.nx" 15import "nx_research_digest.nx" 16import "nx_source_tier.nx" 17 18func w(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 19func wn(v: i64) -> i64 { 20 let b: *u8 = sys_mmap(28) 21 var m: i64 = v 22 if m < 0 { m = 0 - m; sys_write(1, "-" as *u8, 1) } 23 let t: *u8 = sys_mmap(28) 24 var k: i64 = 0 25 if m == 0 { t[0] = 48 as u8; k = 1 } 26 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 27 var i: i64 = 0 28 while i < k { b[i] = t[k - 1 - i]; i = i + 1 } 29 sys_write(1, b, k); return 0 30} 31func slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } 32 33func main() -> i64 { 34 let r: i64 = nx_trust_store_load_from_certdata("/tmp/mozilla_certdata.txt" as *u8, 300, 4194304) 35 if r <= 0 { w("STORE-FAIL (need /tmp/mozilla_certdata.txt)\n" as *u8); return 1 } 36 let store: *TrustStore = r as *TrustStore 37 38 let nsrc: i64 = 3 39 let urls: **u8 = sys_mmap(nsrc * 8) as **u8 40 urls[0] = "https://en.wikipedia.org/wiki/Neural_radiance_field" as *u8 41 urls[1] = "https://arxiv.org/abs/2308.04079" as *u8 42 urls[2] = "https://github.com/graphdeco-inria/gaussian-splatting" as *u8 43 44 let src_ids: *i64 = sys_mmap(nsrc * 8) as *i64 45 let src_classes: *i64 = sys_mmap(nsrc * 8) as *i64 46 let src_texts: **u8 = sys_mmap(nsrc * 8) as **u8 47 let src_lens: *i64 = sys_mmap(nsrc * 8) as *i64 48 49 let raw: *u8 = sys_mmap(8388608) 50 w("--- LIVE FETCH (sovereign TLS) ---\n" as *u8) 51 var i: i64 = 0 52 while i < nsrc { 53 let st: *i64 = (sys_mmap(8)) as *i64 54 let n: i64 = nx_https_fetch_follow(urls[i], store, raw, 8388608, 6, st) 55 w(" "); w(urls[i]); w(" status=" as *u8); wn(st[0]); w(" raw=" as *u8); wn(n) 56 let txt: *u8 = sys_mmap(8388608) 57 var tn: i64 = 0 58 if n > 0 { tn = nx_html_to_text(raw, n, txt, 8388608) } 59 src_ids[i] = i + 1 60 src_classes[i] = nx_tier_of_url(urls[i]) 61 src_texts[i] = txt 62 src_lens[i] = tn 63 w(" text=" as *u8); wn(tn); w(" class=" as *u8); wn(src_classes[i]); w("\n" as *u8) 64 i = i + 1 65 } 66 67 let nclaims: i64 = 5 68 let claim_ids: *i64 = sys_mmap(nclaims * 8) as *i64 69 let claim_terms: **u8 = sys_mmap(nclaims * 8) as **u8 70 let claim_lens: *i64 = sys_mmap(nclaims * 8) as *i64 71 claim_ids[0] = 10 72 claim_terms[0] = "photogrammetry" as *u8 73 claim_ids[1] = 20 74 claim_terms[1] = "neural" as *u8 75 claim_ids[2] = 30 76 claim_terms[2] = "mesh" as *u8 77 claim_ids[3] = 40 78 claim_terms[3] = "camera" as *u8 79 claim_ids[4] = 50 80 claim_terms[4] = "gaussian" as *u8 81 var ci: i64 = 0 82 while ci < nclaims { claim_lens[ci] = slen(claim_terms[ci] as *u8); ci = ci + 1 } 83 84 let nterms: i64 = 2 85 let q_terms: **u8 = sys_mmap(nterms * 8) as **u8 86 let q_lens: *i64 = sys_mmap(nterms * 8) as *i64 87 q_terms[0] = "reconstruction" as *u8 88 q_terms[1] = "mesh" as *u8 89 q_lens[0] = slen(q_terms[0] as *u8) 90 q_lens[1] = slen(q_terms[1] as *u8) 91 92 let out_order: *i64 = sys_mmap(nsrc * 8) as *i64 93 let out_conf: *i64 = sys_mmap(nclaims * 8) as *i64 94 let corrob: *NxCorrob = nx_corrob_new(64) 95 nx_research_digest(src_ids, src_classes, src_texts, src_lens, nsrc, 96 claim_ids, claim_terms, claim_lens, nclaims, 97 q_terms, q_lens, nterms, out_order, out_conf, corrob) 98 99 w("--- RANKED by 'reconstruction mesh' ---\n" as *u8) 100 i = 0 101 while i < nsrc { 102 let idx: i64 = out_order[i] 103 w(" #" as *u8); wn(i + 1); w(" src" as *u8); wn(src_ids[idx]); w(" textlen=" as *u8); wn(src_lens[idx]); w("\n" as *u8) 104 i = i + 1 105 } 106 w("--- CLAIMS term: raw/indep -> conf(0=none,1=single,2=confirmed) ---\n" as *u8) 107 ci = 0 108 while ci < nclaims { 109 w(" "); w(claim_terms[ci]) 110 w(": raw=" as *u8); wn(nx_corrob_raw_count(corrob, claim_ids[ci])) 111 w(" indep=" as *u8); wn(nx_corrob_independent_count(corrob, claim_ids[ci])) 112 w(" conf=" as *u8); wn(out_conf[ci]) 113 w("\n" as *u8) 114 ci = ci + 1 115 } 116 return 0 117}