code wiki / (root) / nx_llm_route_gate.nx

nx_llm_route_gate.nx source

↩ module page · 90 lines · 5841 B

1// nx_llm_route_gate.nx -- the REFEREE for companionchat CC6 (go_llm_route in nx_llm_route.nx): a route row selects a backend 2// by trigger, first row wins, case-insensitive, `*` is a default; no conf / no match / malformed target = NO ROUTE; the 3// prepend puts the routed backend first without losing the local candidates; the provenance label names what answered. 4// GPU-free, in-process, fixture confs under /tmp/<gate>/ written at run time (never a checked-in fixture). 5// license_tier: ORIGINAL expect_exit: 0 6import "nx_syscalls.nx" 7import "nx_gate_verdict.nx" 8import "nx_llm_route.nx" 9 10const LG_DIR: *u8 = "/tmp/nx_llm_route_gate" as *u8 11const LG_CONF: *u8 = "/tmp/nx_llm_route_gate/routes.conf" as *u8 12const LG_CONF_DEFAULT: *u8 = "/tmp/nx_llm_route_gate/routes_default.conf" as *u8 13const LG_CONF_BAD: *u8 = "/tmp/nx_llm_route_gate/routes_bad.conf" as *u8 14const LG_CONF_ABSENT: *u8 = "/tmp/nx_llm_route_gate/does_not_exist.conf" as *u8 15const LG_MODE_DIR: i64 = 511 16const LG_MODE_FILE: i64 = 420 17const LG_ROWS: *u8 = "# fixture routes\ndeep|think hard|10.9.8.7|5000\nfast|quick|10.9.8.6|5001\n" as *u8 18const LG_ROWS_DEFAULT: *u8 = "every|*|10.9.8.5|5002\n" as *u8 19const LG_ROWS_BAD: *u8 = "broken|think hard|10.9.8.999|5000\n" as *u8 20 21func lg_len(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } 22func lg_eq(a: *u8, b: *u8) -> i64 { var i: i64 = 0; while a[i] == b[i] { if a[i] == (0 as u8) { return 1 } i = i + 1 } return 0 } 23func lg_write(path: *u8, body: *u8) -> i64 { 24 let fd: i64 = sys_openat_wr(path, LG_MODE_FILE) 25 if fd < 0 { return 0 - 1 } 26 sys_write(fd, body, lg_len(body)) 27 sys_close(fd) 28 return 0 29} 30 31func main() -> i64 { 32 gv_head("nx_llm_route_gate -- CC6: a data row routes a turn to a stronger backend first, never silently, never on a guess" as *u8) 33 let ctr: *i64 = gv_ctr() 34 sys_mkdir(LG_DIR, LG_MODE_DIR) 35 sys_unlinkat(LG_CONF_ABSENT) 36 let w1: i64 = lg_write(LG_CONF, LG_ROWS) 37 let w2: i64 = lg_write(LG_CONF_DEFAULT, LG_ROWS_DEFAULT) 38 let w3: i64 = lg_write(LG_CONF_BAD, LG_ROWS_BAD) 39 gv_check("setup-fixture-confs-written" as *u8, (w1 == 0) & (w2 == 0) & (w3 == 0), ctr) 40 41 let tag: *u8 = sys_mmap(64) 42 let w: *i64 = sys_mmap(8 * 8) as *i64 43 44 // T1 the trigger selects its row and the target parses 45 let m1: *u8 = "could you think hard about this one" as *u8 46 let r1: i64 = go_llm_route_from(LG_CONF, m1, lg_len(m1), tag, w) 47 gv_check("trigger-word-routes-to-its-row" as *u8, (r1 == 1) & (lg_eq(tag, "deep" as *u8) == 1), ctr) 48 gv_check("routed-target-parses-host-and-port" as *u8, (w[0] == 10) & (w[1] == 9) & (w[2] == 8) & (w[3] == 7) & (w[4] == 5000), ctr) 49 50 // T2 case-insensitive, and first row wins when two triggers are present 51 let m2: *u8 = "THINK HARD but be quick" as *u8 52 let r2: i64 = go_llm_route_from(LG_CONF, m2, lg_len(m2), tag, w) 53 gv_check("match-is-case-insensitive" as *u8, (r2 == 1) & (lg_eq(tag, "deep" as *u8) == 1), ctr) 54 let m2b: *u8 = "just a quick one" as *u8 55 let r2b: i64 = go_llm_route_from(LG_CONF, m2b, lg_len(m2b), tag, w) 56 gv_check("second-row-reachable-when-first-does-not-match" as *u8, (r2b == 1) & (lg_eq(tag, "fast" as *u8) == 1) & (w[4] == 5001), ctr) 57 58 // T3 NEG-CONTROLS: no trigger in the turn, no conf at all, malformed target -- all NO ROUTE 59 let m3: *u8 = "hello there" as *u8 60 gv_check("neg-control-no-trigger-means-no-route" as *u8, go_llm_route_from(LG_CONF, m3, lg_len(m3), tag, w) == 0, ctr) 61 gv_check("neg-control-absent-conf-means-no-route" as *u8, go_llm_route_from(LG_CONF_ABSENT, m1, lg_len(m1), tag, w) == 0, ctr) 62 gv_check("neg-control-malformed-target-means-no-route-not-a-guess" as *u8, go_llm_route_from(LG_CONF_BAD, m1, lg_len(m1), tag, w) == 0, ctr) 63 gv_check("neg-control-empty-turn-means-no-route" as *u8, go_llm_route_from(LG_CONF, m1, 0, tag, w) == 0, ctr) 64 65 // T4 the star row is a default route for every turn 66 let r4: i64 = go_llm_route_from(LG_CONF_DEFAULT, m3, lg_len(m3), tag, w) 67 gv_check("star-trigger-routes-every-turn" as *u8, (r4 == 1) & (lg_eq(tag, "every" as *u8) == 1) & (w[4] == 5002), ctr) 68 69 // T5 prepend puts the route first and keeps the locals behind it, in order 70 let wa: *i64 = sys_mmap(8 * 8) as *i64; let wb: *i64 = sys_mmap(8 * 8) as *i64; let wc: *i64 = sys_mmap(8 * 8) as *i64 71 let wd: *i64 = sys_mmap(8 * 8) as *i64; let wpa: *i64 = sys_mmap(8 * 8) as *i64 72 wa[0] = 192; wb[0] = 168; wc[0] = 8; wd[0] = 192; wpa[0] = 7861 73 let rw: *i64 = sys_mmap(8 * 8) as *i64 74 rw[0] = 10; rw[1] = 9; rw[2] = 8; rw[3] = 7; rw[4] = 5000 75 let nc: i64 = go_llm_route_prepend(rw, wa, wb, wc, wd, wpa, 1) 76 gv_check("prepend-puts-the-route-first-and-keeps-the-local-behind" as *u8, (nc == 2) & (wpa[0] == 5000) & (wpa[1] == 7861) & (wd[1] == 192), ctr) 77 78 // T6 provenance labels name what answered 79 let lb: *u8 = sys_mmap(128) 80 var o: i64 = go_llm_route_label(0, 0, "deep" as *u8, lb, 0); lb[o] = 0 as u8 81 gv_check("label-local-when-nothing-routed" as *u8, lg_eq(lb, "local" as *u8) == 1, ctr) 82 o = go_llm_route_label(1, 0, "deep" as *u8, lb, 0); lb[o] = 0 as u8 83 gv_check("label-names-the-route-when-it-answered" as *u8, lg_eq(lb, "deep" as *u8) == 1, ctr) 84 o = go_llm_route_label(1, 1, "deep" as *u8, lb, 0); lb[o] = 0 as u8 85 gv_check("label-names-the-fallback-when-the-local-answered" as *u8, lg_eq(lb, "deep-fallback-local" as *u8) == 1, ctr) 86 o = go_llm_route_label(1, 0 - 1, "deep" as *u8, lb, 0); lb[o] = 0 as u8 87 gv_check("label-names-unanswered-when-nobody-did" as *u8, lg_eq(lb, "deep-unanswered" as *u8) == 1, ctr) 88 89 return gv_verdict("LLM-ROUTE-GATE" as *u8, ctr, "CC6 done-rule: route table as data, first match wins, no conf or malformed row refuses to route, route first then local, provenance labels every answer" as *u8) 90}