nx_pagerank_gate.nx source
↩ module page · 56 lines · 3607 B
1// nx_pagerank_gate.nx -- proves nx_pagerank on synthetic graphs with KNOWN ranks (deterministic KAT; no network, no
2// petabytes -- the build-now half, runs at NAS scale later). T1 symmetry, T2 authority order, T3 conservation, T4
3// dangling-node mass conservation. license_tier: ORIGINAL
4import "nx_pagerank.nx"
5import "nx_gate.nx"
6
7func gwf(fd: i64, s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} if fd>=0 { sys_write(fd,s,n) } return 0 }
8
9func main() -> i64 {
10 gw("=== nx_pagerank_gate: PageRank on synthetic graphs with known ranks ===\n" as *u8)
11 var pass: i64 = 0; var tot: i64 = 0
12 var i: i64 = 0
13
14 // T1 -- 3-cycle 0->1->2->0: by symmetry every rank = SCALE/3.
15 let ef: *i64 = sys_mmap(8*3) as *i64; let et: *i64 = sys_mmap(8*3) as *i64
16 ef[0]=0; ef[1]=1; ef[2]=2; et[0]=1; et[1]=2; et[2]=0
17 let r: *i64 = sys_mmap(8*3) as *i64
18 pr_compute(3, 3, ef, et, r, 100)
19 let third: i64 = PR_SCALE / 3
20 var eq: i64 = 1
21 i = 0
22 while i < 3 { var d: i64 = r[i] - third; if d < 0 { d = 0 - d } if d > PR_SCALE/100 { eq = 0 } i = i + 1 }
23 tot=tot+1; if eq==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) }
24 gw("T1 3-cycle -> all ranks equal ~SCALE/3 (r0=" as *u8); gn(r[0]); gw(" r1=" as *u8); gn(r[1]); gw(" r2=" as *u8); gn(r[2]); gw(")\n" as *u8)
25
26 // T3 -- conservation on the same run: sum ~ SCALE.
27 let s1: i64 = pr_sum(r, 3)
28 tot=tot+1; var cons: i64 = 0; if s1 > (PR_SCALE*98)/100 { if s1 < (PR_SCALE*102)/100 { cons = 1 } }
29 if cons==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) }
30 gw("T3 conservation sum~SCALE (sum=" as *u8); gn(s1); gw(")\n" as *u8)
31
32 // T2 -- asymmetric A->B, A->C, B->C, C->A (A=0,B=1,C=2): C is linked by A and B => highest authority.
33 let ef2: *i64 = sys_mmap(8*4) as *i64; let et2: *i64 = sys_mmap(8*4) as *i64
34 ef2[0]=0; ef2[1]=0; ef2[2]=1; ef2[3]=2; et2[0]=1; et2[1]=2; et2[2]=2; et2[3]=0
35 let r2: *i64 = sys_mmap(8*3) as *i64
36 pr_compute(3, 4, ef2, et2, r2, 100)
37 let mi: i64 = pr_argmax(r2, 3)
38 tot=tot+1; if mi==2 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) }
39 gw("T2 asymmetric -> highest-authority node = C(2) (rA=" as *u8); gn(r2[0]); gw(" rB=" as *u8); gn(r2[1]); gw(" rC=" as *u8); gn(r2[2]); gw(")\n" as *u8)
40
41 // T4 -- dangling node: 0->1->2, node 2 has no out-links; mass must NOT leak (sum stays ~SCALE).
42 let ef3: *i64 = sys_mmap(8*2) as *i64; let et3: *i64 = sys_mmap(8*2) as *i64
43 ef3[0]=0; ef3[1]=1; et3[0]=1; et3[1]=2
44 let r3: *i64 = sys_mmap(8*3) as *i64
45 pr_compute(3, 2, ef3, et3, r3, 100)
46 let s3: i64 = pr_sum(r3, 3)
47 tot=tot+1; var cons3: i64 = 0; if s3 > (PR_SCALE*90)/100 { if s3 < (PR_SCALE*110)/100 { cons3 = 1 } }
48 if cons3==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) }
49 gw("T4 dangling node -> mass conserved (sum=" as *u8); gn(s3); gw(", node2 dangling rank=" as *u8); gn(r3[2]); gw(")\n" as *u8)
50
51 gw("\n=== nx_pagerank_gate " as *u8); gn(pass); gw("/" as *u8); gn(tot); gw(" ===\n" as *u8)
52 let lfd: i64 = sys_openat_append("knowledge/status/pagerank_gate.log" as *u8, 420)
53 if pass==tot { gwf(lfd, "PAGERANK-GATE verdict=GREEN capability=built-gated scale=deferred-to-NAS\n" as *u8); if lfd>=0 { sys_close(lfd) } gw("PAGERANK GREEN -- authority signal from the web graph; built now, runs at NAS scale over the CC 13.4B-edge graph\n" as *u8); sys_exit(0); return 0 }
54 gwf(lfd, "PAGERANK-GATE verdict=RED\n" as *u8); if lfd>=0 { sys_close(lfd) }
55 gw("PAGERANK RED\n" as *u8); sys_exit(1); return 1
56}