code wiki / _hdl_build / nx_delivery_report.nx
nx_delivery_report.nx source
↩ module page · 143 lines · 6788 B
1// nx_delivery_report.nx -- the HUMAN perspective on the wire (operator 2026-06-12):
2// the machine cares about the current beat; the human cares about WHEN IT DELIVERS,
3// the GROWTH RATE, the SUCCESS RATE. This organ derives the management view from
4// the ledgers' TIMESTAMPED HISTORY (never a feeling, always a slope):
5// - done velocity: done_rows across AUTMETER history -> rows/day (whole-window)
6// - autonomy growth: permil first->last -> permil/day toward the C/B/A/S bars
7// - beat success rate: PULSE-VERDICT ok/steps share across team_pulse history
8// - backlog + naive-linear ETA: latest todo / done-velocity (LABELED naive-linear:
9// assumes constant velocity and no new rows -- both false, which is WHY the
10// novel-growth line sits next to it)
11// - raised-hands growth: novel count first->last (the answer-consumption pressure)
12// Durable: DELIVERY block -> knowledge/channel/team_out.tsv (the human reads the
13// same wire) + DELIVERY row -> knowledge/status/delivery_report.log (the Examiner
14// grades presence). Exit 0 = reported; exit 1 = unreadable world.
15// argv[1]=meter-log argv[2]=pulse-log argv[3]=team-out argv[4]=report-log (gates: scratch)
16// license_tier: ORIGINAL
17import "nx_syscalls.nx"
18const K_MAGIC_86400: i64 = 86400
19const K_MAGIC_1048576: i64 = 1048576
20const K_MAGIC_1048560: i64 = 1048560
21const K_MAGIC_3600: i64 = 3600
22func _p(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
23func _fp(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 }
24func _fn(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 as u8;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 }
25func dr_len(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
26func dr_read(path: *u8, buf: *u8, cap: i64) -> i64 {
27 let fd: i64 = sys_openat_rd(path)
28 if fd < 0 { return 0 }
29 var n: i64 = 0
30 var go: i64 = 1
31 while go == 1 { let base: i64 = buf as i64; let r: i64 = sys_read(fd, (base + n) as *u8, cap - n); if r <= 0 { go = 0 } else { n = n + r } if n >= cap { go = 0 } }
32 sys_close(fd)
33 return n
34}
35// parse the integer right after pat within [a,b); -1 if absent
36func dr_num_after(buf: *u8, a: i64, b: i64, pat: *u8) -> i64 {
37 let pl: i64 = dr_len(pat)
38 var i: i64 = a
39 while i + pl <= b {
40 var k: i64 = 0
41 var hit: i64 = 1
42 while k < pl { if buf[i+k] != pat[k] { hit = 0; k = pl } else { k = k + 1 } }
43 if hit == 1 {
44 var j: i64 = i + pl
45 var v: i64 = 0
46 var any: i64 = 0
47 var dg: i64 = 1
48 while dg == 1 {
49 if j >= b { dg = 0 }
50 else { if buf[j] < (48 as u8) { dg = 0 } else { if buf[j] > (57 as u8) { dg = 0 } else { v = v * 10 + ((buf[j] as i64) - 48); j = j + 1; any = 1 } } }
51 }
52 if any == 1 { return v }
53 return 0 - 1
54 }
55 i = i + 1
56 }
57 return 0 - 1
58}
59// scan a log: FIRST and LAST line holding anchor -> (epoch,val) pairs via field pat
60func dr_first_last(buf: *u8, n: i64, anchor: *u8, fld: *u8, out: *i64) -> i64 {
61 var found: i64 = 0
62 var i: i64 = 0
63 while i < n {
64 var le: i64 = i
65 var s: i64 = 1
66 while s == 1 { if le >= n { s = 0 } else { if buf[le] == (10 as u8) { s = 0 } else { le = le + 1 } } }
67 let ep: i64 = dr_num_after(buf, i, le, anchor)
68 if ep >= 0 {
69 let v: i64 = dr_num_after(buf, i, le, fld)
70 if v >= 0 {
71 if found == 0 { out[0] = ep; out[1] = v; found = 1 }
72 out[2] = ep
73 out[3] = v
74 }
75 }
76 i = le + 1
77 }
78 return found
79}
80func dr_rate_day(out: *i64) -> i64 {
81 let dt: i64 = out[2] - out[0]
82 if dt <= 0 { return 0 }
83 return ((out[3] - out[1]) * K_MAGIC_86400) / dt
84}
85func main(argc: i64, argv: *i64) -> i64 {
86 var mlp: *u8 = "knowledge/status/autonomy_meter.log" as *u8
87 var plp: *u8 = "knowledge/status/team_pulse.log" as *u8
88 var top: *u8 = "knowledge/channel/team_out.tsv" as *u8
89 var rlp: *u8 = "knowledge/status/delivery_report.log" as *u8
90 if argc >= 2 { mlp = argv[1] as *u8 }
91 if argc >= 3 { plp = argv[2] as *u8 }
92 if argc >= 4 { top = argv[3] as *u8 }
93 if argc >= 5 { rlp = argv[4] as *u8 }
94 _p("=== DELIVERY REPORT: the human view -- velocity, growth, success, naive ETA ===\n" as *u8)
95 let mb: *u8 = sys_mmap(K_MAGIC_1048576)
96 let mn: i64 = dr_read(mlp, mb, K_MAGIC_1048560)
97 if mn <= 0 { _p(" meter history MISSING -- fail loud\n" as *u8); sys_exit(1); return 1 }
98 let fl: *i64 = sys_mmap(64) as *i64
99 // done velocity + autonomy growth from AUTMETER history
100 if dr_first_last(mb, mn, "AUTMETER epoch=" as *u8, " done_rows=" as *u8, fl) == 0 { _p(" no AUTMETER rows -- fail loud\n" as *u8); sys_exit(1); return 1 }
101 let done_first: i64 = fl[1]
102 let done_last: i64 = fl[3]
103 let done_rate: i64 = dr_rate_day(fl)
104 let span_h: i64 = (fl[2] - fl[0]) / K_MAGIC_3600
105 dr_first_last(mb, mn, "AUTMETER epoch=" as *u8, " permil=" as *u8, fl)
106 let pm_first: i64 = fl[1]
107 let pm_last: i64 = fl[3]
108 let pm_rate: i64 = dr_rate_day(fl)
109 // beat success share from pulse history
110 let pb: *u8 = sys_mmap(K_MAGIC_1048576)
111 let pn: i64 = dr_read(plp, pb, K_MAGIC_1048560)
112 var ok_sum: i64 = 0
113 var st_sum: i64 = 0
114 var i: i64 = 0
115 while i < pn {
116 var le: i64 = i
117 var s: i64 = 1
118 while s == 1 { if le >= pn { s = 0 } else { if pb[le] == (10 as u8) { s = 0 } else { le = le + 1 } } }
119 let stv: i64 = dr_num_after(pb, i, le, "PULSE-VERDICT steps=" as *u8)
120 if stv > 0 {
121 let okv: i64 = dr_num_after(pb, i, le, " ok=" as *u8)
122 if okv >= 0 { st_sum = st_sum + stv; ok_sum = ok_sum + okv }
123 }
124 i = le + 1
125 }
126 var beat_permil: i64 = 0
127 if st_sum > 0 { beat_permil = (ok_sum * 1000) / st_sum }
128 // backlog + hands from team_out SITREP queue lines (epoch carried by SITREP line)
129 let tb: *u8 = sys_mmap(K_MAGIC_1048576)
130 let tn: i64 = dr_read(top, tb, K_MAGIC_1048560)
131 var last_ep: i64 = 0
132 var q_ep0: i64 = 0
133 var q_td0: i64 = 0 - 1
134 var q_nv0: i64 = 0
135 var q_ep1: i64 = 0
136 var q_td1: i64 = 0
137 var q_nv1: i64 = 0
138 i = 0
139 while i < tn {
140 var le2: i64 = i
141 var s2: i64 = 1
142 while s2 == 1 { if le2 >= tn { s2 = 0 } else { if tb[le2] == (10 as u8) { s2 = 0 } else { le2 = le2 + 1 } } }
143 let se: i64 = dr_num_after(tb, i, le2, "SITREP epoch=" as *u8)
144 if se >= 0 { last_