code wiki / _hdl_build / nx_eff_scan.nx

nx_eff_scan.nx source

↩ module page · 278 lines · 12473 B

1// nx_eff_scan.nx -- THE efficiency-telemetry scanner CLI (eff lane F731, 2026-07-18). 2// Thin CLI over nx_eff_lib (the shared measurement+conversion core -- DRY, rule 15). Emits MEASURED 3// per-day spend rows (time via worklog gaps, tokens via transcript needles) + money/energy via the 4// lib's DECLARED coefficients, with the estimator method + rates printed in the ENV envelope so a 5// human sees exactly what produced every number (operator: "non-fake numbers ... real estimates"). 6// nx_eff_scan -> fast usage banner + exit 0 (build-time run is instant) 7// nx_eff_scan selftest -> fixture gate (exact counts + neg-controls, gv verdict) 8// nx_eff_scan scan [worklog] [trdir] [window] -> real scan (defaults; win clamped 1..28) 9// Row: ROW d<day> <day> <actions> <mcp> <shell> <fileops> <active_sec> <tok_in> <tok_out> <tok_cr> <tok_cw> <trfiles> 10// license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0 11import "nx_eff_lib.nx" 12import "nx_gate_verdict.nx" 13 14const ES_WL_DEF: *u8 = "/mnt/c/Users/elder/.claude/projects/C--Users-elder/memory/worklog/worklog.tsv" 15const ES_TR_DEF: *u8 = "/mnt/c/Users/elder/.claude/projects/C--Users-elder" 16 17func es_emit(dayw: *i64, nowday: i64, win: i64, env: *i64, modacc: *i64) -> i64 { 18 gv_puts("EFF-SCAN v1\n" as *u8) 19 gv_puts("ENV window_days=" as *u8) 20 gv_num(win) 21 gv_puts(" nowday=" as *u8) 22 gv_num(nowday) 23 gv_puts(" wl_rows=" as *u8) 24 gv_num(env[ES_E_WLR]) 25 gv_puts(" wl_bytes=" as *u8) 26 gv_num(env[ES_E_WLB]) 27 gv_puts(" tr_files=" as *u8) 28 gv_num(env[ES_E_TRF]) 29 gv_puts(" tr_trunc=" as *u8) 30 gv_num(env[ES_E_TRUNC]) 31 gv_puts(" tr_bytes=" as *u8) 32 gv_num(env[ES_E_TRB]) 33 gv_puts(" active_estimator=gap300-strict token_method=needle-sum per_file_cap=33554432 price_cents_per_Mtok_in=1500 wh_per_Mtok=400\n" as *u8) 34 var idx: i64 = win - 1 35 var ta: i64 = 0 36 var ti_: i64 = 0 37 var to_: i64 = 0 38 var tcr: i64 = 0 39 var tcw: i64 = 0 40 var tsec: i64 = 0 41 while idx >= 0 { 42 let base: i64 = idx * ES_NF 43 let any: i64 = dayw[base] + dayw[base+9] 44 if any > 0 { 45 gv_puts("ROW d" as *u8) 46 gv_num(nowday - idx) 47 gv_puts(" " as *u8) 48 gv_num(nowday - idx) 49 var f: i64 = 0 50 while f < ES_NF { 51 gv_puts(" " as *u8) 52 gv_num(dayw[base + f]) 53 f = f + 1 54 } 55 gv_puts("\n" as *u8) 56 ta = ta + dayw[base] 57 tsec = tsec + dayw[base+4] 58 ti_ = ti_ + dayw[base+5] 59 to_ = to_ + dayw[base+6] 60 tcr = tcr + dayw[base+7] 61 tcw = tcw + dayw[base+8] 62 } 63 idx = idx - 1 64 } 65 let cost: i64 = efl_cost_cents(ti_, to_, tcr, tcw) 66 let wh: i64 = efl_energy_wh(ti_, to_, tcr, tcw) 67 gv_puts("TOT actions=" as *u8) 68 gv_num(ta) 69 gv_puts(" active_hours=" as *u8) 70 gv_num(tsec / 3600) 71 gv_puts(" tok_in=" as *u8) 72 gv_num(ti_) 73 gv_puts(" tok_out=" as *u8) 74 gv_num(to_) 75 gv_puts(" tok_cache_read=" as *u8) 76 gv_num(tcr) 77 gv_puts(" tok_cache_write=" as *u8) 78 gv_num(tcw) 79 gv_puts(" cost_cents=" as *u8) 80 gv_num(cost) 81 gv_puts(" energy_wh=" as *u8) 82 gv_num(wh) 83 gv_puts(" (money+energy = ESTIMATE via declared rates above)\n" as *u8) 84 var realcost: i64 = 0 85 var t: i64 = 0 86 while t < EFL_NTIER { 87 let mb: i64 = t * 4 88 let tc: i64 = efl_cost_tier(t, modacc[mb], modacc[mb+1], modacc[mb+2], modacc[mb+3]) 89 realcost = realcost + tc 90 gv_puts("MODEL m" as *u8) 91 gv_num(t) 92 gv_puts(" " as *u8) 93 gv_num(modacc[mb]) 94 gv_puts(" " as *u8) 95 gv_num(modacc[mb+1]) 96 gv_puts(" " as *u8) 97 gv_num(modacc[mb+2]) 98 gv_puts(" " as *u8) 99 gv_num(modacc[mb+3]) 100 gv_puts(" cost_cents=" as *u8) 101 gv_num(tc) 102 gv_puts("\n" as *u8) 103 t = t + 1 104 } 105 gv_puts("REALCOST cents=" as *u8) 106 gv_num(realcost) 107 gv_puts(" vs flat_ceiling=" as *u8) 108 gv_num(cost) 109 gv_puts(" (per-model attributed; m0=fable m1=opus m2=sonnet m3=haiku m4=other)\n" as *u8) 110 return 0 111} 112// fixture helpers (selftest only) 113func es_put_file(path: *u8, b: *u8, n: i64) -> i64 { 114 let fd: i64 = sys_openat_wr(path, 420) 115 if fd < 0 { return 0 - 1 } 116 sys_write(fd, b, n) 117 sys_close(fd) 118 return 0 119} 120func es_cat(d: *u8, o: i64, s: *u8) -> i64 { var i: i64 = 0; var oo: i64 = o; while s[i] != (0 as u8) { d[oo] = s[i]; oo = oo + 1; i = i + 1 } return oo } 121func es_catn(d: *u8, o: i64, v: i64) -> i64 { 122 let t: *u8 = sys_mmap(28) 123 var m: i64 = v 124 var k: i64 = 0 125 if m == 0 { t[0] = ES_ZERO as u8; k = 1 } 126 while m > 0 { t[k] = (ES_ZERO + (m % 10)) as u8; m = m / 10; k = k + 1 } 127 var oo: i64 = o 128 var i: i64 = 0 129 while i < k { d[oo] = t[k-1-i]; oo = oo + 1; i = i + 1 } 130 return oo 131} 132func es_selftest() -> i64 { 133 let ctr: *i64 = gv_ctr() 134 gv_head("nx_eff_scan selftest -- fixture worklog + transcript, exact counts + neg-controls" as *u8) 135 let now: i64 = sys_now_realtime_sec() 136 let base_e: i64 = (now / ES_DAYSEC) * ES_DAYSEC + 1000 137 let wb: *u8 = sys_mmap(4096) 138 var o: i64 = 0 139 o = es_catn(wb, o, base_e) 140 o = es_cat(wb, o, "\tingest\tmcp__nishi__nx_health\tx\n" as *u8) 141 o = es_catn(wb, o, base_e + 100) 142 o = es_cat(wb, o, "\tingest\tPowerShell\twsl something\n" as *u8) 143 o = es_catn(wb, o, base_e + 900) 144 o = es_cat(wb, o, "\tingest\tRead\tsome/file.md\n" as *u8) 145 o = es_cat(wb, o, "#garbage line with no epoch\n" as *u8) 146 es_put_file("/tmp/eff_gate_wl.tsv" as *u8, wb, o) 147 sys_mkdir("/tmp/eff_gate_tr" as *u8, 511) 148 let tb: *u8 = sys_mmap(4096) 149 var o2: i64 = 0 150 o2 = es_cat(tb, o2, "{\x22usage\x22:{\x22input_tokens\x22:100,\x22cache_read_input_tokens\x22:7,\x22cache_creation_input_tokens\x22:3,\x22output_tokens\x22:25}}\n" as *u8) 151 o2 = es_cat(tb, o2, "{\x22reinput_tokens\x22:999,\x22xoutput_tokens\x22:888}\n" as *u8) 152 es_put_file("/tmp/eff_gate_tr/fix.jsonl" as *u8, tb, o2) 153 let env: *i64 = sys_mmap(ES_ENV_SLOTS * 8) as *i64 154 let wlb: *u8 = sys_mmap(ES_CAP_WL) 155 let wn: i64 = es_read_bounded("/tmp/eff_gate_wl.tsv" as *u8, wlb, ES_CAP_WL, env) 156 env[ES_E_WLB] = wn 157 let maxe: i64 = es_wl_maxepoch(wlb, wn) 158 let nowday: i64 = maxe / ES_DAYSEC 159 let dayw: *i64 = sys_mmap(ES_WIN_MAX * ES_NF * 8) as *i64 160 es_wl_scan(wlb, wn, dayw, nowday, ES_WIN_DEF, env) 161 let tbuf: *u8 = sys_mmap(ES_CAP_TR) 162 let modacc: *i64 = sys_mmap(EFL_NTIER * 4 * 8) as *i64 163 es_tr_scan("/tmp/eff_gate_tr" as *u8, tbuf, dayw, nowday, ES_WIN_DEF, env, modacc) 164 var c1: i64 = 0 165 if dayw[0] == 3 { c1 = 1 } 166 gv_check("T1 actions==3" as *u8, c1, ctr) 167 var c2: i64 = 0 168 if dayw[1] == 1 { c2 = 1 } 169 gv_check("T2 mcp==1" as *u8, c2, ctr) 170 var c3: i64 = 0 171 if dayw[2] == 1 { c3 = 1 } 172 gv_check("T3 shell==1" as *u8, c3, ctr) 173 var c4: i64 = 0 174 if dayw[3] == 1 { c4 = 1 } 175 gv_check("T4 fileops==1" as *u8, c4, ctr) 176 var c5: i64 = 0 177 if dayw[4] == 100 { c5 = 1 } 178 gv_check("T5 active_sec==100 (800s gap excluded by gap300-strict)" as *u8, c5, ctr) 179 var c6: i64 = 0 180 if dayw[5] == 100 { c6 = 1 } 181 gv_check("T6 tok_in==100 (decoy reinput_tokens NOT counted)" as *u8, c6, ctr) 182 var c7: i64 = 0 183 if dayw[6] == 25 { c7 = 1 } 184 gv_check("T7 tok_out==25 (decoy xoutput_tokens NOT counted)" as *u8, c7, ctr) 185 var c8: i64 = 0 186 if dayw[7] == 7 { c8 = 1 } 187 gv_check("T8 cache_read==7 (not double-counted into tok_in)" as *u8, c8, ctr) 188 var c9: i64 = 0 189 if dayw[8] == 3 { c9 = 1 } 190 gv_check("T9 cache_write==3" as *u8, c9, ctr) 191 var c10: i64 = 0 192 if env[ES_E_WLR] == 3 { c10 = 1 } 193 gv_check("T10 NEG garbage line ignored (wl_rows==3)" as *u8, c10, ctr) 194 let bad: i64 = es_read_bounded("/tmp/eff_gate_nonexistent_xyz" as *u8, wlb, 4096, env) 195 var c11: i64 = 0 196 if bad < 0 { c11 = 1 } 197 gv_check("T11 NEG unreadable path -> -1 fail-closed" as *u8, c11, ctr) 198 var c12: i64 = 0 199 if dayw[9] == 1 { c12 = 1 } 200 gv_check("T12 transcript file counted once" as *u8, c12, ctr) 201 // T13 conversions: cost = (100*100 + 25*500 + 7*10 + 3*125)*1500/1e8 = (10000+12500+70+375)*1500/1e8 202 // = 22945*1500/1e8 = 34417500/1e8 = 0 cents (sub-cent at fixture scale) -> proves integer floor honest 203 let cost: i64 = efl_cost_cents(100, 25, 7, 3) 204 var c13: i64 = 0 205 if cost == 0 { c13 = 1 } 206 gv_check("T13 cost integer-floor at fixture scale (22945bp -> 0 cents, no fake rounding)" as *u8, c13, ctr) 207 // T14 conversion scale check: 1M input tok -> 1500 cents ($15.00) exactly 208 let cost2: i64 = efl_cost_cents(1000000, 0, 0, 0) 209 var c14: i64 = 0 210 if cost2 == 1500 { c14 = 1 } 211 gv_check("T14 cost 1M-input==1500c ($15.00/Mtok input, declared rate)" as *u8, c14, ctr) 212 // T15-T19 per-model attribution: fixture no-model usage -> OTHER; a direct model-fixture buckets fable+sonnet 213 var c15: i64 = 0 214 if modacc[EFL_T_OTHER*4] == 100 { c15 = 1 } 215 gv_check("T15 no-model usage -> OTHER tier (in==100)" as *u8, c15, ctr) 216 let mfix: *u8 = sys_mmap(4096) 217 var mo: i64 = 0 218 mo = es_cat(mfix, mo, "{\x22model\x22:\x22claude-fable-5\x22,\x22usage\x22:{\x22input_tokens\x22:1000000}}\n" as *u8) 219 mo = es_cat(mfix, mo, "{\x22model\x22:\x22claude-sonnet-5\x22,\x22usage\x22:{\x22input_tokens\x22:2000000}}\n" as *u8) 220 let modacc2: *i64 = sys_mmap(EFL_NTIER * 4 * 8) as *i64 221 es_tr_tokens_bymodel(mfix, mo, modacc2) 222 var c16: i64 = 0 223 if modacc2[EFL_T_FABLE*4] == 1000000 { c16 = 1 } 224 gv_check("T16 fable line -> FABLE tier (in==1M)" as *u8, c16, ctr) 225 var c17: i64 = 0 226 if modacc2[EFL_T_SONNET*4] == 2000000 { c17 = 1 } 227 gv_check("T17 sonnet line -> SONNET tier (in==2M)" as *u8, c17, ctr) 228 var c18: i64 = 0 229 if efl_cost_tier(EFL_T_FABLE, 1000000, 0, 0, 0) == 1000 { c18 = 1 } 230 gv_check("T18 fable 1M-input cost==1000c ($10/Mtok fetched rate)" as *u8, c18, ctr) 231 var c19: i64 = 0 232 if efl_cost_tier(EFL_T_SONNET, 2000000, 0, 0, 0) == 600 { c19 = 1 } 233 gv_check("T19 sonnet 2M-input cost==600c ($3/Mtok)" as *u8, c19, ctr) 234 let db2: *u8 = sys_mmap(1024) 235 let dn2: i64 = es_cat(db2, 0, "{\x22message\x22:{\x22usage\x22:{\x22input_tokens\x22:50}},\x22usage\x22:{\x22input_tokens\x22:50}}\n" as *u8) 236 let dw2: *i64 = sys_mmap(ES_WIN_MAX * ES_NF * 8) as *i64 237 es_tr_tokens(db2, dn2, dw2, 0) 238 var c20: i64 = 0 239 if dw2[5] == 50 { c20 = 1 } 240 gv_check("T20 double-usage line counted ONCE (dedup fixes the 2x double-count)" as *u8, c20, ctr) 241 let rc: i64 = gv_verdict("EFF-SCAN-GATE" as *u8, ctr, "counts + neg-controls + conversion KAT + per-model attribution + dedup" as *u8) 242 return rc 243} 244func main(argc: i64, argv: *i64) -> i64 { 245 if argc < 2 { 246 gv_puts("nx_eff_scan v1 -- efficiency telemetry scanner (eff lane F731)\n" as *u8) 247 gv_puts(" selftest fixture gate (exact counts + neg-controls)\n" as *u8) 248 gv_puts(" scan [worklog] [trdir] [window] real measured spend rows (time/tokens/money/energy)\n" as *u8) 249 sys_exit(0) 250 return 0 251 } 252 let a1: *u8 = argv[1] as *u8 253 if es_eq(a1, "selftest" as *u8) == 1 { let rc: i64 = es_selftest(); sys_exit(rc); return rc } 254 if es_eq(a1, "scan" as *u8) == 0 { gv_puts("unknown verb (use: selftest | scan)\n" as *u8); sys_exit(2); return 2 } 255 var wl: *u8 = ES_WL_DEF 256 var tr: *u8 = ES_TR_DEF 257 var win: i64 = ES_WIN_DEF 258 if argc >= 3 { wl = argv[2] as *u8 } 259 if argc >= 4 { tr = argv[3] as *u8 } 260 if argc >= 5 { win = es_atoi(argv[4] as *u8) } 261 if win < 1 { win = 1 } 262 if win > ES_WIN_MAX { win = ES_WIN_MAX } 263 let env: *i64 = sys_mmap(ES_ENV_SLOTS * 8) as *i64 264 let wlb: *u8 = sys_mmap(ES_CAP_WL) 265 let wn: i64 = es_read_bounded(wl, wlb, ES_CAP_WL, env) 266 if wn < 0 { gv_puts("ERR worklog unreadable\n" as *u8); sys_exit(1); return 1 } 267 env[ES_E_WLB] = wn 268 let maxe: i64 = es_wl_maxepoch(wlb, wn) 269 if maxe <= 0 { gv_puts("ERR worklog has no epoch rows\n" as *u8); sys_exit(1); return 1 } 270 let nowday: i64 = maxe / ES_DAYSEC 271 let dayw: *i64 = sys_mmap(ES_WIN_MAX * ES_NF * 8) as *i64 272 es_wl_scan(wlb, wn, dayw, nowday, win, env) 273 let tbuf: *u8 = sys_mmap(ES_CAP_TR) 274 let modacc: *i64 = sys_mmap(EFL_NTIER * 4 * 8) as *i64 275 es_tr_scan(tr, tbuf, dayw, nowday, win, env, modacc) 276 es_emit(dayw, nowday, win, env, modacc) 277 return 0 278}