code wiki / _hdl_build / nx_work_predict.nx

nx_work_predict.nx source

↩ module page · 62 lines · 2972 B

1// nx_work_predict.nx -- FUTURE-axis runner: read capability_ladder.tsv and print the ADJACENT-POSSIBLE 2// frontier (probable-next work: prerequisites DONE, node not yet built), ranked by layer (nearest the 3// hardware root first = the genuine growth front). Prints + writes a durable report for the planning 4// surface. Grounded entirely in the ladder data -- no model prose. Sovereign. 5// nx_work_predict [ladder.tsv] 6// license_tier: ORIGINAL 7import "nx_syscalls.nx" 8import "nx_work_predict_lib.nx" 9 10const WPR_LADDER: *u8 = "/mnt/c/Users/elder/nishi-core/nxc2/knowledge/registry/capability_ladder.tsv" 11const WPR_REPORT: *u8 = "/mnt/c/Users/elder/.claude/projects/C--Users-elder/memory/worklog/predict_next.txt" 12const WPR_BUFCAP: i64 = 4194304 // 4MB: ladder is ~40KB, ample headroom 13const WPR_OUTCAP: i64 = 1048576 14 15func wpp(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 16func wpn(v: i64) -> i64 { 17 let bb: *u8 = sys_mmap(28); var m: i64 = v 18 if m < 0 { sys_write(1, "-" as *u8, 1); m = 0 - m } 19 let t: *u8 = sys_mmap(28); var k: i64 = 0 20 if m == 0 { t[0] = 48 as u8; k = 1 } 21 while m > 0 { t[k] = ((48 + (m % 10)) as u8); m = m / 10; k = k + 1 } 22 var i: i64 = 0; while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } 23 sys_write(1, bb, k); return 0 24} 25func wpr_read(path: *u8, buf: *u8, cap: i64) -> i64 { 26 let fd: i64 = sys_openat_rd(path) 27 if fd < 0 { return 0 - 1 } 28 var total: i64 = 0 29 var nrd: i64 = sys_read(fd, buf, cap) 30 while nrd > 0 { total = total + nrd; if total >= cap { nrd = 0 } else { nrd = sys_read(fd, ((buf as i64) + total) as *u8, cap - total) } } 31 sys_close(fd) 32 return total 33} 34func wpr_strlen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } 35 36func main(argc: i64, argv: *i64) -> i64 { 37 var ladder: *u8 = WPR_LADDER 38 if argc >= 2 { ladder = argv[1] as *u8 } 39 40 let buf: *u8 = sys_mmap(WPR_BUFCAP) 41 let len: i64 = wpr_read(ladder, buf, WPR_BUFCAP) 42 if len <= 0 { wpp("WORK-PREDICT ladder-unreadable: " as *u8); wpp(ladder); wpp("\n" as *u8); sys_exit(0); return 0 } 43 44 let out: *u8 = sys_mmap(WPR_OUTCAP) 45 let stats: *i64 = sys_mmap(48) as *i64 46 let nadj: i64 = wp_predict(buf, len, out, WPR_OUTCAP, stats) 47 48 wpp("WORK-PREDICT ladder=" as *u8); wpp(ladder); wpp("\n" as *u8) 49 wpp(" rows=" as *u8); wpn(stats[0]) 50 wpp(" done=" as *u8); wpn(stats[1]) 51 wpp(" adjacent=" as *u8); wpn(stats[2]) 52 wpp(" root_available=" as *u8); wpn(stats[3]) 53 wpp(" blocked=" as *u8); wpn(stats[4]); wpp("\n" as *u8) 54 wpp("-- ADJACENT-POSSIBLE probable-next (all prereqs DONE, not yet built), by layer:\n" as *u8) 55 wpp(out) 56 wpp(" (root_available = startable foundations with no prereq; blocked = waiting on a non-DONE dep)\n" as *u8) 57 58 let rfd: i64 = sys_openat_wr(WPR_REPORT, 420) 59 if rfd >= 0 { sys_write(rfd, out, wpr_strlen(out)); sys_close(rfd) } 60 61 sys_exit(0); return 0 62}