code wiki / (root) / nx_court_recap.nx

nx_court_recap.nx source

↩ module page · 176 lines · 7465 B

1// nx_court_recap.nx -- R1a sovereign court-data ingest parse-core (CourtListener v4 financial-disclosures). 2// Rung-1: needle-scan a banked CL financial-disclosure JSON page -> normalized counts + a value + liar-kill gate. 3// Rung-2: cursor-following -- extract the v4 "next" cursor + a string field value (c_str_after), so the live 4// ingester can page through EVERYTHING. Gated deterministically on the banked fixture (network-independent). 5// nx_cc traps avoided: NO double-quote / '#' / '!' in string literals -> JSON needles built at runtime via mkneedle. 6// license_tier: ORIGINAL expect_exit:0 7import "nx_syscalls.nx" 8const K_MAGIC_524288: i64 = 524288 9const K_MAGIC_2048: i64 = 2048 10const K_MAGIC_1990: i64 = 1990 11const K_MAGIC_2030: i64 = 2030 12 13func w(fd: i64, s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(fd, s, n); return 0 } 14func wc(fd: i64, code: i64) -> i64 { let t: *u8 = sys_mmap(2); t[0] = code as u8; sys_write(fd, t, 1); return 0 } 15func wn(fd: i64, v: i64) -> i64 { 16 var m: i64 = v; if m < 0 { w(fd, "-" as *u8); m = 0 - m } 17 let t: *u8 = sys_mmap(24); var k: i64 = 0; if m == 0 { t[0] = 48 as u8; k = 1 } 18 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 19 let o: *u8 = sys_mmap(24); var i: i64 = 0; while i < k { o[i] = t[k-1-i]; i = i + 1 } sys_write(fd, o, k); return 0 20} 21func c_read(path: *u8, buf: *u8, cap: i64) -> i64 { 22 let fd: i64 = sys_openat_rd(path); if fd < 0 { return 0 - 1 } 23 var tot: i64 = 0 24 while tot < cap { let r: i64 = sys_read(fd, (buf as i64 + tot) as *u8, cap - tot); if r <= 0 { break } tot = tot + r } 25 sys_close(fd); return tot 26} 27func c_count(buf: *u8, n: i64, needle: *u8) -> i64 { 28 var m: i64 = 0; while needle[m] != (0 as u8) { m = m + 1 } 29 if m == 0 { return 0 } 30 var cnt: i64 = 0; var i: i64 = 0 31 while i + m <= n { 32 var k: i64 = 0; var hit: i64 = 1 33 while k < m { if buf[i+k] != needle[k] { hit = 0; break } k = k + 1 } 34 if hit == 1 { cnt = cnt + 1; i = i + m } else { i = i + 1 } 35 } 36 return cnt 37} 38func mkneedle(dst: *u8, name: *u8) -> i64 { 39 var i: i64 = 0 40 dst[i] = 34 as u8; i = i + 1 41 var j: i64 = 0 42 while name[j] != (0 as u8) { dst[i] = name[j]; i = i + 1; j = j + 1 } 43 dst[i] = 34 as u8; i = i + 1 44 dst[i] = 58 as u8; i = i + 1 45 dst[i] = 0 as u8 46 return i 47} 48func c_val_after(buf: *u8, n: i64, needle: *u8) -> i64 { 49 var m: i64 = 0; while needle[m] != (0 as u8) { m = m + 1 } 50 if m == 0 { return 0 - 1 } 51 var i: i64 = 0 52 while i + m <= n { 53 var k: i64 = 0; var hit: i64 = 1 54 while k < m { if buf[i+k] != needle[k] { hit = 0; break } k = k + 1 } 55 if hit == 1 { 56 var p: i64 = i + m 57 while p < n { let c: i64 = buf[p] as i64; if c == 32 { p = p + 1 } else { break } } 58 var have: i64 = 0; var v: i64 = 0 59 while p < n { 60 let d: i64 = buf[p] as i64 61 if d >= 48 { if d <= 57 { v = v * 10 + (d - 48); have = 1; p = p + 1 } else { break } } else { break } 62 } 63 if have == 1 { return v } 64 return 0 - 1 65 } 66 i = i + 1 67 } 68 return 0 - 1 69} 70// extract a JSON string value after a needle: needle"..." -> dst (until closing quote). null/number -> empty, 0. 71func c_str_after(buf: *u8, n: i64, needle: *u8, dst: *u8, dcap: i64) -> i64 { 72 dst[0] = 0 as u8 73 var m: i64 = 0; while needle[m] != (0 as u8) { m = m + 1 } 74 if m == 0 { return 0 } 75 var i: i64 = 0 76 while i + m <= n { 77 var k: i64 = 0; var hit: i64 = 1 78 while k < m { if buf[i+k] != needle[k] { hit = 0; break } k = k + 1 } 79 if hit == 1 { 80 var p: i64 = i + m 81 while p < n { let c: i64 = buf[p] as i64; if c == 32 { p = p + 1 } else { break } } 82 if p < n { 83 if buf[p] == (34 as u8) { 84 p = p + 1 85 var o: i64 = 0 86 while p < n { 87 if buf[p] == (34 as u8) { break } 88 if o < dcap - 1 { dst[o] = buf[p]; o = o + 1 } 89 p = p + 1 90 } 91 dst[o] = 0 as u8 92 return o 93 } 94 } 95 return 0 96 } 97 i = i + 1 98 } 99 return 0 100} 101 102func main(argc: i64, argv: *i64) -> i64 { 103 let cap: i64 = K_MAGIC_524288 104 let buf: *u8 = sys_mmap(cap) 105 var path: *u8 = "knowledge/library/cl_findisc_j.txt" as *u8 106 if argc >= 2 { path = argv[1] as *u8 } 107 let n: i64 = c_read(path, buf, cap) 108 109 let nb: *u8 = sys_mmap(64) 110 mkneedle(nb, "results" as *u8) 111 let results_arr: i64 = c_count(buf, n, nb) 112 let rb: *u8 = sys_mmap(64) 113 mkneedle(rb, "report_type" as *u8) 114 let recs: i64 = c_count(buf, n, rb) 115 let ib: *u8 = sys_mmap(64) 116 mkneedle(ib, "gross_value_code" as *u8) 117 let invs: i64 = c_count(buf, n, ib) 118 let pb: *u8 = sys_mmap(64) 119 mkneedle(pb, "person" as *u8) 120 let persons: i64 = c_count(buf, n, pb) 121 let yb: *u8 = sys_mmap(64) 122 mkneedle(yb, "year" as *u8) 123 let year: i64 = c_val_after(buf, n, yb) 124 let zb: *u8 = sys_mmap(64) 125 mkneedle(zb, "zzz_not_a_real_field" as *u8) 126 let neg: i64 = c_count(buf, n, zb) 127 128 // rung-2: string-value extraction (resource_uri, always a URL string) + the "next" cursor 129 let rub: *u8 = sys_mmap(64) 130 mkneedle(rub, "resource_uri" as *u8) 131 let rtv: *u8 = sys_mmap(512) 132 let rtlen: i64 = c_str_after(buf, n, rub, rtv, 512) 133 let nxb: *u8 = sys_mmap(64) 134 mkneedle(nxb, "next" as *u8) 135 let nxv: *u8 = sys_mmap(K_MAGIC_2048) 136 let nxlen: i64 = c_str_after(buf, n, nxb, nxv, K_MAGIC_2048) 137 let cur: *u8 = sys_mmap(16) 138 cur[0] = 99 as u8; cur[1] = 117 as u8; cur[2] = 114 as u8; cur[3] = 115 as u8; cur[4] = 111 as u8; cur[5] = 114 as u8; cur[6] = 61 as u8; cur[7] = 0 as u8 139 var has_cursor: i64 = 0; if nxlen > 0 { has_cursor = c_count(nxv, nxlen, cur) } 140 141 w(1, "COURT-RECAP findisc parse: bytes=" as *u8); wn(1, n) 142 w(1, " results_arrays=" as *u8); wn(1, results_arr) 143 w(1, " records=" as *u8); wn(1, recs) 144 w(1, " investment_items=" as *u8); wn(1, invs) 145 w(1, " judge_refs=" as *u8); wn(1, persons) 146 w(1, " first_year=" as *u8); wn(1, year) 147 w(1, " first_uri_len=" as *u8); wn(1, rtlen) 148 w(1, " next_cursor_len=" as *u8); wn(1, nxlen) 149 w(1, " has_cursor=" as *u8); wn(1, has_cursor) 150 wc(1, 10) 151 152 var t1: i64 = 0; if n > 1000 { t1 = 1 } 153 var t2: i64 = 0; if results_arr >= 1 { t2 = 1 } 154 var t3: i64 = 0; if recs >= 1 { t3 = 1 } 155 var t4: i64 = 0; if invs >= 1 { t4 = 1 } 156 var t5: i64 = 0; if year >= K_MAGIC_1990 { if year <= K_MAGIC_2030 { t5 = 1 } } 157 var t6: i64 = 0; if neg == 0 { t6 = 1 } 158 var t7: i64 = 0; if rtlen > 0 { if has_cursor == 1 { t7 = 1 } } 159 let pass: i64 = t1 + t2 + t3 + t4 + t5 + t6 + t7 160 161 w(1, "LIAR-KILL loaded=" as *u8); wn(1, t1) 162 w(1, " results_present=" as *u8); wn(1, t2) 163 w(1, " records=" as *u8); wn(1, t3) 164 w(1, " nested_invest=" as *u8); wn(1, t4) 165 w(1, " year_plausible=" as *u8); wn(1, t5) 166 w(1, " neg_control_zero=" as *u8); wn(1, t6) 167 w(1, " cursor_follow=" as *u8); wn(1, t7) 168 wc(1, 10) 169 170 if pass == 7 { 171 w(1, "NX-COURT-RECAP verdict=GREEN parsed-real-CourtListener-financial-disclosure-JSON cursor-follow-ready neg-control-held" as *u8); wc(1, 10) 172 return 0 173 } 174 w(1, "NX-COURT-RECAP verdict=RED" as *u8); wc(1, 10) 175 return 1 176}