code wiki / _hdl_build / nx_token_meter.nx
nx_token_meter.nx source
↩ module page · 115 lines · 4762 B
1// nx_token_meter.nx -- TOKEN-EFFICIENCY METER (Auditor): the measured drivers
2// of Claude-token spend, derived from data the team OWNS:
3// queue mix -- DONE / TODO / NOVEL / WIP / GEN counts from the assignment
4// queue (NOVEL backlog = pending tutor demand; DONE growth
5// with flat NOVEL = autonomy doing the work)
6// spend rows -- knowledge/status/token_spend.log, appended by SESSIONS:
7// TOKENSPEND epoch=<t> rows_closed=<n> caps=<n> [tokens=<n>]
8// (tokens optional -- sessions report what they know; an
9// absent figure is SAID, never invented)
10// Emits ONE row per run to knowledge/status/token_efficiency.log:
11// TOKENMETER epoch= done= todo= novel= wip= gen= visits= closed_per_visit_x10=
12// The trend the operator watches: done rising, novel flat-or-burst-then-drop,
13// closed_per_visit rising = better results per Claude visit.
14// license_tier: ORIGINAL
15import "nx_syscalls.nx"
16import "nx_assign_core.nx"
17const K_MAGIC_262144: i64 = 262144
18const K_MAGIC_262143: i64 = 262143
19
20func tm_w(fd: i64, s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(fd,s,n); return 0 }
21func tm_wn(fd: i64, v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m; sys_write(fd,"-" 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)) as u8;m=m/10;k=k+1}; var i: i64=0; while i<k{bb[i]=t[k-1-i];i=i+1}; sys_write(fd,bb,k); return 0 }
22
23// count TOKENSPEND rows and sum rows_closed= values
24func tm_spend(visits: *i64, closed: *i64) -> i64 {
25 visits[0] = 0
26 closed[0] = 0
27 let buf: *u8 = sys_mmap(K_MAGIC_262144)
28 let fd: i64 = sys_openat_rd("knowledge/status/token_spend.log" as *u8)
29 if fd < 0 { return 0 }
30 var n: i64 = 0
31 var r: i64 = sys_read(fd, buf, K_MAGIC_262143)
32 while r > 0 { n = n + r; r = sys_read(fd, buf + n, K_MAGIC_262143 - n) }
33 sys_close(fd)
34 let pat: *u8 = "rows_closed=" as *u8
35 var i: i64 = 0
36 while i < n {
37 // line start: count TOKENSPEND
38 if buf[i] == (84 as u8) {
39 var at_start: i64 = 0
40 if i == 0 { at_start = 1 }
41 if i > 0 { if buf[i-1] == (10 as u8) { at_start = 1 } }
42 if at_start == 1 { visits[0] = visits[0] + 1 }
43 }
44 // rows_closed= value
45 var hit: i64 = 1
46 var k: i64 = 0
47 while k < 12 {
48 if i + k >= n { hit = 0; k = 12 } else {
49 if buf[i + k] != pat[k] { hit = 0; k = 12 } else { k = k + 1 }
50 }
51 }
52 if hit == 1 {
53 var v: i64 = 0
54 var q: i64 = i + 12
55 var go: i64 = 1
56 while go == 1 {
57 if q >= n { go = 0 } else {
58 if buf[q] >= (48 as u8) {
59 if buf[q] <= (57 as u8) { v = v * 10 + ((buf[q] as i64) - 48); q = q + 1 } else { go = 0 }
60 } else { go = 0 }
61 }
62 }
63 closed[0] = closed[0] + v
64 }
65 i = i + 1
66 }
67 return 0
68}
69
70func main() -> i64 {
71 let cx: *i64 = an_newcx()
72 let rows: i64 = an_load("knowledge/registry/assignment_queue.tsv" as *u8, cx)
73 if rows <= 0 { tm_w(1, "TOKENMETER verdict=RED reason=queue-missing\n" as *u8); sys_exit(2) }
74 let st: *i64 = cx[4] as *i64
75 var done: i64 = 0
76 var todo: i64 = 0
77 var novel: i64 = 0
78 var wip: i64 = 0
79 var gen: i64 = 0
80 var r: i64 = 0
81 while r < rows {
82 if st[r] == 68 { done = done + 1 }
83 if st[r] == 84 { todo = todo + 1 }
84 if st[r] == 78 { novel = novel + 1 }
85 if st[r] == 87 { wip = wip + 1 }
86 if st[r] == 71 { gen = gen + 1 }
87 r = r + 1
88 }
89 let visits: *i64 = sys_mmap(16) as *i64
90 let closed: *i64 = sys_mmap(16) as *i64
91 tm_spend(visits, closed)
92 var cpv10: i64 = 0
93 if visits[0] > 0 { cpv10 = (closed[0] * 10) / visits[0] }
94 let lfd: i64 = sys_openat_append("knowledge/status/token_efficiency.log" as *u8, 0x1a4)
95 var p: i64 = 0
96 while p < 2 {
97 var fd: i64 = 1
98 if p == 1 { fd = lfd }
99 if fd >= 0 {
100 tm_w(fd, "TOKENMETER epoch=" as *u8); tm_wn(fd, sys_now_realtime_sec())
101 tm_w(fd, " done=" as *u8); tm_wn(fd, done)
102 tm_w(fd, " todo=" as *u8); tm_wn(fd, todo)
103 tm_w(fd, " novel=" as *u8); tm_wn(fd, novel)
104 tm_w(fd, " wip=" as *u8); tm_wn(fd, wip)
105 tm_w(fd, " gen=" as *u8); tm_wn(fd, gen)
106 tm_w(fd, " visits=" as *u8); tm_wn(fd, visits[0])
107 tm_w(fd, " closed_per_visit_x10=" as *u8); tm_wn(fd, cpv10)
108 tm_w(fd, "\n" as *u8)
109 }
110 p = p + 1
111 }
112 if lfd >= 0 { sys_close(lfd) }
113 sys_exit(0)
114 return 0
115}