code wiki / _hdl_build / nx_nightly_maintenance_test.nx

nx_nightly_maintenance_test.nx source

↩ module page · 55 lines · 4285 B

1// nx_nightly_maintenance_test.nx -- the team closes the store for the night. On a MESSY day the 2// Librarian finds uncited work, the Engineer finds an ungated cap, the Genealogist finds sprawl, the 3// Caretaker has a pending prune, the Critic finds a blind spot -> all go on the MORNING LIST and the 4// store does NOT close clean. On a TIDY day every check is zero -> the store closes clean. Exit 0 if 5// both hold. license_tier: ORIGINAL 6 7import "nx_nightly_maintenance.nx" 8import "nx_syscalls.nx" 9 10func mt_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 11func mt_num(v: i64) -> i64 { let bb: *u8 = sys_mmap(28); var m: i64=v; if m<0 {m=0-m}; let t: *u8 = sys_mmap(28); var k: i64=0; if m==0 {t[0]=48;k=1}; while m>0 {t[k]=48+(m%10); m=m/10; k=k+1}; var i: i64=0; while i<k {bb[i]=t[k-1-i]; i=i+1}; sys_write(1, bb, k); return 0 } 12 13func main() -> i64 { 14 mt_puts("=== NIGHTLY CLOSE: every organ does its closing task; flag the morning list ===\n" as *u8) 15 16 // ---- a MESSY day ---- 17 let cited: *i64 = sys_mmap(8*8) as *i64; cited[0]=1; cited[1]=1; cited[2]=0; cited[3]=1; cited[4]=0 // 2 uncited 18 let gate: *i64 = sys_mmap(8*8) as *i64; gate[0]=1; gate[1]=1; gate[2]=1; gate[3]=0; gate[4]=1 // 1 ungated 19 let prov: *i64 = sys_mmap(8*8) as *i64; prov[0]=1; prov[1]=1; prov[2]=1; prov[3]=1; prov[4]=1 // 5 proven 20 let uncited: i64 = nm_citation_audit(5, cited) 21 let missing: i64 = nm_inventory_missing_gates(5, gate) 22 let proven: i64 = nm_inventory_proven(5, prov) 23 // Genealogist sprawl scan: registry with one exact-dup pair 24 let ra: *i64 = sys_mmap(8*8) as *i64; let ro: *i64 = sys_mmap(8*8) as *i64 25 ra[0]=ART_ALLOC; ro[0]=OBJ_IMPORTANCE; ra[1]=ART_ALLOC; ro[1]=OBJ_IMPORTANCE; ra[2]=ART_FIDELITY; ro[2]=OBJ_DISTORTION 26 let ex: *i64 = sys_mmap(8) as *i64; let nr: *i64 = sys_mmap(8) as *i64 27 gen_sprawl_scan(3, ra, ro, ex, nr); let sprawl: i64 = ex[0] + nr[0] 28 // Caretaker pending prunes 29 let st: *i64 = sys_mmap(8*8) as *i64; let lb: *i64 = sys_mmap(8*8) as *i64; let cv: *i64 = sys_mmap(8*8) as *i64 30 st[0]=CARE_ACTIVE; lb[0]=1; cv[0]=0; st[1]=CARE_DUPLICATE; lb[1]=0; cv[1]=1 31 let plan: *i64 = sys_mmap(8*8) as *i64; let prunes: i64 = care_plan(2, st, lb, cv, plan) 32 let blind: i64 = 1; let regress: i64 = 0 33 34 let close: i64 = nm_nightly_close(uncited, missing, sprawl, prunes, blind, regress) 35 let mlist: i64 = nm_morning_list(uncited, missing, sprawl, prunes, blind, regress) 36 mt_puts(" MESSY day -> Librarian uncited=" as *u8); mt_num(uncited); mt_puts(" Engineer ungated=" as *u8); mt_num(missing); mt_puts(" proven=" as *u8); mt_num(proven) 37 mt_puts(" Genealogist sprawl=" as *u8); mt_num(sprawl); mt_puts(" Caretaker prunes=" as *u8); mt_num(prunes); mt_puts(" Critic blindspots=" as *u8); mt_num(blind); mt_puts("\n" as *u8) 38 mt_puts(" -> store close=" as *u8); mt_num(close); mt_puts(" (1=ISSUES) morning-list=" as *u8); mt_num(mlist); mt_puts("\n" as *u8) 39 40 // ---- a TIDY day: every check zero ---- 41 let cclose: i64 = nm_nightly_close(0, 0, 0, 0, 0, 0) 42 mt_puts(" TIDY day -> store close=" as *u8); mt_num(cclose); mt_puts(" (0=CLEAN) morning-list=" as *u8); mt_num(nm_morning_list(0,0,0,0,0,0)); mt_puts("\n" as *u8) 43 44 let r: *i64 = sys_mmap(8*8) as *i64 45 r[0] = 0; if uncited == 2 { r[0] = 1 } // Librarian caught uncited work 46 r[1] = 0; if missing == 1 { if proven == 5 { r[1] = 1 } } // Engineer inventory (ungated + headcount) 47 r[2] = 0; if sprawl == 1 { if prunes == 1 { r[2] = 1 } } // Genealogist + Caretaker 48 r[3] = 0; if close == NM_ISSUES { if mlist == 6 { r[3] = 1 } } // messy -> issues, full morning list 49 r[4] = 0; if cclose == NM_CLEAN { r[4] = 1 } // tidy -> store closes clean 50 var pass: i64 = 0; var i: i64 = 0 51 while i < 5 { pass = pass + r[i]; i = i + 1 } 52 mt_puts("----\n passed " as *u8); mt_num(pass); mt_puts("/5\n" as *u8) 53 if pass == 5 { mt_puts(" NIGHTLY CLOSE LIVE: Librarian cites, Engineer inventories, Genealogist+Caretaker tidy, Critic sweeps -> the store opens clean tomorrow.\n" as *u8); sys_exit(0); return 0 } 54 mt_puts(" FAIL\n" as *u8); sys_exit(1); return 1 55}