code wiki / (root) / nx_swcompare_research.nx

nx_swcompare_research.nx source

↩ module page · 64 lines · 3127 B

1// nx_swcompare_research.nx -- the GENERATIVE researcher stage of Nishi Compare. Generalizes the hardcoded 2// nx_frontier_research_fetch: reads a per-domain QUERY SPEC (data, not code) and banks the CURRENT (2024-2026) 3// frontier for that domain over sovereign TLS via the KEYLESS scholarly APIs (OpenAlex/arXiv/Crossref). This is 4// "use the nishi researcher on 25/26 gaps" made reusable -- a new domain = a new spec file, zero new code. 5// Spec format (knowledge/compare/<domain>.q): one query per line "<bankname><TAB><url>"; lines without a TAB 6// (or starting with '#') are skipped. Banks -> knowledge/library/<bankname>.txt (the researcher's evidence corpus, 7// consumed by nx_swcompare's gap-map). Usage: nx_swcompare_research <spec-path> license_tier: ORIGINAL expect_exit:0 8import "nx_research_engine.nx" 9const K_MAGIC_131072: i64 = 131072 10const K_MAGIC_8388608: i64 = 8388608 11const K_MAGIC_8192: i64 = 8192 12const K_MAGIC_2200: i64 = 2200 13 14func sr_read(path: *u8, buf: *u8, cap: i64) -> i64 { 15 let fd: i64 = sys_openat_rd(path); if fd < 0 { return 0 - 1 } 16 var tot: i64 = 0 17 while tot < cap { let r: i64 = sys_read(fd, (buf as i64 + tot) as *u8, cap - tot); if r <= 0 { break } tot = tot + r } 18 sys_close(fd); return tot 19} 20 21func main(argc: i64, argv: *i64) -> i64 { 22 var spec: *u8 = "knowledge/compare/compute.q" as *u8 23 if argc >= 2 { spec = argv[1] as *u8 } 24 let store: *TrustStore = rf_init() 25 if (store as i64) == 0 { rf_puts("swc-research: trust store load failed\n" as *u8); return 1 } 26 rf_puts("SWC-RESEARCH CA roots="); rf_putn(trust_store_count(store)); rf_puts(" spec="); rf_puts(spec); rf_puts("\n" as *u8) 27 28 let sbuf: *u8 = sys_mmap(K_MAGIC_131072) 29 let sn: i64 = sr_read(spec, sbuf, K_MAGIC_131072) 30 if sn <= 0 { rf_puts("swc-research: spec not found or empty\n" as *u8); return 1 } 31 32 let cap: i64 = K_MAGIC_8388608 33 let out: *u8 = sys_mmap(cap) 34 let namebuf: *u8 = sys_mmap(256) 35 let urlbuf: *u8 = sys_mmap(K_MAGIC_8192) 36 37 var i: i64 = 0 38 var ok: i64 = 0 39 var tot: i64 = 0 40 while i < sn { 41 var j: i64 = i 42 var t: i64 = 0 - 1 43 while j < sn { if sbuf[j] == (10 as u8) { break } if sbuf[j] == (9 as u8) { if t < 0 { t = j } } j = j + 1 } 44 if t > i { 45 var k: i64 = 0 46 while (i + k) < t { namebuf[k] = sbuf[i+k]; k = k + 1 } 47 namebuf[k] = 0 as u8 48 var u: i64 = 0 49 var p: i64 = t + 1 50 while p < j { urlbuf[u] = sbuf[p]; u = u + 1; p = p + 1 } 51 urlbuf[u] = 0 as u8 52 if namebuf[0] != (35 as u8) { 53 rf_sleep_ms(K_MAGIC_2200) 54 let r: i64 = rf_fetch_bank(urlbuf, namebuf, store, out, cap) 55 ok = ok + r 56 tot = tot + 1 57 rf_puts(" banked "); rf_puts(namebuf); rf_puts(" r="); rf_putn(r); rf_puts("\n" as *u8) 58 } 59 } 60 i = j + 1 61 } 62 rf_puts("SWC-RESEARCH banked "); rf_putn(ok); rf_puts("/"); rf_putn(tot); rf_puts(" frontier sources (knowledge/library/<bankname>.txt) -- 2024-2026, sovereign TLS, keyless\n" as *u8) 63 return 0 64}