code wiki / _hdl_build / _claude_meter_authored.nx

_claude_meter_authored.nx source

↩ module page · 146 lines · 6821 B

1// AUTHORED BY THE NISHI BUILDER (nx_module_author claude-meter template) -- S6 Claude-use KPI. 2import "nx_syscalls.nx" 3func _cm_puts(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 4func _cm_num(v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m;sys_write(1,"-" as *u8,1)}; 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 } 5func _cm_fputs(fd2: i64, s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(fd2,s,n); return 0 } 6func _cm_fnum(fd2: i64, v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m;sys_write(fd2,"-" as *u8,1)}; 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(fd2,bb,k); return 0 } 7func cm_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } 8func cm_find(buf: *u8, s: i64, e: i64, pat: *u8) -> i64 { 9 let pl: i64 = cm_slen(pat) 10 var i: i64 = s 11 while i + pl <= e { 12 var k: i64 = 0 13 var hit: i64 = 1 14 while k < pl { if buf[i+k] != pat[k] { hit = 0; k = pl } else { k = k + 1 } } 15 if hit == 1 { return i } 16 i = i + 1 17 } 18 return 0 - 1 19} 20func cm_read(path: *u8, buf: *u8, cap: i64) -> i64 { 21 let fd2: i64 = sys_openat_rd(path) 22 if fd2 < 0 { return 0 - 1 } 23 var total: i64 = 0 24 var go: i64 = 1 25 while go == 1 { 26 let base: i64 = buf as i64 27 let n: i64 = sys_read(fd2, (base + total) as *u8, cap - total) 28 if n <= 0 { go = 0 } else { total = total + n } 29 if total >= cap { go = 0 } 30 } 31 sys_close(fd2) 32 return total 33} 34func cm_scan_llm(buf: *u8, n: i64, out: *i64) -> i64 { 35 var i: i64 = 0 36 while i < n { 37 var le: i64 = i 38 while le < n { if buf[le] == (10 as u8) { break } le = le + 1 } 39 if cm_find(buf, i, le, "[LLM]" as *u8) >= 0 { 40 if cm_find(buf, i, le, "- [ ]" as *u8) >= 0 { out[0] = out[0] + 1 } 41 if cm_find(buf, i, le, "- [x]" as *u8) >= 0 { out[1] = out[1] + 1 } 42 } 43 i = le + 1 44 } 45 return 0 46} 47func cm_walk(dirpath: *u8, mode: i64, out: *i64) -> i64 { 48 let dfd: i64 = sys_openat_rd(dirpath) 49 if dfd < 0 { return 0 - 1 } 50 let dirbuf: *u8 = sys_mmap(1048640) 51 let pathbuf: *u8 = sys_mmap(4096) 52 let filebuf: *u8 = sys_mmap(1048592) 53 var nfiles: i64 = 0 54 var done: i64 = 0 55 while done == 0 { 56 let nb: i64 = sys_getdents64(dfd, dirbuf, 1048576) 57 if nb <= 0 { done = 1 } 58 else { 59 var off: i64 = 0 60 while off < nb { 61 let dbase: i64 = dirbuf as i64 62 let rec: *u8 = (dbase + off) as *u8 63 let rl: i64 = dirent_reclen(rec) 64 if rl <= 0 { off = nb } 65 else { 66 let name: *u8 = dirent_name(rec) 67 let nl: i64 = cm_slen(name) 68 var ismd: i64 = 0 69 if nl > 3 { 70 if name[nl-3] == (46 as u8) { if name[nl-2] == (109 as u8) { if name[nl-1] == (100 as u8) { ismd = 1 } } } 71 } 72 if ismd == 1 { 73 var p: i64 = 0 74 var q: i64 = 0 75 while dirpath[q] != (0 as u8) { pathbuf[p] = dirpath[q]; p = p + 1; q = q + 1 } 76 pathbuf[p] = 47 as u8 77 p = p + 1 78 q = 0 79 while q < nl { pathbuf[p] = name[q]; p = p + 1; q = q + 1 } 80 pathbuf[p] = 0 as u8 81 let fl: i64 = cm_read(pathbuf, filebuf, 1048576) 82 if fl > 0 { 83 nfiles = nfiles + 1 84 if mode == 1 { 85 var hd: i64 = fl 86 if hd > 2048 { hd = 2048 } 87 if cm_find(filebuf, 0, hd, "kind: tutoring" as *u8) >= 0 { out[0] = out[0] + 1 } 88 } 89 if mode == 2 { cm_scan_llm(filebuf, fl, out) } 90 } 91 } 92 off = off + rl 93 } 94 } 95 } 96 } 97 sys_close(dfd) 98 return nfiles 99} 100func cm_corpus(out: *i64) -> i64 { 101 let buf: *u8 = sys_mmap(1048592) 102 let fl: i64 = cm_read("knowledge/library/synth_corpus.log" as *u8, buf, 1048576) 103 if fl <= 0 { return 0 } 104 var i: i64 = 0 105 while i < fl { 106 var le: i64 = i 107 while le < fl { if buf[le] == (10 as u8) { break } le = le + 1 } 108 if cm_find(buf, i, le, "SYNTH " as *u8) >= 0 { out[0] = out[0] + 1 } 109 if cm_find(buf, i, le, "verdict=CONVERGED" as *u8) >= 0 { out[1] = out[1] + 1 } 110 i = le + 1 111 } 112 return 1 113} 114func main() -> i64 { 115 _cm_puts("=== BUILDER-AUTHORED CLAUDE-USE METER: tutored vs team-authored, the trend to zero ===\n" as *u8) 116 let tut: *i64 = sys_mmap(64) as *i64 117 let llm: *i64 = sys_mmap(64) as *i64 118 let cor: *i64 = sys_mmap(64) as *i64 119 let nspecs: i64 = cm_walk("knowledge/specs" as *u8, 1, tut) 120 let nproj: i64 = cm_walk("knowledge/projects" as *u8, 2, llm) 121 cm_corpus(cor) 122 _cm_puts(" specs-files=" as *u8); _cm_num(nspecs); _cm_puts(" tutoring-docs=" as *u8); _cm_num(tut[0]) 123 _cm_puts(" projects-files=" as *u8); _cm_num(nproj) 124 _cm_puts(" llm-rungs-open=" as *u8); _cm_num(llm[0]); _cm_puts(" llm-rungs-closed=" as *u8); _cm_num(llm[1]) 125 _cm_puts(" team-synth-runs=" as *u8); _cm_num(cor[0]); _cm_puts(" team-converged=" as *u8); _cm_num(cor[1]); _cm_puts("\n" as *u8) 126 let mfd: i64 = sys_openat_append("knowledge/status/claude_meter.log" as *u8, 0x1a4) 127 if mfd < 0 { _cm_puts(" METER LOG OPEN FAILED\n" as *u8); sys_exit(1); return 1 } 128 _cm_fputs(mfd, "METER epoch=" as *u8); _cm_fnum(mfd, sys_now_realtime_sec()) 129 _cm_fputs(mfd, " tutoring_docs=" as *u8); _cm_fnum(mfd, tut[0]) 130 _cm_fputs(mfd, " llm_open=" as *u8); _cm_fnum(mfd, llm[0]) 131 _cm_fputs(mfd, " llm_closed=" as *u8); _cm_fnum(mfd, llm[1]) 132 _cm_fputs(mfd, " team_synth_runs=" as *u8); _cm_fnum(mfd, cor[0]) 133 _cm_fputs(mfd, " team_converged=" as *u8); _cm_fnum(mfd, cor[1]) 134 _cm_fputs(mfd, "\n" as *u8) 135 sys_close(mfd) 136 _cm_puts(" METER line appended: knowledge/status/claude_meter.log\n" as *u8) 137 var pass: i64 = 1 138 if nspecs < 5 { pass = 0 } 139 if nproj < 2 { pass = 0 } 140 if tut[0] < 1 { pass = 0 } 141 if cor[0] < 1 { pass = 0 } 142 if pass == 1 { _cm_puts(" CLAUDE-METER GATE: PASS\n" as *u8); sys_exit(0); return 0 } 143 _cm_puts(" CLAUDE-METER GATE: FAIL (a source was empty)\n" as *u8) 144 sys_exit(1) 145 return 1 146}