code wiki / (root) / nx_cdx_parse_gate.nx

nx_cdx_parse_gate.nx source

↩ module page · 77 lines · 4543 B

1// nx_cdx_parse_gate.nx -- GREEN/RED gate: feed REAL-SHAPED page3.com CDX rows (as pulled live from web.archive.org) 2// through cdx_parse -> nx_temporal_index and prove browse-as-of-date over actual archive index data. Composes 3// nx_cdx_parse + nx_temporal_index. Sovereign, deterministic, no network. license_tier: ORIGINAL 4import "nx_cdx_parse.nx" 5import "nx_temporal_index.nx" 6 7func gw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 8func gn(v: i64) -> i64 { if v==0 { sys_write(1,"0" as *u8,1); return 0 } var m: i64=v; if m<0 { sys_write(1,"-" as *u8,1); m=0-m } let t: *u8=sys_mmap(24); var k: i64=0; while m>0 { t[k]=(48+(m%10)) as u8; m=m/10; k=k+1 } let o: *u8=sys_mmap(24); var w: i64=0; var q: i64=k-1; while q>=0 { o[w]=t[q]; w=w+1; q=q-1 } sys_write(1,o,w); return 0 } 9func ap(buf: *u8, off: i64, s: *u8) -> i64 { var i: i64=0; while s[i]!=(0 as u8) { buf[off+i]=s[i]; i=i+1 } return off+i } 10func apnl(buf: *u8, off: i64) -> i64 { buf[off]=0x0a as u8; return off+1 } 11 12func main() -> i64 { 13 gw("=== nx_cdx_parse_gate: real-shaped page3.com CDX -> temporal index -> browse-as-of-date ===\n" as *u8) 14 let fix: *u8 = sys_mmap(8192) 15 var o: i64 = 0 16 o = ap(fix, o, "com,page3)/ 19961113094734 http://www.page3.com:80/ text/html 200 NT6EIAR5 1336" as *u8); o = apnl(fix, o) 17 o = ap(fix, o, "com,page3)/ 19971211090223 http://www.page3.com:80/ text/html 200 4ANJOAQ3 909" as *u8); o = apnl(fix, o) 18 o = ap(fix, o, "com,page3)/ 19981206083159 http://www.page3.com:80/ text/html 302 PWYC7SSA 263" as *u8); o = apnl(fix, o) 19 let total: i64 = o 20 21 let RS: *i64 = sys_mmap(64*8) as *i64 22 let RE: *i64 = sys_mmap(64*8) as *i64 23 let nrows: i64 = cdx_rows(fix, total, RS, RE, 64) 24 25 let keys: *i64 = sys_mmap(64*8) as *i64 26 let dates: *i64 = sys_mmap(64*8) as *i64 27 let b2: *i64 = sys_mmap(16) as *i64 28 var i: i64 = 0 29 while i < nrows { 30 cdx_field(fix, RS[i], RE[i], 0, b2) 31 let ko: i64 = b2[0] 32 let kl: i64 = b2[1] 33 let kb: *u8 = sys_mmap(256) 34 var j: i64 = 0 35 while j < kl { kb[j] = fix[ko+j]; j = j + 1 } 36 kb[kl] = 0 as u8 37 keys[i] = kb as i64 38 cdx_field(fix, RS[i], RE[i], 1, b2) 39 dates[i] = cdx_ts8(fix, b2[0], b2[1]) 40 i = i + 1 41 } 42 43 var pass: i64=0; var tot: i64=0 44 45 // T1: 3 rows parsed 46 tot=tot+1; var t1: i64=0; if nrows==3 { t1=1 } 47 if t1==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 48 gw("T1 ROWS: parsed " as *u8); gn(nrows); gw(" CDX rows (expect 3)\n" as *u8) 49 50 // T2: row0 timestamp -> 19961113 (page3.com's 1996 capture) 51 tot=tot+1; var t2: i64=0; if dates[0]==19961113 { t2=1 } 52 if t2==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 53 gw("T2 TIMESTAMP: row0 YYYYMMDD=" as *u8); gn(dates[0]); gw(" (expect 19961113)\n" as *u8) 54 55 // T3: row1 status field (idx 4) == "200" 56 let s2: *i64 = sys_mmap(16) as *i64 57 cdx_field(fix, RS[1], RE[1], 4, s2) 58 tot=tot+1; var t3: i64=0; if s2[1]==3 { if (fix[s2[0]] as i64)==0x32 { if (fix[s2[0]+1] as i64)==0x30 { if (fix[s2[0]+2] as i64)==0x30 { t3=1 } } } } 59 if t3==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 60 gw("T3 STATUS-FIELD: row1 field[4]='200' (HTTP status extracted)\n" as *u8) 61 62 // T4: browse as-of 1998-01-01 -> the 1997-12-11 capture (most recent at-or-before) 63 let q4: i64 = ti_query(keys, dates, nrows, "com,page3)/" as *u8, 19980101) 64 tot=tot+1; var t4: i64=0; if q4>=0 { if dates[q4]==19971211 { t4=1 } } 65 if t4==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 66 gw("T4 AS-OF 1998-01-01 -> capture " as *u8); if q4>=0 { gn(dates[q4]) } else { gw("none" as *u8) } gw(" (expect 19971211)\n" as *u8) 67 68 // T5: browse as-of 1997-01-01 -> the 1996-11-13 capture 69 let q5: i64 = ti_query(keys, dates, nrows, "com,page3)/" as *u8, 19970101) 70 tot=tot+1; var t5: i64=0; if q5>=0 { if dates[q5]==19961113 { t5=1 } } 71 if t5==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 72 gw("T5 AS-OF 1997-01-01 -> capture " as *u8); if q5>=0 { gn(dates[q5]) } else { gw("none" as *u8) } gw(" (expect 19961113)\n" as *u8) 73 74 gw("\n=== nx_cdx_parse_gate " as *u8); gn(pass); gw("/" as *u8); gn(tot); gw(" ===\n" as *u8) 75 if pass==tot { gw("CDX-PARSE-GATE GREEN -- real-shaped Wayback CDX wired through to browse-as-of-date\n" as *u8); sys_exit(0); return 0 } 76 gw("CDX-PARSE-GATE RED\n" as *u8); sys_exit(1); return 1 77}