code wiki / (root) / nx_freshness_gate.nx

nx_freshness_gate.nx source

↩ module page · 48 lines · 3084 B

1// nx_freshness_gate.nx -- proves adaptive re-crawl: changing pages crawled sooner, static pages back off, important 2// pages prioritized, all bounded. license_tier: ORIGINAL 3import "nx_freshness.nx" 4import "nx_gate.nx" 5 6func main() -> i64 { 7 gw("=== nx_freshness_gate: adaptive re-crawl scheduling (fresh index, finite crawler) ===\n" as *u8) 8 var pass: i64=0; var tot: i64=0 9 10 // T1 -- a page that changes every re-crawl converges to the MIN interval (crawled most often). 11 var iv: i64 = 86400 // start 1 day 12 var i: i64=0; while i<6 { iv = fr_update_interval(iv, 1); i=i+1 } 13 tot=tot+1; if iv==FR_MIN { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 14 gw("T1 changing page -> shorter interval (1d -> " as *u8); gn(iv); gw("s = MIN, crawled sooner)\n" as *u8) 15 16 // T2 -- a static page backs off to the MAX interval (saves crawl budget). 17 var iv2: i64 = 86400 18 i=0; while i<6 { iv2 = fr_update_interval(iv2, 0); i=i+1 } 19 tot=tot+1; if iv2==FR_MAX { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 20 gw("T2 static page -> longer interval (1d -> " as *u8); gn(iv2); gw("s = MAX, backs off)\n" as *u8) 21 22 // T3 -- due() correct: not due before last+interval, due after. 23 var t3: i64=0; if fr_due(1000,500,1400)==0 { if fr_due(1000,500,1600)==1 { t3=1 } } 24 tot=tot+1; if t3==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 25 gw("T3 due(): not due at t=1400, due at t=1600 (last=1000 interval=500)\n" as *u8) 26 27 // T4 -- priority (PageRank) shortens the effective interval: the important head stays fresher. 28 let full: i64 = fr_effective_interval(86400, 0) 29 let imp: i64 = fr_effective_interval(86400, 1000) 30 var t4: i64=0; if imp < full { if full==86400 { t4=1 } } 31 tot=tot+1; if t4==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 32 gw("T4 priority: important page effective " as *u8); gn(imp); gw("s < normal " as *u8); gn(full); gw("s\n" as *u8) 33 34 // T5 -- bounded: never below MIN on change, never above MAX on back-off. 35 var t5: i64=0; if fr_update_interval(FR_MIN, 1)==FR_MIN { if fr_update_interval(FR_MAX, 0)==FR_MAX { t5=1 } } 36 tot=tot+1; if t5==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 37 gw("T5 bounded: MIN stays MIN on change, MAX stays MAX on back-off (no runaway)\n" as *u8) 38 39 gw("\n=== nx_freshness_gate " as *u8); gn(pass); gw("/" as *u8); gn(tot); gw(" ===\n" as *u8) 40 let lfd: i64=sys_openat_append("knowledge/status/freshness_gate.log" as *u8, 420) 41 if pass==tot { 42 if lfd>=0 { sys_write(lfd, "FRESHNESS-GATE verdict=GREEN adaptive-recrawl bounded priority\n" as *u8, 61); sys_close(lfd) } 43 gw("FRESHNESS GREEN -- adaptive re-crawl keeps a billion-page index current on a finite crawler; changing pages sooner, static back off, head prioritized\n" as *u8) 44 sys_exit(0); return 0 45 } 46 if lfd>=0 { sys_write(lfd, "FRESHNESS-GATE verdict=RED\n" as *u8, 26); sys_close(lfd) } 47 gw("FRESHNESS RED\n" as *u8); sys_exit(1); return 1 48}