nx_dr_chain_cli.nx source
↩ module page · 161 lines · 7857 B
1// nx_dr_chain_cli.nx -- ONE CALL runs the whole sovereign deep-research loop (DR-CHAIN).
2// judge (tokenize+containment of every source vs the shared groundtruth insight set)
3// -> conduct (verify-yield -> Elo tournament -> opportunity-cost budget dispatch)
4// -> score (insight-recall of what was actually selected, vs what was achievable)
5// nx_dr_chain <threshold_permil> <budget> <n_insights> <insight_1..n> <cost_1> <doc_1> ...
6// e.g. nx_dr_chain 600 3 3 "alpha one" "beta two" "gamma three" \
7// 2 "alpha one beta two" 3 "gamma three extra words here" 1 "alpha one"
8// -> {"recall_all_permil":1000,"recall_selected_permil":666,"budget_cost_permil":334,...}
9// The recall_all vs recall_selected delta is the MEASURED COST of the opportunity-cost
10// constraint -- the number no single-agent research tool reports.
11// license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0
12import "nx_dr_chain.nx"
13import "nx_itoa_lib.nx" // shared MSB-first emitter (zero-alloc)
14import "nx_dr_run.nx"
15import "nx_dr_conductor.nx"
16import "nx_dr_drbench.nx"
17import "nx_syscalls.nx"
18const K_MAGIC_8192: i64 = 8192
19const K_MAGIC_1024: i64 = 1024
20const K_MAGIC_65536: i64 = 65536
21
22func ch_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
23func ch_q() -> i64 { let b: *u8 = sys_mmap(1); b[0] = 34 as u8; sys_write(1, b, 1); return 0 }
24func ch_key(name: *u8) -> i64 { ch_q(); ch_puts(name); ch_q(); ch_puts(":" as *u8); return 0 }
25// MIGRATED to the shared emitter (debt 1785563586). The old body mmapped a scratch buffer
26// per call and never freed it. At PAGE granularity that is 4096B leaked PER CALL -- the
27// defect that took 28.5GB of a 36GB host in nx_ts_lumadiff (2MB input, ~3.66M calls).
28// nxi_* is MSB-first, allocates NOTHING, and emits identical bytes including the sign.
29func ch_num(v: i64) -> i64 { nxi_out(v); return 0 }
30func ch_atoi(a: *u8) -> i64 {
31 var v: i64 = 0; var i: i64 = 0
32 while a[i] != (0 as u8) {
33 let c: i64 = a[i] as i64
34 if c >= 48 { if c <= 57 { v = v * 10 + (c - 48) } }
35 i = i + 1
36 }
37 return v
38}
39
40func main(argc: i64, argv: *i64) -> i64 {
41 if argc < 7 { ch_puts("{" as *u8); ch_key("error" as *u8); ch_q(); ch_puts("usage: nx_dr_chain <threshold> <budget> <n_insights> <insight..> <cost doc>.." as *u8); ch_q(); ch_puts("}\n" as *u8); sys_exit(2); return 2 }
42 let threshold: i64 = ch_atoi(argv[1] as *u8)
43 let budget: i64 = ch_atoi(argv[2] as *u8)
44 let ni: i64 = ch_atoi(argv[3] as *u8)
45 if ni < 1 { ch_puts("{" as *u8); ch_key("error" as *u8); ch_q(); ch_puts("n_insights must be >= 1" as *u8); ch_q(); ch_puts("}\n" as *u8); sys_exit(1); return 1 }
46 let base: i64 = 4 + ni
47 let ndocs: i64 = (argc - base) / 2
48 if ndocs < 1 { ch_puts("{" as *u8); ch_key("error" as *u8); ch_q(); ch_puts("need >=1 <cost doc> pair" as *u8); ch_q(); ch_puts("}\n" as *u8); sys_exit(1); return 1 }
49
50 // ---- pack the shared groundtruth insight set
51 let ins_pack: *i64 = sys_mmap((1 + 2 * ni + K_MAGIC_8192) * 8) as *i64
52 ins_pack[0] = ni
53 let ins_tok: *i64 = ((ins_pack as i64) + (1 + 2 * ni) * 8) as *i64
54 var off: i64 = 0
55 var i: i64 = 0
56 while i < ni {
57 let s: *u8 = argv[4 + i] as *u8
58 let dst: *i64 = ((ins_tok as i64) + off * 8) as *i64
59 let ln: i64 = drr_tokenize(s, drr_strlen(s), dst, K_MAGIC_1024)
60 ins_pack[1 + i] = off
61 ins_pack[1 + ni + i] = ln
62 off = off + ln
63 i = i + 1
64 }
65
66 // ---- pack the source documents + their costs
67 let doc_pack: *i64 = sys_mmap((1 + ndocs + K_MAGIC_65536) * 8) as *i64
68 doc_pack[0] = ndocs
69 let doc_tok: *i64 = ((doc_pack as i64) + (1 + ndocs) * 8) as *i64
70 let cost: *i64 = sys_mmap(ndocs * 8) as *i64
71 var doff: i64 = 0
72 var d: i64 = 0
73 while d < ndocs {
74 cost[d] = ch_atoi(argv[base + d * 2] as *u8)
75 let ds: *u8 = argv[base + d * 2 + 1] as *u8
76 let dst: *i64 = ((doc_tok as i64) + doff * 8) as *i64
77 let dl: i64 = drr_tokenize(ds, drr_strlen(ds), dst, K_MAGIC_8192)
78 doc_pack[1 + d] = dl
79 doff = doff + dl
80 d = d + 1
81 }
82
83 // ---- STAGE 1 judge
84 let sup: *i64 = sys_mmap(ndocs * 8) as *i64
85 let cov: *i64 = sys_mmap(ndocs * ni * 8) as *i64
86 chain_judge_all(ins_pack, doc_pack, threshold, sup, cov)
87
88 // achievable recall (every source read)
89 let allsel: *i64 = sys_mmap(ndocs * 8) as *i64
90 var a: i64 = 0
91 while a < ndocs { allsel[a] = 1; a = a + 1 }
92 let allcov: *i64 = sys_mmap(ni * 8) as *i64
93 chain_sel_cov(cov, allsel, ndocs, ni, allcov)
94 let recall_all: i64 = dr_frac(allcov, ni)
95
96 // ---- STAGE 2 conduct
97 let total: *i64 = sys_mmap(ndocs * 8) as *i64
98 var t2: i64 = 0
99 while t2 < ndocs { total[t2] = ni; t2 = t2 + 1 }
100 let out: *i64 = sys_mmap((5 * ndocs + 1) * 8) as *i64
101 let cnt: i64 = cond_run(sup, total, cost, ndocs, budget, out)
102 let ql: *i64 = out
103 let rt: *i64 = ((out as i64) + ndocs * 8) as *i64
104 let pri: *i64 = ((out as i64) + ndocs * 16) as *i64
105 let ord: *i64 = ((out as i64) + ndocs * 24) as *i64
106 let sel: *i64 = ((out as i64) + ndocs * 32) as *i64
107 let spent: i64 = out[5 * ndocs]
108
109 // ---- STAGE 3 score what was selected
110 let selcov: *i64 = sys_mmap(ni * 8) as *i64
111 chain_sel_cov(cov, sel, ndocs, ni, selcov)
112 let recall_sel: i64 = dr_frac(selcov, ni)
113 var retained: i64 = 1000
114 if recall_all > 0 { retained = (recall_sel * 1000) / recall_all }
115
116 ch_puts("{" as *u8)
117 ch_key("tool" as *u8); ch_q(); ch_puts("nx_dr_chain" as *u8); ch_q(); ch_puts("," as *u8)
118 ch_key("n_insights" as *u8); ch_num(ni); ch_puts("," as *u8)
119 ch_key("n_sources" as *u8); ch_num(ndocs); ch_puts("," as *u8)
120 ch_key("threshold_permil" as *u8); ch_num(threshold); ch_puts("," as *u8)
121 ch_key("budget" as *u8); ch_num(budget); ch_puts("," as *u8)
122 ch_key("selected" as *u8); ch_num(cnt); ch_puts("," as *u8)
123 ch_key("spent" as *u8); ch_num(spent); ch_puts("," as *u8)
124 ch_key("recall_all_permil" as *u8); ch_num(recall_all); ch_puts("," as *u8)
125 ch_key("recall_selected_permil" as *u8); ch_num(recall_sel); ch_puts("," as *u8)
126 ch_key("budget_cost_permil" as *u8); ch_num(recall_all - recall_sel); ch_puts("," as *u8)
127 ch_key("recall_retained_permil" as *u8); ch_num(retained); ch_puts("," as *u8)
128 ch_key("sources" as *u8); ch_puts("[" as *u8)
129 var r: i64 = 0
130 while r < ndocs {
131 if r > 0 { ch_puts("," as *u8) }
132 let id: i64 = ord[r]
133 ch_puts("{" as *u8)
134 ch_key("rank" as *u8); ch_num(r + 1); ch_puts("," as *u8)
135 ch_key("id" as *u8); ch_num(id); ch_puts("," as *u8)
136 ch_key("supported" as *u8); ch_num(sup[id]); ch_puts("," as *u8)
137 ch_key("quality_permil" as *u8); ch_num(ql[id]); ch_puts("," as *u8)
138 ch_key("elo" as *u8); ch_num(rt[id]); ch_puts("," as *u8)
139 ch_key("priority" as *u8); ch_num(pri[id]); ch_puts("," as *u8)
140 ch_key("cost" as *u8); ch_num(cost[id]); ch_puts("," as *u8)
141 ch_key("selected" as *u8); ch_num(sel[id])
142 ch_puts("}" as *u8)
143 r = r + 1
144 }
145 ch_puts("]," as *u8)
146 ch_key("insights" as *u8); ch_puts("[" as *u8)
147 var k2: i64 = 0
148 while k2 < ni {
149 if k2 > 0 { ch_puts("," as *u8) }
150 ch_puts("{" as *u8)
151 ch_key("idx" as *u8); ch_num(k2); ch_puts("," as *u8)
152 ch_key("achievable" as *u8); ch_num(allcov[k2]); ch_puts("," as *u8)
153 ch_key("obtained" as *u8); ch_num(selcov[k2])
154 ch_puts("}" as *u8)
155 k2 = k2 + 1
156 }
157 ch_puts("]," as *u8)
158 ch_key("note" as *u8); ch_q(); ch_puts("one-call loop: judge(lexical containment)->conduct(Elo+opp-cost budget)->score; budget_cost = achievable minus obtained recall; sovereign integer" as *u8); ch_q()
159 ch_puts("}\n" as *u8)
160 sys_exit(0); return 0
161}