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}